在学习和测试cosyvoice和sensevoice模型时,无意发现用cosyvoice产生的a1.wav音频给sensevoice测试时,报错:
File "/root/anaconda3/envs/cosyvoice/lib/python3.8/site-packages/torchaudio/compliance/kaldi.py", line 591, in fbank
waveform, window_shift, window_size, padded_window_size = _get_waveform_and_window_properties(
File "/root/anaconda3/envs/cosyvoice/lib/python3.8/site-packages/torchaudio/compliance/kaldi.py", line 142, in _get_waveform_and_window_properties
assert 2 <= window_size <= len(waveform), "choose a window size {} that is [2, {}]".format(
AssertionError: choose a window size 400 that is [2, 160]
然后在sensevoice的webui页面里也看到错误,而没有得到转出来的文字。
一开始以为是音频时长超过30s,也确实用ffmpeg裁剪这个a1.wav 到30s内确实就可以正常转成文字了。但是我用其他的明显超过30秒的音频测试发现又没有这个问题。感觉跟奇怪。
如果需要我可以提供这个a1.wav。
根据您描述的问题,您在尝试使用cosyvoice
生成的音频文件a1.wav
,通过SenseVoice
进行语音识别时遇到了错误。错误提示指出窗口大小的选择超出了允许范围,即实际音频的长度。具体来说,错误信息显示“choose a window size 400 that is [2, 160]”,意味着预期的窗口大小应介于2到音频长度之间,但实际设定的400超出了这个范围,导致转换失败。
解决建议:
调整音频处理参数: 在调用SenseVoice
或相关音频处理函数前,确认并适当调整窗口大小(window_size
)、窗口偏移(window_shift
)等参数,确保它们与您的音频文件特性相匹配。根据音频的实际长度和预期的处理效果合理设置这些值。
检查音频文件属性: 使用音频编辑工具检查a1.wav
的详细属性,包括采样率、位深度、通道数等,确认这些属性是否符合SenseVoice
的输入要求。有时,特定的音频属性可能导致处理逻辑中的假设不成立,从而引发错误。
标准化音频预处理流程: 确保所有输入到SenseVoice
的音频都经过统一的预处理流程,比如统一采样率、单/双声道转换等,以减少因音频特性差异导致的错误。