Skip to content

Latest commit

 

History

History
177 lines (115 loc) · 9.7 KB

INSTALL_MULTI.md

File metadata and controls

177 lines (115 loc) · 9.7 KB

Мультиинсталляция в режиме клиент-сервер

Мультиинсталляция позволяет управлять Ириной:

  • с нескольких микрофонов
  • с разных машин
  • из Телеграма

Общая логика 1 (распознавание на клиенте):

  • Клиент отвечает за распознавание речи / подачу команд
  • Сервер Ирины отвечает за выполнение команд

[клиент] Speech-To-Text (распознавание голоса) ---> [веб-сервер Ирины] runva_webapi -> plugin -> Text-To-Speech (генерация голосового ответа)

Общая логика 2 (получение звука на клиенте):

  • Клиент отвечает за чтение звука с устройства (максимально минималистично)
  • Сервер Ирины отвечает за распознавание звука и выполнение команд

[клиент] Read WAV ---> [веб-сервер Ирины] runva_webapi (websocket connection) -> plugin -> Text-To-Speech (генерация голосового ответа)

Можно сконфигурировать несколько клиентов для подачи команд; также команды можно подавать с клавиатуры или другим способом.

Важно: в базовой концепции Ирины микрофоны не отличаются. Т.е. нельзя сказать в микрофон в какой-то комнате команду в контексте этой комнаты - подобное поведение и реализацию надо продумывать самостоятельно.

Настройка

  • Вам нужно запустить сервер Ирины - запустите runva_webapi.py. Так запустится Ирина в формате веб-сервера с REST API, к которой могут обращаться разные клиенты (клиенты нужны для каждой машины, каждого микрофона и т.д.)

Потребуется дополнительно установка

pip install fastapi
pip install "uvicorn[standard]"
  • Сконфигурируйте, где находится сервер Ирины. Настройки сервера - host,port,log_level настраиваются в options/webapi.json (с версии 6.7 - в runva_webapi.json)

  • Запустите хотя бы один клиент.

Источники для клиентов:

Самый простой способ - взять уже готовый run_remoteva_vosk.py. Можно взять его скомпилированную версию https://github.com/janvarev/Remote-Irene#compiled

Клиент надо также сконфигурировать - установите адрес сервера в options.json.

Готово!

При необходимости вы можете запустить больше клиентов - все они будут обращаться к единому серверу Ирины.

Веб-клиент (распознавание звука в браузере)

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

Веб-клиент доступен по адресу: http://localhost:5003/webapi_client/ (ну, или какой у вас там IP для WebApi настроен)

Поддерживает разные режимы: none,saytxt,saywav (см. описание ниже)

Настройки webapi:

{
    "host": "localhost", # хост
    "log_level": "warning",# уровень логов сервера
    "port": 5003, # порт
    "use_ssl": true, # если да - использует сертификаты localhost.crt и localhost.key
    "v": "1.1"
}

Про SSL - добавлены самоподписанные сертификаты для localhost (нужны, чтобы запускался микрофон в клиенте) Можете поменять на свои.

Веб-клиент (распознавание звука на сервере)

Экспериментальный веб-клиент, транслирующий только микрофон на сервер доступен по адресу: http://localhost:5003/mic_client/ (С 7.1 форсированно поддерживает только saytxt,saywav см. код runva_webapi.py. Можете поменять на своё, но в коде.)

Варианты настроек

Где и как озвучивать?

Клиент может определить, как он хочет, чтобы озвучивался результат работы Ирины.

В файле options.json, отредактируйте:

ttsFormat = "saywav"

Варианты:

  • "none" (TTS реакции будут на сервере) (звук на сервере)
  • "saytxt" (сервер вернет текст, TTS будет на клиенте) (звук на клиенте)
  • "saywav" (TTS на сервере, сервер отрендерит WAV и вернет клиенту, клиент его проиграет) (звук на клиенте) наиболее универсальный для клиента

С версии 4.1 Ирины немного поменялся формат результата вызова (для saytxt), но теперь поддерживаются мультиформаты через ",".

Например: "none,saywav" - как вызовет озвучку на сервере, так и передаст WAV-файл на клиент. Можно использовать любые комбинации none,saytxt,saywav

Несколько микрофонов на одной машине

Если вы хотите использовать несколько микрофонов на одной машине, проще всего запустить несколько VOSK-клиентов.

Я запускаю уже собранные клиенты командой в BAT-файле:

run_remoteva_vosk.exe -d=1

где после -d указывается номер устройства ввода (микрофона) для распознавания.

Например, для двух микрофонов вам потребуется два BAT-файла:

run_remoteva_vosk.exe -d=1
run_remoteva_vosk.exe -d=2

Конкретный ID девайсов надо смотреть помощью команды -l или понять путем перебора.

Распознавание голоса на сервере

С версии 5.2 можно еще сильнее упростить клиент для работы на маломощных машинах, типа Raspberry.

Для этого надо запустить дополнительный сервер, который позволит распознавать данные с микрофона.

На сервере

  • Запустите runva_webapi.py. Это обычный WEBAPI Ирины
  • Запустите vosk_asr_server.py. Это VOSK-сервер, распознающий данные с микрофона (будет использовать PORT WEBAPI + 1)

На клиенте

  • Запустите run_remoteva_voskrem.py. Он требует минимального набора библиотек, и отсылает данные микрофона на vosk_asr_server, а результат на runva_webapi.

Конфигурируется аналогично run_remoteva_vosk.

Альтернативный вариант

Вы можете запустить VOSK ASR Server через докер. Так можно обойти проблемы с установкой VOSK, если у вас такие есть.

Детали: https://alphacephei.com/vosk/server

Тогда в качестве параметра надо будет указать python run_remoteva_voskrem.py -u ws://localhost:2700, чтобы распознавание шло по другому URL/порту, а не вместе с Webapi Ирины.

Телеграм-клиент

Можно запустить Телеграм-клиент для доступа к серверу Ирины через телеграм-бота. Подробнее: https://github.com/janvarev/Remote-Irene#%D1%82%D0%B5%D0%BB%D0%B5%D0%B3%D1%80%D0%B0%D0%BC-%D0%BA%D0%BB%D0%B8%D0%B5%D0%BD%D1%82

Свои клиенты

При желании вы можете написать свой клиент, это несложно.

Документация по вызовам может быть найдена в коде runva_webapi.py

Также можно посмотреть документацию fastapi - там есть веб-интерфейс для тестовых вызовов функций.

Примеры реализаций клиентов можно найти на https://github.com/janvarev/Remote-Irene