【问题标题】:How to generate wav with G.711alaw from a mp3 file using pydub library?如何使用 pydub 库从 mp3 文件中生成带有 G.711alaw 的 wav?
【发布时间】:2013-11-30 13:19:33
【问题描述】:

我正在尝试使用 Pydub 库从 mp3 文件中生成带有 G. 711 alaw 压缩扩展的 wav 文件。 wav 文件正在生成,但未重新采样到频率 8 kHz。我试过以下代码:

from_path = '/home/nikhil/Music/m1.mp3' #this is a mp3 file
to_path = '/home/nikhil/Music/m1.wav' #resulted file
from_format = 'mp3'
to_format = 'wav'
params = ["-acodec", "pcm_alaw", "-ar", "8000"]
AudioSegment.from_file(from_path, from_format).export(to_path, format=to_format, parameters=params)

有人可以帮我吗?

【问题讨论】:

    标签: python audio audio-streaming pydub


    【解决方案1】:

    查看导出方法中的代码,发现输出格式为“wav”时不使用ffmpeg

    由于内部使用 wav,它只是将音频的内存版本直接写入磁盘(这样做是为了使 ffmpeg 成为可选依赖项,如果您只需要 wav 支持,则不需要安装它)。

    我有 2 个想法可以让您解决这个问题:

    1. 使用不同的格式 kwarg,例如“pcm”。我不确定这是否可行,而且我目前的机器上没有 ffmpeg 可供测试,但绝对值得一试。

      from_path = '/home/nikhil/Music/m1.mp3' #this is a mp3 file
      to_path = '/home/nikhil/Music/m1.wav' #resulted file
      from_format = 'mp3'
      to_format = 'pcm'
      params = ["-acodec", "pcm_alaw", "-ar", "8000"]
      AudioSegment.from_file(from_path, from_format).export(to_path, format=to_format, parameters=params)
      
    2. 使用 pydub 的内部机制重新采样到 8kHz:同样,我目前无法正确测试...

      from_path = '/home/nikhil/Music/m1.mp3' #this is a mp3 file
      to_path = '/home/nikhil/Music/m1.wav' #resulted file
      
      seg = AudioSegment.from_mp3(from_path)
      seg = seg.set_frame_rate(8000)
      seg.export(to_path, format="wav")
      

    【讨论】:

    • 第二个工作正常..bt 对于第一个当我尝试大胆打开转换后的文件时,它说它的文件无效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    • 2018-01-04
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多