Это форк/ремейк оригинальной Ирины от @janvarev.
Отличия от оригинальной версии:
На данный момент наиболее предпочтительным способом запуска Ирины является запуск её из официального Docker-образа, доступного на DockerHub.
Стабильная версия Ирины доступна в виде Docker-образа (для linux/amd64 и linux/arm64) и может быть запущена следующей командой:
docker run --rm -it --publish 8086:8086 --user="$(id -u):$(id -g)" -v "$HOME/irene:/irene" \
alexeybond/irene:latest
Далее можно открыть https://localhost:8086/ (или аналогичный адрес на том хосте, где был запущен контейнер) и, разрешив использование самоподписанного сертификата, использовать Ирину через веб-интерфейс.
Для работы с аудио вводом-выводом непосредственно из контейнера, контейнеру нужно предоставить права на работу с аудио устройствами. См. документацию по локальному вводу-выводу
Docker-образ использует HTTPS с самоподписанным сертификатом для облегчения использования веб-интерфейса на удалённой
машине - захват микрофона на страницах, расположенных на удалённых машинах с небезопасным подключением не работает. Если
использовать HTTPS по тем или иным причинам не нужно, или нужно использовать свой сертификат, то можно удалить или
изменить параметры ssl_certfile
и ssl_keyfile
в настройках плагина face_web_server
- через веб-интерфейс или
изменив файл config/face_web_server.yaml
в папке с настройками.
Приложение будет хранить свои настройки и другие данные в папке, смонтированной к пути /irene
(в примере выше - $HOME/irene
).
Дополнительные плагины можно класть в подпапку plugins
внутри папки смонтированной по пути /irene
(в примере выше это будет $HOME/irene/plugins
). Дополнительные зависимости для плагинов можно установить следующей
командой:
docker run -it --rm --entrypoint pip -v "$HOME/irene:/irene" --user="$(id -u):$(id -g)" alexeybond/irene:latest install -t /irene/deps <имя_зависимости>
Или если для плагина есть список зависимостей в виде файла requirements.txt
:
cat путь/к/requirements.txt | \
docker run -i --rm --entrypoint pip -v "$HOME/irene:/irene" --user="$(id -u):$(id -g)" alexeybond/irene:latest install -t /irene/deps -r /dev/stdin
Работоспособность с версиями python<3.9 не гарантирована.
Перед запуском из исходного кода следует установить зависимости следующей командой:
pip install -r requirements.txt
Эта команда установит все зависимости, какие только могут понадобиться для работы любых плагинов, доступных в этом
репозитории. Если Вы не собираетесь использовать некоторые плагины, то от установки некоторых зависимостей можно
отказаться, отредактировав файл requirements.txt
. Например, если Вы не собираетесь использовать TTS-движок Silero, то
можно отказаться от установки библиотеки torch, которая занимает много места и времени.
Для работы веб-интерфейса, нужно собрать его. Для этого понадобится node.js (версии 16.17.0 или выше) и npm. Сборка осуществляется следующими командами:
cd ./frontend
npm ci && npm run build
cd ..
После установки зависимостей, запустить приложение можно следующей командой:
python3 -m irene
По-умолчанию, приложение создаст папку irene
в домашней папке текущего пользователя и будет хранить там настройки и
другие данные. Расположение этой папки можно изменить передав переменную окружения IRENE_HOME
:
IRENE_HOME="$PWD/irene-home" python3 -m irene
Запустить приложение с консольным интерфейсом можно следующей командой:
python3 -m irene -T console
Такая форма команды запуска перепишет часть текущих настроек, так что их придётся откатить вручную.
Для просмотра дополнительных параметров командной строки можно использовать следующую команду:
python3 -m irene --help
Плагины, доступные по-умолчанию реализуют следующие команды:
См. embedded_plugins.
Поддерживается следующие TTS движки:
Дополнительные плагины можно расположить в папке plugins
папки данных Ирины (упомянутой ранее IRENE_HOME
или папки
/irene
в Docker-контейнере). Совместимость с плагинами, написанными для оригинальной Ирины не является полной.
Инструкция по написанию новых плагинов доступна здесь.
Веб-интерфейс позволяет взаимодействовать с ассистентом голосом или при помощи текстовых сообщений, а так же редактировать настройки плагинов через графический интерфейс:
Имеется возможность управлять внешним видом интерфейса и набором используемых методов ввода-вывода
(см. настройки плагина web_face_frontend
) а так же управления доступом к различным ресурсам на веб-сервере
(см. настройки плагина web_authentication
), например, для ограничения доступа к чтению/изменению настроек для случаев
когда веб-сервер доступен из публичной сети.
С Ириной можно взаимодействовать через Telegram.
Для начала работы достаточно зарегистрировать бота при помощи BotFather, указать токен в
настройках плагина face_telegram
и перезапустить приложение.
По-умолчанию, бот будет работать только с авторизованными пользователями.
Чтобы авторизовать пользователя, воспользуйтесь инструкциями к плагину
telegram_auth
.
Чтобы бот работал с любыми пользователями без авторизации, плагин telegram_auth
можно отключить.
По-умолчанию, бот будет как реагировать на текстовые команды, так и распознавать голосовые сообщения и отвечать
голосовыми сообщениями дублируя содержимое сообщения текстом.
Это поведение можно настраивать отключая/включая плагины telegram_input_audio
, telegram_output_audio
,
telegram_io_plaintext
и меняя их настройки.
В версии 0.5.0 добавлен (пока экспериментальный) способ использования устройств на контроллерах ESP32 в качестве клиентов для сервера Ирины. Подробности с.м. в README в папке подпроекта.