Python Vosk speech recognition добавление словаря

Каким образом можно добавить словарь распознавающих слов в Vosk python. Мне нужно распознавать определенный, конечный набор слов/команд, а не всю речь. Подскажите как это реализовать? Я знаю что есть документация, но я не могу ничего понять от туда. Буду благодарен если опишите весь процесс пошагово.


Ответы (1 шт):

Автор решения: SAtan
#!/usr/bin/env python3

import sys
import json
import os
import pyaudio

from vosk import Model, KaldiRecognizer

model = Model("c:\\py\\vosk-model-en-us-0.22")

# Large vocabulary free form recognition
# You can specify the possible word list
rec = KaldiRecognizer(model, 16000, '["one","two","five"]')


p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16,
                             channels=1,
                             rate=16000,
                             input=True,
                             frames_per_buffer=8000)
stream.start_stream()

output_txt_filename="text.txt"

print("Listening...")
emptyCount=0
text=""
while True:
    data = stream.read(4000)
    
    if len(data) == 0:
        break
    if rec.AcceptWaveform(data):
        print("waveform accepted")
        res = json.loads(rec.Result())      
        print("result:", res['text'])
        if  res['text']!="":
            with open(output_txt_filename, "w") as wwf: 
                    wwf.write(res['text'])
                    wwf.close()
    
res = json.loads(rec.FinalResult())
print("Listened: " + res['text'])
→ Ссылка