Действия

TTS. Руководство администратора: различия между версиями

Материал из Флора AI

Нет описания правки
Нет описания правки
 
(не показаны 34 промежуточные версии 5 участников)
Строка 1: Строка 1:
===== '''Общее описание''' =====
===== '''Общее описание''' =====
Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудио файл в формате *.wav.
Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудиофайл в формате *.wav, *.ogg, *.opus, *.mp3.
====='''Термины и определения'''=====
Text-to-speech server (TTS) – сервис синтеза речи.
 
Модель (голос) – модель нейронной сети, отвечающая за синтез спектрограммы из текста. От модели зависит, каким голосом будет синтезирован текст.
 
Вокодер – модель нейронной сети, отвечающая за синтез аудиоданных из спектрограммы. '''''Модели и вокодеры поставляются в составе дистрибутива, дополнительных действий для их установки не требуется.'''''




====='''Термины и определения'''=====
Text To Speech Server (TTS)– сервис синтеза речи.
Модель - модель нейронной сети, описывает её архитектуру и конфигурацию, а также используемые алгоритмы обучения.




====='''Расчет нагрузки'''=====
====='''Расчет нагрузки'''=====
Для нормальной работы сервиса на каждый канал синтеза требуется один CPU. Оперативной памяти необходимо не менее 8Gb.
Для нормальной работы сервиса на каждый канал синтеза требуется 1 CPU >= 2.20 GHz. Оперативной памяти необходимо не менее 8 GB.
 
 
====='''Лицензия'''=====
Сервис не функционирует без действующей лицензии. Информация о лицензии хранится в файле:
 
<code>/opt/tts/license.json</code>
 
Файл лицензии должен соответствовать следующему формату:
 
<code>{"service": "tts", "expire": "2045-01-01", "licenses": , "key": ""}</code>
 
Для получения лицензии необходимо:


1. Запустить сервис <code>systemctl start tts</code> и извлечь UUID, указанный в файле <code>/opt/tts/logs/log.txt</code>


2. Передать полученный UUID руководителю проекта для оформления лицензии.


====='''Установка/обновление сервиса'''=====
 
====='''Установка/обновление TTS'''=====
[https://cloud.connect2ai.net/index.php/apps/files/?dir=/tts&fileid=4837 Дистрибутив] распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.
[https://cloud.connect2ai.net/index.php/apps/files/?dir=/tts&fileid=4837 Дистрибутив] распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.


Перед установкой непосредственно сервиса необходимо [[PVE. Установка сервисного пакета окружения|установить сервисный пакет окружения]].
Перед установкой непосредственно сервиса необходимо [[PVE. Установка сервисного пакета окружения|установить сервисный пакет окружения]].


Установка/обновление непосредственно TTS осуществляется скриптом <code>./tts-<версия>-install</code> с правами администратора.  
*Установка/обновление TTS осуществляется скриптом <code>chmod +x ./tts-<версия>-<релиз>.sh && ./tts-<версия>-<релиз>.sh -i</code> с правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор <code>./tts-<версия>-<релиз>.sh</code> без ключей.
*Загрузить последнюю версию продукта  <code>curl -s "<nowiki>https://repo.connect2ai.net/api/tts/new</nowiki>" --user '[user]:[pass]' 2>&1 | bash</code> или в интерактивном режиме <code>bash -c "$(curl -s <nowiki>https://repo.connect2ai.net/api/tts</nowiki> --user '[user]:[pass]' 2>&1)"</code>.
*Обновить TTS <code>/opt/tts/inupdate</code> в интерактивном режиме. Или запустить с ключом:
**<code>/opt/tts/inupdate -b</code> – обновить до последней beta версии;
** <code>/opt/tts/inupdate -r</code> – обновить до последней release версии;
**<code>/opt/tts/inupdate -n</code> – обновить до последней версии (неважно beta или release).
*Проверить актуальную версию продукта <code>curl -s "<nowiki>https://repo.connect2ai.net/api/tts/version</nowiki></code>.
*Посмотреть лог изменений  <code>curl -s "<nowiki>https://repo.connect2ai.net/api/tts/changelog</nowiki>" --user '[user]:[pass]'</code>.
*Полное описание всех команд API репозитория можно найти по ссылке '''https://repo.connect2ai.net/api'''. <code>[user]:[pass]</code> – это тот же логин и пароль, что и от [https://cloud.connect2ai.net '''Nextcloud'''.]
*В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
**echo -n <code>"[user]:[pass]"</code>  > /opt/tts/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей)
**echo -n <code>"<nowiki>http://example.com:3128</nowiki> [user] [password]"</code>  > /opt/tts/.proxy (это файл конфигурации proxy, необходим для обновления и загрузки моделей, при отсутствующем прямом подключении к интернету)
 
При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.


Не забудьте запустить сервис и включить в автозапуск в системе:
Не забудьте запустить сервис и включить в автозапуск в системе:
Строка 29: Строка 60:


Разрешите доступ к порту 6186 на нужном интерфейсе по протоколу tcp.
Разрешите доступ к порту 6186 на нужном интерфейсе по протоколу tcp.
====='''Конфигурирование параметров сервиса TTS'''=====
Настройка параметров сервиса tts производится в файле /opt/tts/config.json
Описание параметров приведено в таблице
{| class="wikitable"
|+
!Параметр
!По умолчанию
!Назначение
|-
|logs.path
|logs/
|Путь к папке логов.
|-
|logs.backups
|10
|Максимальное количество логфайлов.
|-
|logs.maxSize
|5242880
|Максимальный размер одного логфайла.
|-
|cluster.logfile
|logs/sync.log
|Файл логов синхронизации есть только на главном сервере кластера
|-
|cluster.statusFile
|logs/sync.status
|Статус задачи синхронизации есть только на главном сервере кластера
|-
|cluster.nodes
|[]
|Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
|}
====='''Работа в составе кластера'''=====
Для высоконагруженных систем сервис можно расположить на нескольких нодах (виртуальных машинах). В этом случае, чтобы не потерять документы и изменения, полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы.
* База файловая, в папке data.
* lsync настроен через конфиг TTS для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв-сервера.
* На всех слейвах список cluster.nodes: [] оставляем пустым.
* Векторная база на каждом сервере своя, она следит за своей папкой data и обновляет в оперативке по этой папке данные у себя.
* UPS при изменении данных работает только с мастером TTS, а при запросе данных — со всеми серверами cluster, распределяя нагрузку.
* В конфигурации UPS: в servers.tts.cluster.trainer указываем мастер-сервер, в servers.tts.cluster перечисляем все сервера кластера TTS, в том числе и мастер.
====='''Сбор данных об ошибках'''=====
Для увеличения информативности журналов можно выполнить от суперпользователя команду:
<code>sed -i 's/log-level error/log-level debug/g' /etc/systemd/system/tts.service && systemctl daemon-reload && systemctl restart tts.service</code>
При возникновении проблем в работе сервиса и недостаточной информативности журналов, можно запустить сервис вручную с привилегиями суперпользователя и выводом информации в stdout:
<code>systemctl stop tts.service && source /opt/pve/bin/activate && cd /opt/tts/ && python3 api.py && deactivate</code>
       или
<code>systemctl stop tts.service</code>
<code>source /opt/pve/bin/activate</code>
<code>cd /opt/tts/ && python3 api.py</code>
<code>deactivate</code><br>
====='''Удаление'''=====
Для удаления выполните команду: <code>/opt/tts/uninstall</code>. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели и вокодер.

Текущая версия от 09:33, 14 января 2026

Общее описание

Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудиофайл в формате *.wav, *.ogg, *.opus, *.mp3.

Термины и определения

Text-to-speech server (TTS) – сервис синтеза речи.

Модель (голос) – модель нейронной сети, отвечающая за синтез спектрограммы из текста. От модели зависит, каким голосом будет синтезирован текст.

Вокодер – модель нейронной сети, отвечающая за синтез аудиоданных из спектрограммы. Модели и вокодеры поставляются в составе дистрибутива, дополнительных действий для их установки не требуется.



Расчет нагрузки

Для нормальной работы сервиса на каждый канал синтеза требуется 1 CPU >= 2.20 GHz. Оперативной памяти необходимо не менее 8 GB.


Лицензия

Сервис не функционирует без действующей лицензии. Информация о лицензии хранится в файле:

/opt/tts/license.json

Файл лицензии должен соответствовать следующему формату:

{"service": "tts", "expire": "2045-01-01", "licenses": , "key": ""}

Для получения лицензии необходимо:

1. Запустить сервис systemctl start tts и извлечь UUID, указанный в файле /opt/tts/logs/log.txt

2. Передать полученный UUID руководителю проекта для оформления лицензии.


Установка/обновление TTS

Дистрибутив распространяется в виде установочных пакетов для окружения и сервиса. Загрузите установочные пакеты на сервер и выполните команды для Вашей системы в каталоге с пакетом.

Перед установкой непосредственно сервиса необходимо установить сервисный пакет окружения.

  • Установка/обновление TTS осуществляется скриптом chmod +x ./tts-<версия>-<релиз>.sh && ./tts-<версия>-<релиз>.sh -i с правами администратора. Список всех ключей инсталлятора можно посмотреть, запустив инсталлятор ./tts-<версия>-<релиз>.sh без ключей.
  • Загрузить последнюю версию продукта curl -s "https://repo.connect2ai.net/api/tts/new" --user '[user]:[pass]' 2>&1 | bash или в интерактивном режиме bash -c "$(curl -s https://repo.connect2ai.net/api/tts --user '[user]:[pass]' 2>&1)".
  • Обновить TTS /opt/tts/inupdate в интерактивном режиме. Или запустить с ключом:
    • /opt/tts/inupdate -b – обновить до последней beta версии;
    • /opt/tts/inupdate -r – обновить до последней release версии;
    • /opt/tts/inupdate -n – обновить до последней версии (неважно beta или release).
  • Проверить актуальную версию продукта curl -s "https://repo.connect2ai.net/api/tts/version.
  • Посмотреть лог изменений curl -s "https://repo.connect2ai.net/api/tts/changelog" --user '[user]:[pass]'.
  • Полное описание всех команд API репозитория можно найти по ссылке https://repo.connect2ai.net/api. [user]:[pass] – это тот же логин и пароль, что и от Nextcloud.
  • В папке с продуктом можно добавить 2 файла конфигурации (допускается один общий файл на все продукты в папке с окружением /opt/pve/):
    • echo -n "[user]:[pass]" > /opt/tts/.userapi (это файл авторизации в API, нужен для обновления и загрузки моделей)
    • echo -n "http://example.com:3128 [user] [password]" > /opt/tts/.proxy (это файл конфигурации proxy, необходим для обновления и загрузки моделей, при отсутствующем прямом подключении к интернету)

При обновлении следующий список файлов и папок сохраняется: .userapi, .proxy, logs, nnets, config.json, cache, pretrained, pve, data. Сервис не требует остановки и возвращается в актуальное состояние после обновления.

Не забудьте запустить сервис и включить в автозапуск в системе:

sudo systemctl enable tts.service && sudo systemctl start tts.service

Удостоверьтесь, что сервис стартовал:

systemctl status tts.service

Разрешите доступ к порту 6186 на нужном интерфейсе по протоколу tcp.

Конфигурирование параметров сервиса TTS

Настройка параметров сервиса tts производится в файле /opt/tts/config.json

Описание параметров приведено в таблице

Параметр По умолчанию Назначение
logs.path logs/ Путь к папке логов.
logs.backups 10 Максимальное количество логфайлов.
logs.maxSize 5242880 Максимальный размер одного логфайла.
cluster.logfile logs/sync.log Файл логов синхронизации есть только на главном сервере кластера
cluster.statusFile logs/sync.status Статус задачи синхронизации есть только на главном сервере кластера
cluster.nodes [] Перечень подчиненных нод для синхронизации изменений заполняется только на главном сервере кластера
Работа в составе кластера

Для высоконагруженных систем сервис можно расположить на нескольких нодах (виртуальных машинах). В этом случае, чтобы не потерять документы и изменения, полученные на одной из нод, выделяется один основной сервис и вспомогательные сервисы.

  • База файловая, в папке data.
  • lsync настроен через конфиг TTS для репликации базы на все указанные серверы в списке cluster.nodes: [], указываем все слейв-сервера.
  • На всех слейвах список cluster.nodes: [] оставляем пустым.
  • Векторная база на каждом сервере своя, она следит за своей папкой data и обновляет в оперативке по этой папке данные у себя.
  • UPS при изменении данных работает только с мастером TTS, а при запросе данных — со всеми серверами cluster, распределяя нагрузку.
  • В конфигурации UPS: в servers.tts.cluster.trainer указываем мастер-сервер, в servers.tts.cluster перечисляем все сервера кластера TTS, в том числе и мастер.


Сбор данных об ошибках

Для увеличения информативности журналов можно выполнить от суперпользователя команду:

sed -i 's/log-level error/log-level debug/g' /etc/systemd/system/tts.service && systemctl daemon-reload && systemctl restart tts.service

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

systemctl stop tts.service && source /opt/pve/bin/activate && cd /opt/tts/ && python3 api.py && deactivate

       или

systemctl stop tts.service

source /opt/pve/bin/activate

cd /opt/tts/ && python3 api.py

deactivate

Удаление

Для удаления выполните команду: /opt/tts/uninstall. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели и вокодер.