异常:无法处理波形



错误:

Traceback (most recent call last):
File "c:ProgrammingNew_assistantspeech_to_text.py", line 18, in <module>
if rec.AcceptWaveform(data):
File "C:UsersdavidAppDataLocalProgramsPythonPython310libsite-packagesvosk__init__.py", line 84, in AcceptWaveform
raise Exception("Failed to process waveform")
Exception: Failed to process waveform
PS C:ProgrammingNew_assistant> 

当我尝试使用AcceptWaveform时,无论是文件(wav)还是代码的其余部分,都会出现这个错误,但只有在使用vosk-moodel-small-ru-0.22时,错误才会被删除,并且在vosk-model-ru-0.22上不会出现错误,但处理时间太长。

代码:

from vosk import Model, KaldiRecognizer
import json
import wave
model = Model(r"Filevosk-model-small-ru-0.22")
wf = wave.open(r"Filerecord1.wav", "rb")
rec = KaldiRecognizer(model, 8000)
result = ''
last_n = False
while True:
data = wf.readframes(8000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
res = json.loads(rec.Result())
if res['text'] != '':
result += f" {res['text']}"
last_n = False
elif not last_n:
result += 'n'
last_n = True
res = json.loads(rec.FinalResult())
result += f" {res['text']}"
print(result)

使用poke方法,我找到了一个解决方案,并得到了关于错误发生的假设,所以如果我错了,或者你有一个更完整的解决方案,添加它,我会标记它。

如果您使用vosk复制样本代码,那么很可能这是带有模块vosk-moodel-ru-0.22的版本,它适用于采样率8000,但vosk-model-small-ru-0.22适用于44100,所以只需将8000更改为44100(取决于条目)

最新更新