Butler – это виртуальный дворецкий, который открывает дверь гостю, если имя есть в списке приглашенных. Для распознавания ответа гостя и синтеза речи дворецкого используются технологии Yandex SpeechKit (YSK).
Батлер будет работать, если вы уже установили CLI для работы с YSK и получили токены для отправки запросов. Подробно об этом – в туториале.
Прежде чем писать код, давайте представим, как будет выглядеть диалог Батлера с гостем. Возможно, как-то так:
# <стук в дверь>
B: “Привет, чувак! Назови мне только свои имя и фамилию”
G: <Имя>
Если имя в списке:
“Рад тебя видеть, <имя>, заходь!”
<дверь открыватеся>
Если имя не в списке:
“Рад тебя видеть, <имя>, но тебя нет в списке, сорян!”
Если ответ не распознан как текст:
# чтобы эту ситуацию не учитывать и не перегружать код исключениями,
я взяла успешный случай. Гость точно назовет себя, а Батлер – распознает
ответ. Будет здорово, если вы сами это сделаете для тренировки.
Для визуализации диалога и прослушивания можно использовать фреймворк для голосовых ассистентов Tortu. Удобно и легко, если диалог имеет множество ветвей.
Создайте готовый аудио-файл с ответом гостя. Сделать это можно через встроенный микрофон на вашем ноутбуке разными инструментами. Для macos подойдет Quick Time Player. Сконвертируйте аудио в формат ogg: audio_guest.ogg. Можно онлайн, например, тут.
Звуковые файлы bell_door и open_door добавят коду реалистичности происходящего :).
Установим необходимые зависимости:
$ pip install -r requirements.txt
Создадим файл config.py и зададим id_folder и oauth_token:
config.py
import os
def env_set():
""" Функция задает переменные окружения,
чтобы использовать их в запросах к API YSK:
oauth_token (str)
id_folder (str)
:return: True
"""
os.environ["oauth_token"] = "AgAAAAAAH..."
os.environ["id_folder"] = "b1gdt133..."
return True
Для записи и чтения iam-токена используется файл iam.txt. При каждом запросе токен будет проверяться на работоспособность и генерироваться, если срок его жизни истек.