我的目标是对从排列中获取的十个音频文件进行不同的求和,以便每个排列具有不同的音频文件(总共10个!= 3 628 800个最终音频)并将它们导出为wav文件。
示例(声音1 +声音3 +声音2+声音4 +声音8 +声音6 +声音5 +声音7 +声音10 +声音9 =第一音频等)
我该怎么做?。我尝试过,但是总和有些麻烦。
这是我到目前为止所做的
from pydub import AudioSegment
import itertools
sound1 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/1_R.wav")
sound2 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/2_R.wav")
sound3 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/3_R.wav")
sound4 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/4_R.wav")
sound5 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/5_R.wav")
sound6 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/6_R.wav")
sound7 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/7_R.wav")
sound8 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/8_R.wav")
sound9 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/9_R.wav")
sound10 = AudioSegment.from_wav("/Users/Desktop/Countingpuppet/Music/10_R.wav")
lis = (sound1,sound2,sound3,sound4,sound5,sound6,sound7,sound8,sound9,sound10)
list(itertools.permutations(lis))
dc = []
for i in range(1, len(lis) + 1):
#sum(list(itertools.permutations(lis, i)))
sum(lis(i))
#dc += lis(i)
#combined_sounds = sound1 + sound2
#combined_sounds.export("/output/path.wav", format="wav")
让myPerm
为整数{0,...,9}
的排列,您可能希望这样做:
sum([lis(i) for i in myPerm])
但是,如果sum是可交换的(即a+b == b+a
),则您可能并不真正想要您想要实现的目标。
编辑:
阅读完您的编辑后,我想您想做类似的事情
t = ("ba","a","c")
["".join(i) for i in itertools.permutations(t)]
对于音频文件。
[通过查看此答案:https://stackoverflow.com/a/30204581/512225我推断您必须将"".join(i)
替换为sum(i, AudioSegment.empty())
。我希望这能解决您的问题。 (我没有在自己的机器上尝试过)