我一直在使用pydub将短声音文件连接成更大的声音文件。基本代码如下:
def permuPhrase(iterations, joins): # Builds a single phrase and does various permutations of it
sampleSet = entryMatcher()
sampleSet.inputVars()
sampleSet.match()
concat = 0
if len(sampleSet.results) != 0:
for x in range(iterations):
for i in range(joins):
rand = rn.randint(0, len(sampleSet.results)- 1)
choice = str(sampleSet[rand])
concat += (AudioSegment.from_wav(source+choice+affix))
numIter = str(x) # convert parent for loop to string for naming .wav files.
concat.export(newDir+numIter+affix, format="wav") # export
else:
print("No samples matched")
我的问题是这个。在API中,它指出默认情况下存在100ms淡入淡出。但是,下面给出的示例建议,如果您使用+运算符来连接样本,则不会使用交叉淡入淡出。我想知道是否有人可以澄清这一点?我链接了API,因为无法复制示例。它位于AudioSegment(...)。append()下。
AudioSegment(...)。append()
返回一个新的
AudioSegment
,它是通过附加另一个{AudioSegment
到此(即将其添加到末尾),可以选择 使用交叉淡入淡出。AudioSegment(…).append()
在以下情况下在内部使用 将AudioSegment
对象与+
运算符一起添加。默认情况下,使用100毫秒(0.1秒)淡入淡出效果来消除爆裂声 和裂纹。
from pydub import AudioSegment sound1 = AudioSegment.from_file("sound1.wav") sound2 =AudioSegment.from_file("sound2.wav") # default 100 ms crossfade combined = sound1.append(sound2) # 5000 ms crossfade combined_with_5_sec_crossfade = sound1.append(sound2, crossfade=5000) # no crossfade no_crossfade1 = sound1.append(sound2, crossfade=0) # no crossfade no_crossfade2 = sound1 + sound2
支持的关键字参数:
- 的毫秒数
crossfade
|示例:3000
|默认值:100
(整个持续时间AudioSegment
)指定后,方法以X为单位返回帧数AudioSegment
答案 0 :(得分:0)
我可以确认使用+
运算符进行的级联不会应用任何交叉淡入淡出(实际上是calls the append method with crossfade=0)
做出此设计决定的原因是允许使用sum()和reduce()以及其他类似方法将一堆块放回去而不会改变总持续时间(由于交叉淡入淡出的重叠)