使用pyDub生成静音

16

我发现了pyDub,看起来它正是我需要的:

http://pydub.com/

唯一的问题在于生成静默部分。pyDub能做到吗?

基本上我想要的工作流程是:

  1. 获取目录中的所有WAV文件
  2. 按照文件名顺序将它们拼接起来,每个文件之间加入1秒钟的静默
  3. 生成结果的单个MP3文件

这可行吗?我知道我可以创建一个静默的WAV文件并以这种方式完成(回忆一下spacer GIF,任何人都有印象吗?),但我更愿意通过编程方式生成静默,因为我可能想要尝试不同的静默持续时间和/或MP3比特率。

非常感谢任何回复。


1
+1 我确实有闪回空格占位符的经历。 - msw
1个回答

40

pydub序列是由pydub.AudioSegment实例组成的。 pydub快速入门文档只展示了如何从文件中创建AudioSegments。

然而,阅读源代码,甚至更容易地运行pydoc pydub.AudioSequence都可以揭示更多信息。

pydub.AudioSegment = class AudioSegment(__builtin__.object)
 |  AudioSegments are *immutable* objects representing segments of audio
 |  that can be manipulated using python code.
 …
 |  silent(cls, duration=1000) from __builtin__.type
 |      Generate a silent audio segment. 
 |      duration specified in milliseconds (default: 1000ms).

按照快速入门指南中的用法,将被称为:

from pydub import AudioSegment
second_of_silence = AudioSegment.silent() # use default
second_of_silence = AudioSegment.silent(duration=1000) # or be explicit

现在,second_of_silence 将会像示例中的 song 一样成为一个 AudioSegement。

song = AudioSegment.from_wav("never_gonna_give_you_up.wav")

而且可以进行操作、组合等,无需空白音频文件。


20
作为pydub的作者,我可以确认这应该被接受作为答案 :) - Jiaaro
2
作为刚刚了解pydub的人,我想称赞一下你API的清晰易懂。看到它让我很想去做音频合成。 - msw
1
非常感谢,msw(以及Jiaaro确认答案)! - user3643227
1
@msw 你能否将这段静音添加到现有的音频中? - YasserKhalil
@YasserKhalil 是的,只需在静音的AudioSegment和其他AudioSegment之间使用+ - undefined

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