Быстрое распознавание речи в python
Сейчас я делаю голосового ассистента с помощью python и SpeechRecognition но каждый раз когда я говорю команду преображение этой команды в текст длится долго (5-15 сек.) и это очень не приятно. Есть ли какой-то способ сделать процесс быстрее? Ну или предложите другую библиотеку...
Вот код распознавания.
def recognize_cmd():
r = sr.Recognizer()
m = sr.Microphone(device_index=1)
with m as source:
print("---------")
r.pause_threshold = 0.5
r.adjust_for_ambient_noise(source, duration=1)
audio = r.listen(source)
try:
cmd = r.recognize_google(audio, language='en-EN').lower()
print("[log]User - " + cmd + '\n---------')
except sr.UnknownValueError:
talk("Voice is not recognized!")
cmd = recognize_cmd()
return cmd
P.S.желательно чтобы в библиотеке была такая функция, какой является adjust_for_ambient_noise()
и, если можно предложите библиотеку которая будет работать offline
Ответы (1 шт):
Автор решения: Nikolay Shmyrev
→ Ссылка
Можно попробовать Vosk
Пример кода:
#!/usr/bin/python3
from vosk import Model, KaldiRecognizer
import os
if not os.path.exists("model-en"):
print ("Please download the model from https://github.com/alphacep/kaldi-android-demo/releases and unpack as 'model' in the current folder.")
exit (1)
import pyaudio
p = pyaudio.PyAudio()
stream = p.open(format=pyaudio.paInt16, channels=1, rate=16000, input=True, frames_per_buffer=8000)
stream.start_stream()
model = Model("model-en")
rec = KaldiRecognizer(model, 16000)
while True:
data = stream.read(2000)
if len(data) == 0:
break
if rec.AcceptWaveform(data):
print(rec.Result())
else:
print(rec.PartialResult())
print(rec.FinalResult())
Другие примеры тут.
Устанавливается c помощью
pip install vosk
под Windows
pip install https://github.com/dtreskunov/tiny-kaldi/releases/download/0.3.1.2/vosk-0.3.1.2-cp37-cp37m-win_amd64.whl