Распознавание речи
This commit is contained in:
parent
228693eb2e
commit
2c023ffb67
47
listener.py
47
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
|
||||
|
||||
|
Loading…
Reference in New Issue