Действия

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

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

Нет описания правки
Нет описания правки
 
(не показаны 34 промежуточные версии 5 участников)
Строка 1: Строка 1:
===== '''Общее описание''' =====
===== '''Общее описание''' =====
Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудио файл в формате *.wav.
Сервис предназначен для преобразования текста в речь. Входными данными для сервиса является текст, результатом работы будет аудиофайл.




====='''Термины и определения'''=====
====='''Термины и определения'''=====
Text To Speech Server (TTS)– сервис синтеза речи.
Text-to-speech server (TTS) – сервис синтеза речи.


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


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


 
Swagger UI – интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису TTS в реальном времени
Swagger UI – интерактивная веб-консоль с кратким описанием методов АPI и возможностью выполнять запросы к сервису TTS в реальном времени




Строка 23: Строка 22:
Ответ сервиса представляет собой JSON или текстовый документ в кодировке UTF-8, или двоичный файл.  
Ответ сервиса представляет собой JSON или текстовый документ в кодировке UTF-8, или двоичный файл.  


Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6186 будет отображен интерфейс swagger со всеми методами с возможностью их проверки.
Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6186 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.


 
{| class="wikitable" style="width: 110%"
{| class="wikitable"
|+''Описание методов API''
|+
! style="color:blue;width: 15%" |'''GET/tts/cache/{path}'''
!Метод
! colspan="2" style="width: 85%" |<small>Выгрузка аудиофайла из кэша.</small>
!Тип
|-
!Описание
| colspan="2" style="width: 50%" |
!Входные параметры
*<small>'''path''' - путь к аудиофайлу относительно папки /opt/tts/cache/</small>
!Ответ
| style="width: 50%" |<small>аудиофайл</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/export'''
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений.</small>
|-
|-
|/tts/
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
|GET
| style="width: 50%" |<small>простой текст - строки с словом и его интерпретацией с ударением</small>
|Вывод списка моделей
| -
|<code>{ models: [model1,...,modelN] }</code>
|-
|-
|/tts/dictionary/export
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
|GET
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений в виде json.</small>
|выгрузка пользовательского словаря ударений
| -
|простой текст - строки с словом и его интерперетацией с ударением
|-
|-
|/tts/dictionary/get
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
|GET
| style="width: 50%" |<small><code>[</code></small>  <small><code>[   "слово",   "замена слова с удар+ением"],</code></small>
|выгрузка пользовательского словаря ударений в виде json
 
| -
<small><code>[   "слово2",   "замена слова2 с удар+ением"],</code></small>
|<code>[
  [
    "слово",
    "замена слова с удар+ением"
  ],
  [
    "слово2",
    "замена слова2 с удар+ением"
  ],
  ...
  ...


<small><code>...</code></small>


]</code>
<small><code>]</code></small>
|-
! style="color:green;width: 15%" |'''POST/tts/dictionary/import'''
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений. Текущий словарь будет переписан.</small>
|-
|-
|/tts/dictionary/import
| colspan="2" style="width: 50%" |
|POST
* <small>'''csv''' файл строк со словом и его интерпретацией с ударением.</small>
|загрузка пользовательского словаря ударений
| style="width: 50%" |<small><code>{</code></small>
|
* '''csv file''' - файл строк со словом и его интерперетацией с ударением
|{


  "error": 0,
<small><code>  "error": 0,</code></small>


  "message": "сообщение о статусе результата"
<small><code>  "message": "сообщение о статусе результата"</code></small>


}
<small><code>}</code></small>
|-
|-
|/tts/dictionary/put
! style="color:green;width: 15%" |'''POST/tts/dictionary/put'''
|POST
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан.</small>
|загрузка пользовательского словаря ударений в виде json
|-
|<code>[
| colspan="2" style="width: 50%" |
  [
* <small>'''json''' — строка следующего вида:</small>
    "слово",
    "замена слова с удар+ением"
  ],
  [
    "слово2",
    "замена слова2 с удар+ением"
  ],
  ...
  ...


<small><code>[</code></small>


]</code>
<small><code>[   "слово",   "замена слова с удар+ением" ],</code></small>
|{


  "error": 0,
<small><code>[ "слово2",   "замена слова2 с удар+ением" ],</code></small>


  "message": "сообщение о статусе результата"
<small><code>...</code></small>


}
<small><code>]</code></small>
| style="width: 50%" |<small><code>{</code></small>
 
<small><code>  "error": 0,</code></small>
 
<small><code>  "message": "сообщение о статусе результата"</code></small>
 
<small><code>}</code></small>
|-
|-
|/tts/normalize
! style="color:blue;width: 15%" |'''GET/tts/models'''
|POST
! colspan="2" style="width: 85%" |<small>Перечень моделей синтеза речи. Модели поставляются только в составе дистрибутива.</small>
|Нормализация текста - перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы) например понедельник 10.10.2025" -> понедельник дес+ятого октябр+я дв+е т+ысячи дв+адцать п+ятого г+ода"
|-
|
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
* '''text''' - фраза для нормалимзации
| style="width: 50%" |
|{
<small><code>{"models": ["Аля","Жанна","Дима","Елена"]}</code></small>
|-
! style="color:green;width: 15%" |'''POST/tts/normalize'''
! colspan="2" style="width: 85%" |<small>Нормализация текста перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''text''' фраза для нормализации.</small>
| style="width: 50%" |<small><code>{</code></small>


  "error": 0,
<small><code>  "error": 0,</code></small>


  "message": "success",
<small><code>  "message": "success",</code></small>


  "text": "нормализованный текст"
<small><code>  "text": "нормализованный текст"</code></small>


}
<small><code>}</code></small>
|-
|-
|POST
! style="color:green;width: 15%" |'''POST/tts/phonemes'''
! colspan="2" style="width: 85%" |<small>Конвертация текста в последовательность фонем.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''text''' — фраза для фонемизации.</small>
| style="width: 50%" |<small><code>{</code></small>


/tts/synthesize/{id}
<small><code>  "error": 0,</code></small>
|POST


/tts/synthesize/{id}
<small><code>  "message": "success",</code></small>
|Синтез звукового файла из текста для фраз большого размера - тип запроса "POST" позволяет отправку больших текстов
 
|
<small><code>  "text": "последовательность фонем"</code></small>
* '''ID''' - имя модели
 
* '''text''' - текст синтезируемой фразы
<small><code>}</code></small>
|-
* '''rate''' - скорость речи
! style="color:green;width: 15%" |'''POST/tts/revoice/{revoicer}'''
* '''pitch''' - высота (тон)
! colspan="2" style="width: 85%" |<small>Модификация или искажение голоса</small>
* '''volume''' - громкость
|-
|wav файл с синтезированой фразой
| colspan="2" style="width: 50%" |
* <small>'''wav''' — аудиофайл для обработки.</small>
* <small>'''revoicer''' — модель модификации голоса.</small>
| style="width: 50%" |<small>wav файл с модифицированным (искаженным) голосом.</small>
|-
|-
|/tts/synthesize/{id}
! style="color:blue;width: 15%" |'''GET/tts/revoicers'''
|GET
! colspan="2" style="width: 85%" |<small>Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.</small>
|Синтез звукового файла из текста небольшого размера - для совместимости с предыдущими версями
|
* '''ID''' - имя модели
* '''text''' - текст синтезируемой фразы
* '''rate''' - скорость речи
* '''pitch''' - высота (тон)
* '''volume''' - громкость
|wav файл с синтезированой фразой
|-
|-
|}
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>[  "distortion" ]</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/split'''
! colspan="2" style="width: 85%" |<small>Разбивка текста на фразы. Текст из нескольких предложений разбивает на отдельные фразы. Фразы отдаёт списком.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''text''' - текст для обработки</small>
| style="width: 50%" |<small>{  "error": 0,</small>
 
<small>  "message": "success",</small>
 
<small>  "phrases": [ "фраза 1", "фраза 2", ....  "фраза N"  ] }</small>
|-
! style="color:green;width: 15%" |'''POST/tts/synthesize/{id}'''
! colspan="2" style="width: 85%" |<small>Синтез звукового файла из текста для фраз большого размера — тип запроса «POST» позволяет отправку больших текстов.</small><small><small>'''ВНИМАНИЕ''': аналогичный метод GET теперь отсутствует.</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''ID''' — имя модели</small>
* <small>'''text''' — текст синтезируемой фразы</small>
* <small>'''rate''' — скорость речи</small>
* <small>'''pitch''' — высота (тон)</small>
* <small>'''volume''' — громкость</small>
* <small>'''frequency''' — частота дискретизации (по умолчанию 22050 Гц)</small>
* <small>'''format''' - формат файла результата (wav, opus, ogg, mp3)</small>
* <small>'''link''' - если 1, то вернуть только ссылку на файл</small>
| style="width: 50%" |<small>файл с синтезированой фразой</small>
|-
! style="color:blue;width: 15%" |'''GET/license/check'''
! colspan="2" |<small>Проверка лицензии</small>
|-
| colspan="2" |<small>Входные параметры отсутствуют</small>
|<small>Пример '''неограниченной''' лицензии:
 
</small><code><small>{</small></code>
 
    <code><small>"error": 0,</small></code>
 
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   
 
    <code><small>"remaining_licenses": "infinity",</small></code>
 
    <code><small>"threshold": 0</small></code>
 
<code><small>}</small></code>
 
<small>Пример '''ограниченной''' лицензии:
 
</small><code><small>{</small></code>
 
    <code><small>"error": 0,</small></code>
 
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   
 
    <code><small>"remaining_licenses": 100,</small></code>


    <code><small>"threshold": 100</small></code>


Методы POST '''заменяют''' пользовательский словарь, а не дополняют его
<code><small>}</small></code>

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

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

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


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

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

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

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

Swagger UI – интерактивная веб-консоль с кратким описанием методов API и возможностью выполнять запросы к сервису TTS в реальном времени



Описание методов API

Запросы осуществляются по протоколу HTTP 1.1 на адрес сервера с доступным сервисом TTS. По умолчанию используется порт 6186/tcp.

Авторизация запросов не требуется. HTTP-запросы должны содержать заголовок "accept: application/json"

Ответ сервиса представляет собой JSON или текстовый документ в кодировке UTF-8, или двоичный файл.

Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6186 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.

Описание методов API
GET/tts/cache/{path} Выгрузка аудиофайла из кэша.
  • path - путь к аудиофайлу относительно папки /opt/tts/cache/
аудиофайл
GET/tts/dictionary/export Выгрузка пользовательского словаря ударений.
Входные параметры отсутствуют простой текст - строки с словом и его интерпретацией с ударением
GET/tts/dictionary/get Выгрузка пользовательского словаря ударений в виде json.
Входные параметры отсутствуют [ [   "слово",   "замена слова с удар+ением"],

[   "слово2",   "замена слова2 с удар+ением"],

...

]

POST/tts/dictionary/import Загрузка пользовательского словаря ударений. Текущий словарь будет переписан.
  • csv — файл строк со словом и его интерпретацией с ударением.
{

  "error": 0,

  "message": "сообщение о статусе результата"

}

POST/tts/dictionary/put Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан.
  • json — строка следующего вида:

[

[   "слово",   "замена слова с удар+ением" ],

[ "слово2",   "замена слова2 с удар+ением" ],

...

]

{

  "error": 0,

  "message": "сообщение о статусе результата"

}

GET/tts/models Перечень моделей синтеза речи. Модели поставляются только в составе дистрибутива.
Входные параметры отсутствуют

{"models": ["Аля","Жанна","Дима","Елена"]}

POST/tts/normalize Нормализация текста — перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».
  • text — фраза для нормализации.
{

  "error": 0,

  "message": "success",

  "text": "нормализованный текст"

}

POST/tts/phonemes Конвертация текста в последовательность фонем.
  • text — фраза для фонемизации.
{

  "error": 0,

  "message": "success",

  "text": "последовательность фонем"

}

POST/tts/revoice/{revoicer} Модификация или искажение голоса
  • wav — аудиофайл для обработки.
  • revoicer — модель модификации голоса.
wav файл с модифицированным (искаженным) голосом.
GET/tts/revoicers Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.
Входные параметры отсутствуют [  "distortion" ]
GET/tts/split Разбивка текста на фразы. Текст из нескольких предложений разбивает на отдельные фразы. Фразы отдаёт списком.
  • text - текст для обработки
{  "error": 0,

  "message": "success",

  "phrases": [ "фраза 1", "фраза 2", ....  "фраза N" ] }

POST/tts/synthesize/{id} Синтез звукового файла из текста для фраз большого размера — тип запроса «POST» позволяет отправку больших текстов.ВНИМАНИЕ: аналогичный метод GET теперь отсутствует.
  • ID — имя модели
  • text — текст синтезируемой фразы
  • rate — скорость речи
  • pitch — высота (тон)
  • volume — громкость
  • frequency — частота дискретизации (по умолчанию 22050 Гц)
  • format - формат файла результата (wav, opus, ogg, mp3)
  • link - если 1, то вернуть только ссылку на файл
файл с синтезированой фразой
GET/license/check Проверка лицензии
Входные параметры отсутствуют Пример неограниченной лицензии:

{

   "error": 0,
   "uuid": "362e51300b1029f9b45fb8d58b2a91bf",    
   "remaining_licenses": "infinity",
   "threshold": 0

}

Пример ограниченной лицензии:

{

   "error": 0,
   "uuid": "362e51300b1029f9b45fb8d58b2a91bf",    
   "remaining_licenses": 100,
   "threshold": 100

}