TTS. Руководство администратора: различия между версиями
Материал из Флора AI
Нет описания правки |
KorolkovS (обсуждение | вклад) Нет описания правки |
||
| (не показаны 33 промежуточные версии 5 участников) | |||
| Строка 1: | Строка 1: | ||
===== '''Общее описание''' ===== | ===== '''Общее описание''' ===== | ||
Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет | Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудиофайл в формате *.wav, *.ogg, *.opus, *.mp3. | ||
====='''Термины и определения'''===== | |||
Text-to-speech server (TTS) – сервис синтеза речи. | |||
Модель (голос) – модель нейронной сети, отвечающая за синтез спектрограммы из текста. От модели зависит, каким голосом будет синтезирован текст. | |||
Вокодер – модель нейронной сети, отвечающая за синтез аудиоданных из спектрограммы. '''''Модели и вокодеры поставляются в составе дистрибутива, дополнительных действий для их установки не требуется.''''' | |||
====='''Расчет нагрузки'''===== | ====='''Расчет нагрузки'''===== | ||
Для нормальной работы сервиса на каждый канал синтеза требуется | Для нормальной работы сервиса на каждый канал синтеза требуется 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>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. Сервис не требует остановки и возвращается в актуальное состояние после обновления. | |||
Не забудьте запустить сервис и включить в автозапуск в системе: | Не забудьте запустить сервис и включить в автозапуск в системе: | ||
| Строка 30: | Строка 61: | ||
Разрешите доступ к порту 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> | <code>systemctl stop tts.service</code> | ||
<code>source /opt/pve/bin/activate</code> | |||
<code>cd /opt/tts/ && python3 api.py</code> | |||
<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, необходим для обновления и загрузки моделей, при отсутствующем прямом подключении к интернету)
- echo -n
При обновлении следующий список файлов и папок сохраняется: .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. Команда деинсталлирует сервис и удалит рабочий каталог, включая все установленные модели и вокодер.