pythonvoice-recognitionwave

Exception: Failed to process waveform


Error:

Traceback (most recent call last):
  File "c:\Programming\New_assistant\speech_to_text.py", line 18, in <module>
    if rec.AcceptWaveform(data):
  File "C:\Users\david\AppData\Local\Programs\Python\Python310\lib\site-packages\vosk\__init__.py", line 84, in AcceptWaveform
    raise Exception("Failed to process waveform")
Exception: Failed to process waveform
PS C:\Programming\New_assistant> 

I get this error when I try to use AcceptWaveform regardless of the file (wav) or the rest of the code, but the error is removed only when using vosk-model-small-ru-0.22, and does not give errors on vosk-model-ru-0.22, but the processing time is too long.

Code:

from vosk import Model, KaldiRecognizer
import json
import wave

model = Model(r"File\vosk-model-small-ru-0.22")

wf = wave.open(r"File\record1.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)

Solution

  • Using the poke method, I found a solution and got an assumption about the error occurring, so if I'm wrong or you have a more complete solution, add it and I'll mark it.

    If you copied the sample code using vosk, then most likely this is the version with the module vosk-model-ru-0.22 which works with the sampling rate 8000,but vosk-model-small-ru-0.22 works with 44100, so just change 8000 to 44100 (depending on the entry)