我试图写一个基本的程序,随机挑选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/