本文共 1009 字,大约阅读时间需要 3 分钟。
import waveinfiles = ["sound_1.wav", "sound_2.wav"]outfile = "sounds.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.close()
这两种可以去查看 jupyter notebook文件 0817_join_wav
wave 模块提供了一个处理 WAV 声音格式的便利接口。它不支持压缩/解压,但是支持单声道/立体声。
用法:wave.open(file, mode=None)
,
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,但有一定数学门槛,需要了解信号处理原理,掌握傅立叶变换等基本算法。
具体的使用方法总结这里不再赘述,可以查看:
参考:
转载地址:http://ludd.baihongyu.com/