重新采样音频文件不会产生所需的结果



我想对32000 KHz到16000 KHz的录音进行重新采样。我已经用下面的代码做到了这一点。但是输出的音频有些混乱。

您可以在以下文件夹中找到原始音频以及输出https://drive.google.com/drive/folders/1vr-ib8zvZagH_QeE4JSUtAUpp3EG75va

你知道我做错了什么吗?

import os
import librosa 
import soundfile as sf 
folder_name = "trial_sess"
os.chdir(os.path.join("process",folder_name))
for file in os.listdir():
if file.endswith(".m4a") or file.endswith(".mp4") or file.endswith(".mp3"):
nm,ext = file.split(".")
sr = librosa.get_samplerate(file)
y, sr = librosa.load(file, sr = sr)
sf.write(os.path.join(zoom_loc,"sessions",folder_name,"output_resampled_audio" + "." + "wav"), data = y, samplerate=16000)

代码中没有执行重新采样,错误的samplerate被传递给write。如果sr参数与原始文件的参数不同,则librosa.load将按需重新采样。所以代码应该是这样的:

target_sr = 16000
y, sr = librosa.load(file, sr=target_sr)
assert sr == target_sr # check that librosa did resample
out_path = os.path.join(zoom_loc,"sessions",folder_name,"output_resampled_audio" + "." + "wav")
sf.write(out_path, data = y, samplerate=target_sr)

使用librosa加载文件时,请确保添加sr=None:

y, sr = librosa.load(file_path,sr=None)

这将告诉librosa不要在加载时重新采样。

最新更新