如何对python中排列的每一行求和

问题描述 投票:0回答:1

我的目标是对从排列中获取的十个音频文件进行不同的求和,以便每个排列具有不同的音频文件(总共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")

python audio sum permutation pydub
1个回答
1
投票

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())。我希望这能解决您的问题。 (我没有在自己的机器上尝试过)

© www.soinside.com 2019 - 2024. All rights reserved.