Как можно написать Python-скрипт, который будет распознавать речь и реагировать только при упоминании определенного слова?

Как можно обновить данную программу на Python, чтобы она принимала голосовые команды, но реагировала только на те, которые начинаются с определенного ключевого слова?
  • 18 апреля 2024 г. 11:30
Ответы на вопрос 3
Для начала, чтобы распознавать речь можно воспользоваться библиотекой speech_recognition, а для обработки текста - модулем re для работы с регулярными выражениями. 

Пример кода для распознавания упоминания определенного слова:

```python
import speech_recognition as sr
import re

r = sr.Recognizer()

def recognize_speech():
    with sr.Microphone() as source:
        print("Говорите:")
        audio = r.listen(source)
        
    try:
        text = r.recognize_google(audio, language='ru-RU')
        print("Вы сказали:", text)
        return text
    except sr.UnknownValueError:
        print("Извините, не удалось распознать речь")
        return None

def main():
    while True:
        text = recognize_speech()
        if text:
            if re.search(r'\bключевое_слово\b', text, re.IGNORECASE):
                print("Определенное слово было упомянуто!")
                # здесь можно добавить вашу логику обработки
    
if __name__ == "__main__":
    main()
```

Для того, чтобы программа принимала голосовые команды и реагировала только на те, которые начинаются с определенного ключевого слова, можно модифицировать код следующим образом:

```python
def main():
    while True:
        text = recognize_speech()
        if text:
            if re.search(r'\bключевое_слово\b', text, re.IGNORECASE):
                commands = re.findall(r'\bключевое_слово\b\s*(.*)', text, re.IGNORECASE)
                if commands:
                    print("Ключевое слово и команда:", commands[0])
                    # здесь можно добавить вашу логику обработки команды
```

Теперь программа будет распознавать ключевое слово сразу после начала команды и реагировать только на такие голосовые команды.
Всё достаточно легко и просто. Для начала тебе необходимо создать переменную с своим ключевым словом , условно говоря : 

keyword = "Проснись и Пой"

Поздравляю! Теперь тебе осталось лишь сделать проверку на это .

if target_word in query.split():
        tts = gtts.gTTS(query, lang="ru")
        tts.save("response.mp3")
        AudioPlayer("response.mp3").play(block=True)
        os.remove("response.mp3")


И вот уже основа для твоего 'Джарвиса' готова.
Проверяй, содержит ли/начинается ли распознанный текст на определённое слово. 
Как - гуглится, это основы работы со строками в питоне. См. метод startswith() и оператор in. Заодно глянь методы перевода строки в другой регистр типа lower() - может помочь убрать чувствительность к регистру.
Для начала должно хватить.
Похожие вопросы