Действия

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

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

Нет описания правки
 
(не показана 21 промежуточная версия 4 участников)
Строка 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" style="width: 110%"
|+''Описание методов API''
|+''Описание методов API''
! style="color:blue;width: 15%" |'''GET/tts/'''
! style="color:blue;width: 15%" |'''GET/tts/'''
! colspan="3" style="width: 85%" |<small>Вывод списка моделей.</small>
! colspan="2" style="width: 85%" |<small>Вывод списка моделей (голосов синтеза).</small>
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>{ models: [model1,...,modelN] }</small>
| style="width: 50%" |<small><code>{ models: [model1,...,modelN] }</code></small>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/export'''
! style="color:blue;width: 15%" |'''GET/tts/dictionary/export'''
! colspan="3" style="width: 85%" |Выгрузка пользовательского словаря ударений
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений.</small>
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>простой текст - строки с словом и его интерперетацией с ударением</small>
| style="width: 50%" |<small>простой текст - строки с словом и его интерперетацией с ударением</small>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
! colspan="3" style="width: 85%" |Выгрузка пользовательского словаря ударений в виде json
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений в виде json.</small>
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |<small>[ [   "слово",   "замена слова с удар+ением"],</small>
| style="width: 50%" |<small><code>[</code></small>  <small><code>[   "слово",   "замена слова с удар+ением"],</code></small>


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


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


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


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


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


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


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


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


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


<small>...]</small>
<small><code>]</code></small>
| colspan="2" style="width: 50%" |<small>{</small>
| style="width: 50%" |<small><code>{</code></small>


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


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


<small>}</small>
<small><code>}</code></small>
|-
|-
! style="color:green;width: 15%" |'''POST/tts/normalize'''
! style="color:green;width: 15%" |'''POST/tts/normalize'''
! colspan="3" style="width: 85%" |Нормализация текста - <small>перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы) например понедельник 10.10.2025" -> понедельник дес+ятого октябр+я дв+е т+ысячи дв+адцать п+ятого г+ода"</small>
! colspan="2" style="width: 85%" |<small>Нормализация текста — перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы), например «в понедельник 10.10.2025» -> «в понедельник дес+ятого октябр+я две т+ысячи дв+адцать п+ятого г+ода».</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''text''' - фраза для нормалимзации</small>
* <small>'''text''' фраза для нормализации.</small>
| style="width: 50%" |<small>{</small>
| style="width: 50%" |<small><code>{</code></small>
 
<small><code>  "error": 0,</code></small>


<small>  "error": 0,</small>
<small><code>  "message": "success",</code></small>
 
<small><code>  "text": "нормализованный текст"</code></small>
 
<small><code>}</code></small>
|-
! style="color:green;width: 15%" |'''POST/tts/revoice/{revoicer}'''
! colspan="2" style="width: 85%" |<small>Модификация или искажение голоса</small>
|-
| colspan="2" style="width: 50%" |
* <small>'''wav''' — аудиофайл для обработки.</small>
* <small>'''revoicer''' — модель модификации голоса.</small>
| style="width: 50%" |<small>wav файл с модифицированным (искаженным) голосом.</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/revoicers'''
! colspan="2" style="width: 85%" |<small>Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.</small>
|-
| 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>  "message": "success",</small>


<small>  "text": "нормализованный текст"</small>
<small>  "phrases": "фраза 1", "фраза 2", ....  "фраза N"  ] }</small>
 
|-
<small>}</small>
|
|-|-
! style="color:green;width: 15%" |'''POST/tts/synthesize/{id}'''
! style="color:green;width: 15%" |'''POST/tts/synthesize/{id}'''
! colspan="3" style="width: 85%" |Синтез звукового файла <small>из текста для фраз большого размера - тип запроса "POST" позволяет отправку больших текстов</small>
! colspan="2" style="width: 85%" |<small>Синтез звукового файла из текста для фраз большого размера тип запроса «POST» позволяет отправку больших текстов.</small><small><small>'''ВНИМАНИЕ''': аналогичный метод GET теперь отсутствует.</small>
|-
|-
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |
* <small>'''ID''' - имя модели</small>
* <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>'''text''' - текст синтезируемой фразы</small>
</small><code><small>{</small></code>


* <small>'''rate''' - скорость речи</small>
    <code><small>"error": 0,</small></code>


* <small>'''pitch''' - высота (тон)</small>
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   


* <small>'''volume''' - громкость</small>
    <code><small>"remaining_licenses": "infinity",</small></code>
| style="width: 50%" |<small>wav файл с синтезированой фразой</small>
 
|
    <code><small>"threshold": 0</small></code>
|-
 
! style="color:blue;width: 15%" |'''GET/tts/synthesize/{id}'''
<code><small>}</small></code>
! colspan="3" style="width: 85%" |Синтез звукового файла <small>из текста небольшого размера - для совместимости с предыдущими версями</small>
 
|-
<small>Пример '''ограниченной''' лицензии:
| colspan="2" style="width: 50%" |
 
* <small>'''ID''' - имя модели</small>
</small><code><small>{</small></code>
 
    <code><small>"error": 0,</small></code>


* <small>'''text''' - текст синтезируемой фразы</small>
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   


* <small>'''rate''' - скорость речи</small>
    <code><small>"remaining_licenses": 100,</small></code>


* <small>'''pitch''' - высота (тон)</small>
    <code><small>"threshold": 100</small></code>


* <small>'''volume''' - громкость</small>
<code><small>}</small></code>
| style="width: 50%" |<small>wav файл с синтезированой фразой</small>
|
|}

Текущая версия от 11:10, 30 июля 2025

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

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


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

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/ Вывод списка моделей (голосов синтеза).
Входные параметры отсутствуют { models: [model1,...,modelN] }
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": "сообщение о статусе результата"

}

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

}