SpeechRecognizerPy/listener.py

48 lines
1.9 KiB
Python
Raw Normal View History

2022-05-21 17:06:25 +00:00
from vosk import Model, KaldiRecognizer
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) # Если модель не найдена - завершаем работу
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