Skip to content

Latest commit

 

History

History
103 lines (72 loc) · 7.1 KB

local-face.md

File metadata and controls

103 lines (72 loc) · 7.1 KB

Настройка локального ввода-вывода

Один из основных сценариев использования голосового ассистента - использование микрофонов и динамиков устройства, на котором запущен ассистент для ведения диалога с пользователем. Здесь и далее такой сценарий будет называться работой с локальным (local) вводом/выводом, в противовес работе с удалёнными (remote) устройствами - через HTTP API или, например, через мессенджеры. Работу с локальным вводом/выводом осуществляет плагин face_local.

Локальный ввод-вывод может работать одновременно с различными удалёнными методами работы. Например, можно установить сервер ассистента на компьютер в одной комнате, подключить по HTTP более слабое устройство (на момент написания этого документа, клиентское приложение для запуска просто на устройстве, не через браузер, пока не реализовано) в соседней комнате и одновременно запустить на сервере Telegram-бота.

Docker

Локальный ввод-вывод может работать при запуске сервера ассистента через Docker-контейнер. Для этого нужно дать контейнеру доступ к звуковой системе машины, на которой он выполняется. На некоторых версиях Linux для этого достаточно добавить следующие опции при запуске контейнера:

  • Дать контейнеру доступ к звуковым устройствам: --device /dev/snd:/dev/snd
  • Добавить пользователя, от имени которого выполняется процесс в контейнере, в группу audio, чтобы у него были права на работу с этими устройствами: --group-add audio

В результате команда может выглядеть примерно так:

docker run -it --publish 8086:8086 -v "$HOME/irene:/irene" \
  --device /dev/snd:/dev/snd --group-add audio \
  alexeybond/irene:latest

Если в Вашем случае этого оказалось не достаточно и Вам удалось найти решение, не стесняйтесь дополнить документацию, открыв pull request с нужными дополнениями или issue с описанием того, как можно улучшить документацию.

Конфигурация

Конфигурация плагина face_local позволяет изменять то, какие методы используются ассистентом для ввода команд и вывода ответов. Конфигурация, поставляемая по-умолчанию, должна работать корректно в большинстве случаев, однако её может потребоваться как для исправления неполадок в тех случаях, когда она всё-таки не работает, так и для удовлетворения вкусовых предпочтений пользователя, например, выбора более приятного TTS или STT движка.

Плагин face_local позволяет выбрать один метод ввода команд (как правило, STT движок в сочетании со средствами получения данных с микрофона) и один или несколько методов вывода (как правило, их минимум два - один для вывода готовых звуковых файлов, наподобие сигнала таймера и один для вывода речи ассистента).

Методы ввода

vosk+sounddevice

Используется по-умолчанию.

Прослушивает микрофон при помощи библиотеки sounddevice (обёртки для portaudio) и распознаёт голосовые команды при помощи vosk.

Параметры устанавливаются в конфигурации плагина local_input_sounddevice_vosk.

Пример настройки в конфигурации face_local:

input:
  type: vosk+sounddevice

Методы вывода

sounddevice

Используется по-умолчанию.

Выводит звук с использованием библиотеки sounddevice (обёртки для portaudio).

Параметры устанавливаются в конфигурации плагина local_output_sounddevice. В случае, если Вы сталкиваетесь с проблемами при окончании воспроизведения звуков или фраз ассистента (небольшое зависание после воспроизведения или наоборот, пропуск конца фразы), то обратите внимание на настройки этого плагина.

Пример настройки в конфигурации face_local:

outputs:
  - type: sounddevice

tts

Используется по-умолчанию.

Добавляется плагином plugin_local_output_tts. Глобальных настроек не имеет.

Этот метод вывода использует голосовые профили, настраиваемые через конфигурацию плагина voice_profiles. Параметр profile_selector позволяет выбрать определённые голоса из множества голосов, определённых в настройках voice_profiles:

outputs:
  - type: tts
    profile_selector:
      # Разрешает использование только женских голосов
      gender.female: true

Изменения настроек (через веб-интерфейс или редактирование файлов настроек) профилей, используемых методом вывода tts, в конфигурации плагина voice_profiles будут применяться немедленно. Однако, при добавлении, удалении, включении и выключении профилей требуется перезапуск.