微立顶科技

新闻资讯

创新 服务 价值

  基于python3下合并多个wav音频

发布日期:2022/8/24 0:39:14      浏览量:

项目需要将多个相关的wav文件进行合并,尝试不借助工具,使用Python代码来实现。


import wave

infiles = ["chunk0.wav", "chunk2.wav", "chunk3.wav", "chunk5.wav"]
outfile = "sounds1.wav"

data= []

for infile in infiles:
    w = wave.open(infile, ’rb’)
    data.append( [w.getparams(), w.readframes(w.getnframes())] )
    w.close()

output = wave.open(outfile, ’wb’)
output.setparams(data[0][0])
output.writeframes(data[0][1])
output.writeframes(data[1][1])
output.writeframes(data[0][1])
output.close()
print("Out "+outfile)


wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声。

用法:wave.open(file, mode=None),
mode为

rb:生成 wav_read 对象
wb:生成 wav_write 对象
注意不支持同时读写。
注:关于 r、w、rb、wb
r和w是普通读和写文件(简单理解为人工编写的文件);
rb和wb是读写二进制文件(简单理解为可以操作图片等非手工编写的文件)

拓展:
wave 是Python的标准模块,Python 处理音频数据等常见模块有两个:

librosa:擅长音频信号处理,内部用 numpy 存储数据,读写文件依赖 soundfile 模块(不支持mp3)
pydub :底层基于 ffmpeg 读写文件,代码简洁,支持切割、格式转换、音量、ID3等常用功能,门槛低。(ffmpeg 是一个极其强大的开源视频处理软件)
使用建议:日常用 pydub 足够应付,更强大的信号处理则需要 librosa,但有一定数学门槛,需要了解信号处理原理,掌握傅立叶变换等基本算法。






  业务实施流程

需求调研 →

团队组建和动员 →

数据初始化 →

调试完善 →

解决方案和选型 →

硬件网络部署 →

系统部署试运行 →

系统正式上线 →

合作协议

系统开发/整合

制作文档和员工培训

售后服务

马上咨询: 如果您有业务方面的问题或者需求,欢迎您咨询!我们带来的不仅仅是技术,还有行业经验积累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     联系人:石先生/雷先生