Skip to content
Прототип виртуального дворецкого на базе Yandex SpeechKit
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
README.md
YSK_Tutorial.md
audio_guest.ogg
bell_door.wav
dialogue.py
open_door.wav
requariments.txt

README.md

  1. Настройка CLI YandexSpeechKit
  2. Диалог
  3. Установка

Butler – это виртуальный дворецкий, который открывает дверь гостю, если имя есть в списке приглашенных. Для распознавания ответа гостя и синтеза речи дворецкого используются технологии Yandex SpeechKit (YSK).

Настройка CLI YandexSpeechKit

Батлер будет работать, если вы уже установили 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. При каждом запросе токен будет проверяться на работоспособность и генерироваться, если срок его жизни истек.

You can’t perform that action at this time.