pydub append - 引擎盖下行为的澄清

Posted

技术标签:

【中文标题】pydub append - 引擎盖下行为的澄清【英文标题】:pydub append - clarification of under the hood behaviour 【发布时间】:2018-06-19 23:17:57 【问题描述】:

我一直在使用 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 中,它指出默认情况下有 100 毫秒的淡入淡出。但是,下面给出的示例表明,如果您使用 + 运算符连接样本,则它不使用交叉淡入淡出。我想知道是否有人可以澄清这一点?我已链接 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 |默认值:100AudioSegment 的整个持续时间)当指定时,方法返回 X 中的帧数 AudioSegment 的毫秒数

【问题讨论】:

【参考方案1】:

我可以确认使用 + 运算符的连接不会应用任何交叉淡入淡出(实际上是 calls the append method with crossfade=0)

做出该设计决定的原因是允许使用 sum() 和 reduce() 以及其他类似方法将一堆块重新组合在一起而不改变总持续时间(由于交叉淡入淡出重叠)

【讨论】:

以上是关于pydub append - 引擎盖下行为的澄清的主要内容,如果未能解决你的问题,请参考以下文章

React Hooks - 引擎盖下发生了啥?

Python 是不是优化了引擎盖下的字典查找?

如果找不到匹配项,replace 会做啥? (引擎盖下)

Visual Studio - 引擎盖下(NPM/Typescript)

Nuxt apollo 智能查询被调用了两次。引擎盖下会发生啥?

引擎盖下的网络浏览器的工作历史