如何在Python中将4通道立体声文件转换为单声道

4
我该如何使用Python将4通道立体声文件转换为单声道,最好使用pydub?谢谢。

请注意:四个声道不是立体声 - 立体声是两个声道(左和右)。4声道音频的术语是“四声道”。 - Johannes
2个回答

5

根据pydub文档,我认为您可以尝试类似以下的代码:

from pydub import AudioSegment 

song = AudioSegment.from_wav("example.wav") #read wav
song.export("out.wav", parameters=["-ac", "1"])             # export wav (1 channel)

据我理解文档,"parameters"的值基于ffmpeg文档(音频选项)。 因此,您可以使用来自ffmpeg的所有参数。在这里,我只将音频通道数设置为1。

1
除了@Patrice的答案外,根据github pydub仓库上的这个讨论,如果格式是wav,则导出将返回没有执行带参数的ffmpeg。您可能需要修改pydub.AudioSegment如下,以便ffmpeg实际执行并提供导出的可选参数。更改第600行。
if format == "wav":
    data = out_f
else:
    data = NamedTemporaryFile(mode="wb", delete=False)

至:

if format == "wav" and parameters is None:
        data = out_f
    else:
        data = NamedTemporaryFile(mode="wb", delete=False)

并且在第616行:

 if format == 'wav':
            return out_f

到:

 if format == 'wav' and parameters is None:
            return out_f

然后,ffmpeg 接受参数并相应处理。

我没有一个“四声道”音频样本来测试这个“理论”,如果你可以上传到你的 github 问题跟踪器,上面可以进行测试。让我知道。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接