From 2c023ffb67c637eb351ad303a2a4ea8782f2db32 Mon Sep 17 00:00:00 2001 From: "re.kovalev" Date: Sat, 21 May 2022 20:06:25 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A0=D0=B0=D1=81=D0=BF=D0=BE=D0=B7=D0=BD?= =?UTF-8?q?=D0=B0=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D1=80=D0=B5=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- listener.py | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/listener.py b/listener.py index e69de29..555c0c5 100644 --- a/listener.py +++ b/listener.py @@ -0,0 +1,47 @@ +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 + +