Помогите написать код который будет работать если я скажу: Алиса
У меня проблема, программа работает на ура, но микрофон будет включатся и выключатся с каждым разом пока я не скажу какойто вопрос
Мне нужно чтоб когда я сказал имя: "алиса", то тогда и будет включатся микрофон для прослушки вопроса и если достигнуто определенное время, то выключает микрофон
Ассистент работает оффлайн если что, потому-что не всегда есть интернет
Вот код
import random
import sys
from vosk import Model, KaldiRecognizer # оффлайн-распознавание от Vosk
import speech_recognition # распознавание пользовательской речи (Speech-To-Text)
import wave # создание и чтение аудиофайлов формата wav
import json # работа с json-файлами и json-строками
import os # работа с файлами
import subprocess
import requests
one = 'echo Алиса слушает |RHVoice-test -p anna'
subprocess.call(one, shell=True)
def assistent(*args: tuple):
with microphone:
value = ""
recognizer.adjust_for_ambient_noise(microphone, duration=1)
try:
audio = recognizer.listen(microphone, 7, 5)
with open("voices-my.wav", "wb") as file:
file.write(audio.get_wav_data())
except speech_recognition.WaitTimeoutError:
print('Повтори')
try:
audio_file = wave.open("voices-my.wav", "rb")
model = Model("images/vosk-model-small-ru-0.15")
offline = KaldiRecognizer(model, audio_file.getframerate())
data = audio_file.readframes(audio_file.getnframes())
if len(data) > 0:
if offline.AcceptWaveform(data):
value = offline.Result()
dicts = open('body.json', 'r')
opening = json.load(dicts)
if 'привет' in value:
subprocess.call('echo '+random.choice(opening['привет'])+'|RHVoice-test -p anna', shell=True)
elif 'как дела' in value:
subprocess.call('echo '+random.choice(opening['как дела'])+'|RHVoice-test -p anna', shell=True)
elif 'пока' in value:
subprocess.call('echo '+random.choice(opening['пока']) +'|RHVoice-test -p anna', shell=True)
sys.exit(1)
except:
error = 'echo не могу распознать речь| RHVoice-test -p anna'
subprocess.call(error, shell=True)
return value
if __name__ == "__main__":
recognizer = speech_recognition.Recognizer()
microphone = speech_recognition.Microphone()
while True:
voice_input = assistent()
os.remove("voices-my.wav")
print(voice_input)
Помогите пожалуйста