Python使用pydub将wav转换为8kHz 8bit uLaw编码wav的实现方法
uLaw编码wav文件实现方法
方法1:通过pydub传递ffmpeg参数
pydub的export方法提供了parameters参数,可直接传入自定义ffmpeg命令参数,不需要额外修改其他配置,对应需求的实现代码如下:
from pydub import AudioSegment # 读取源wav文件 audio = AudioSegment.from_wav(fromFile) # 导出为uLaw编码wav audio.export( toFile, format="wav", parameters=["-c:a", "pcm_mulaw", "-ar", "8000"] )
说明:parameters列表中的参数会直接追加到pydub生成的ffmpeg命令中,效果和手动执行原生ffmpeg命令完全一致。pcm_mulaw编码本身默认输出8bit位深,不需要额外指定参数,最终输出的就是8kHz采样率、8bit位深的uLaw编码wav文件。
方法2:直接调用subprocess执行ffmpeg命令
如果你不需要用到pydub的其他音频处理能力,也可以直接通过subprocess调用原生ffmpeg命令,逻辑更直观:
import subprocess subprocess.run( [ "ffmpeg", "-i", fromFile, "-c:a", "pcm_mulaw", "-ar", "8000", "-y", # 存在同名输出文件时自动覆盖,不需要交互确认 toFile ], check=True # 执行失败时抛出异常,方便排查问题 )
内容的提问来源于stack exchange,提问作者Powlow
相关产品推荐
相关产品推荐

