值错误:输入信号长度=2太小,无法从44100->16000重新采样



我正在尝试读取一些音频wav文件,在添加更多音频文件之前,一切都很完美,但我遇到了错误。读取音频文件并使用以下代码将其重新采样到16KHz

def speech_file_to_array_fn(batch):
start = 0 
stop = 20 
srate = 16_000
speech_array, sampling_rate = sf.read(batch["file"], start = start * srate , stop = stop * srate)
batch["speech"] = librosa.resample(np.asarray(speech_array), sampling_rate, srate)
batch["sampling_rate"] = srate
batch["parent"] = batch["label"]
return batch

我收到这个错误:

ValueError: Input signal length=2 is too small to resample from 44100->16000

我试着在阅读后转换音频文件,但没有工作

感谢

我相信这个问题已经在librosa的GitHub上讨论过了。

我以前从未使用过这个库,但从这个评论来看,在你的情况下,你可以做以下事情:

def speech_file_to_array_fn(batch):
start = 0 
stop = 20 
srate = 16_000
speech_array, sampling_rate = sf.read(batch["file"], start = start * srate , stop = stop * srate)
speech_array = speech_array.T
batch["speech"] = librosa.resample(np.asarray(speech_array), sampling_rate, srate)
batch["sampling_rate"] = srate
batch["parent"] = batch["label"]
return batch

让我知道这是否有效,因为我没有办法测试它。

最新更新