Один из основных сценариев использования голосового ассистента - использование микрофонов и динамиков устройства, на
котором запущен ассистент для ведения диалога с пользователем. Здесь и далее такой сценарий будет называться работой с
локальным (local) вводом/выводом, в противовес работе с
удалёнными (remote) устройствами - через HTTP API или, например, через мессенджеры. Работу с локальным вводом/выводом
осуществляет плагин face_local
.
Локальный ввод-вывод может работать одновременно с различными удалёнными методами работы. Например, можно установить сервер ассистента на компьютер в одной комнате, подключить по HTTP более слабое устройство (на момент написания этого документа, клиентское приложение для запуска просто на устройстве, не через браузер, пока не реализовано) в соседней комнате и одновременно запустить на сервере Telegram-бота.
Локальный ввод-вывод может работать при запуске сервера ассистента через 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 движок в сочетании со средствами
получения данных с микрофона) и один или несколько методов вывода (как правило, их минимум два - один для вывода готовых
звуковых файлов, наподобие сигнала таймера и один для вывода речи ассистента).
Используется по-умолчанию.
Прослушивает микрофон при помощи библиотеки sounddevice (обёртки для portaudio) и распознаёт голосовые команды при помощи vosk.
Параметры устанавливаются в конфигурации плагина local_input_sounddevice_vosk
.
Пример настройки в конфигурации face_local
:
input:
type: vosk+sounddevice
Используется по-умолчанию.
Выводит звук с использованием библиотеки sounddevice (обёртки для portaudio).
Параметры устанавливаются в конфигурации плагина local_output_sounddevice
. В случае, если Вы сталкиваетесь с
проблемами при окончании воспроизведения звуков или фраз ассистента (небольшое зависание после воспроизведения или
наоборот, пропуск конца фразы), то обратите внимание на настройки этого плагина.
Пример настройки в конфигурации face_local
:
outputs:
- type: sounddevice
Используется по-умолчанию.
Добавляется плагином plugin_local_output_tts
. Глобальных настроек не имеет.
Этот метод вывода использует голосовые профили, настраиваемые через конфигурацию плагина voice_profiles
.
Параметр profile_selector
позволяет выбрать определённые голоса из множества голосов, определённых в
настройках voice_profiles
:
outputs:
- type: tts
profile_selector:
# Разрешает использование только женских голосов
gender.female: true
Изменения настроек (через веб-интерфейс или редактирование файлов настроек) профилей, используемых методом вывода tts, в
конфигурации плагина voice_profiles
будут применяться немедленно.
Однако, при добавлении, удалении, включении и выключении профилей требуется перезапуск.