我试图写一个基本的程序,随机挑选2个音频文件,分层,并写出来作为一个新的文件我用的是pydub,一切正常,但结果是失真的我怀疑是因为据我所知,pydub不能处理24位wav,而这恰好是样本包中的标准。
所以在wav进入pydub之前需要一些小的代码将其转换为16位。希望不需要先把它写到光盘上。

from pydub import AudioSegment
import os
import random
import shutil


def process(user_folder):

new_library_folder = user_folder + " Generated Combo Samples"
files_list = []
for root, directory, files in os.walk(user_folder):
    for file in files:
        if file_is_valid_ext(file):
            filepath = str(root) + "/" + str(file)
            # print filepath
            files_list.append(filepath)

# removes previously created folder
shutil.rmtree(new_library_folder)
os.makedirs(new_library_folder)

i = 0
for number in range(gen_count): # global at 100
    i = i + 1

    file1 = random.choice(files_list)
    file2 = random.choice(files_list)

    sound1 = AudioSegment.from_file(file1)
    sound2 = AudioSegment.from_file(file2)
    sound1 = match_target_amplitude(sound1, -20)
    sound2 = match_target_amplitude(sound2, -20)

    combinedsound = sound1.overlay(sound2)
    combinedsoundnormalised = match_target_amplitude(combinedsound, -6)

    combinedsound_path = new_library_folder + "/" + "Sample " + str(i) + ".wav"

    combinedsoundnormalised.export(combinedsound_path, format='wav')

最佳答案

你发这个问题已经几个月了,但我会为其他需要解决这个问题的人解答的。据我所知,PySoundFile是唯一一个可以处理24位音频的python包(我确信还有其他包,但我还没有找到它们)我的建议是首先使用PySoundFile读取音频,然后使用该数据创建一个pydub.AudioSegment

关于python - 使用pydub处理24bit WAV,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48847933/

10-11 15:46