SpeechRecognizerPy/listener.py

50 lines
2.0 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from vosk import Model, KaldiRecognizer, SetLogLevel
import pyaudio
import os # Для проверки наличия папки языковой модели
import json
kaldi = None # Распознавание речи
audio_stream = None # Звуковой поток с микрофона
def init_listener():
"""Инициализация слушателя для распознования речи"""
global kaldi # Распознавание речи
global audio_stream # Звуковой поток с микрофона
model_dir = "model-ru" # Директория с языковой моделью
if not os.path.exists(model_dir):
print ("Модель можно скачать по адресу https://alphacephei.com/vosk/models")
exit(1) # Если модель не найдена - завершаем работу
SetLogLevel(-1) # Отключение отладки в консоль
model = Model(model_dir) # Загружаем языковую модель
kaldi = KaldiRecognizer(model, 16000) # Разпознование речи
# Звук с микрофона
p = pyaudio.PyAudio()
audio_stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)
audio_stream.start_stream()
def recognize():
"""Слушает микрофон и распознает речь. Возвращает строку распознанных слов"""
while True:
# Запись фреймов(4000)
data = audio_stream.read(4000)
# Если ничего не считалось - завершаем цикл
if len(data) == 0:
break
# Распознание записанного звука
if kaldi.AcceptWaveform(data):
text = json.loads(kaldi.Result())["text"].lower()
# print(text) # Отладочная печать
if len(text) > 0:
return text