Действия

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

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

Нет описания правки
 
(не показана 31 промежуточная версия 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" style="width: 110%"
|+''Описание методов API''
|+''Описание методов API''
! style="color:blue;width: 15%" |'''GET/tts/'''
! style="color:blue;width: 15%" |'''GET/tts/cache/{path}'''
! 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%" |
| colspan="2" style="width: 50%" |<small>{ models: [model1,...,modelN] }</small>
*<small>'''path''' - путь к аудиофайлу относительно папки /opt/tts/cache/</small>
| style="width: 50%" |<small>аудиофайл</small>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/'''
! style="color:blue;width: 15%" |'''GET/tts/dictionary/export'''
! 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>простой текст - строки с словом и его интерпретацией с ударением</small>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/'''
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
! colspan="3" style="width: 85%" |<small>Вывод списка моделей.</small>
! 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>{ models: [model1,...,modelN] }</small>
| style="width: 50%" |<small><code>[</code></small>  <small><code>[   "слово",   "замена слова с удар+ением"],</code></small>
 
<small><code>[   "слово2",   "замена слова2 с удар+ением"],</code></small>
 
<small><code>...</code></small>
 
<small><code>]</code></small>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/'''
! 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%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |<small>{ models: [model1,...,modelN] }</small>
* <small>'''csv''' — файл строк со словом и его интерпретацией с ударением.</small>
| style="width: 50%" |<small><code>{</code></small>
 
<small><code>  "error": 0,</code></small>
 
<small><code>  "message": "сообщение о статусе результата"</code></small>
 
<small><code>}</code></small>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/'''
! style="color:green;width: 15%" |'''POST/tts/dictionary/put'''
! colspan="3" style="width: 85%" |<small>Вывод списка моделей.</small>
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан.</small>
|-
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| colspan="2" style="width: 50%" |
| colspan="2" style="width: 50%" |<small>{ models: [model1,...,modelN] }</small>
* <small>'''json''' — строка следующего вида:</small>
 
<small><code>[</code></small>
 
<small><code>[   "слово",   "замена слова с удар+ением" ],</code></small>
 
<small><code>[ "слово2",   "замена слова2 с удар+ением" ],</code></small>
 
<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>
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/'''
! style="color:blue;width: 15%" |'''GET/tts/models'''
! 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": ["Аля","Жанна","Дима","Елена"]}</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>
|
|}


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


{| class="wikitable"
<small><code>  "message": "success",</code></small>
|+
 
!Метод
<small><code>  "text": "нормализованный текст"</code></small>
!Тип
 
!Описание
<small><code>}</code></small>
!Входные параметры
!Ответ
|-
|-
|/tts/
! style="color:green;width: 15%" |'''POST/tts/phonemes'''
|GET
! colspan="2" style="width: 85%" |<small>Конвертация текста в последовательность фонем.</small>
|Вывод списка моделей
| -
|<code>{ models: [model1,...,modelN] }</code>
|-
|-
|/tts/dictionary/export
| colspan="2" style="width: 50%" |
|GET
* <small>'''text''' — фраза для фонемизации.</small>
|выгрузка пользовательского словаря ударений
| style="width: 50%" |<small><code>{</code></small>
| -
 
|простой текст - строки с словом и его интерперетацией с ударением
<small><code>  "error": 0,</code></small>
|-
 
|/tts/dictionary/get
<small><code>  "message": "success",</code></small>
|GET
|выгрузка пользовательского словаря ударений в виде json
| -
|<code>[
  [
    "слово",
    "замена слова с удар+ением"
  ],
  [
    "слово2",
    "замена слова2 с удар+ением"
  ],
  ...
  ...


<small><code>  "text": "последовательность фонем"</code></small>


<br />
<small><code>}</code></small>
]</code>
|-
! 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>
|-
|-
|/tts/dictionary/import
| colspan="2" style="width: 50%" |
|POST
* <small>'''text''' - текст для обработки</small>
|загрузка пользовательского словаря ударений
| style="width: 50%" |<small>{  "error": 0,</small>
|
* '''csv file''' - файл строк со словом и его интерперетацией с ударением
|{


  "error": 0,
<small>  "message": "success",</small>


  "message": "сообщение о статусе результата"
<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>
|-
|-
|/tts/dictionary/put
| colspan="2" |<small>Входные параметры отсутствуют</small>
|POST
|<small>Пример '''неограниченной''' лицензии:
|загрузка пользовательского словаря ударений в виде json
|<code>[
  [
    "слово",
    "замена слова с удар+ением"
  ],
  [
    "слово2",
    "замена слова2 с удар+ением"
  ],
  ...
  ...


</small><code><small>{</small></code>


<br />
    <code><small>"error": 0,</small></code>
]</code>
|{


  "error": 0,
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   


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


}
    <code><small>"threshold": 0</small></code>
|-
|/tts/normalize
|POST
|Нормализация текста - перевод цифр в слова и расстановка ударений (ударения только в нормализованной части фразы) например "в понедельник 10.10.2025" -> "в понедельник дес+ятого октябр+я дв+е т+ысячи дв+адцать п+ятого г+ода"
|
* '''text''' - фраза для нормалимзации
|{


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


  "message": "success",
<small>Пример '''ограниченной''' лицензии:


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


}
    <code><small>"error": 0,</small></code>
|-
|POST


/tts/synthesize/{id}
    <code><small>"uuid": "362e51300b1029f9b45fb8d58b2a91bf",</small></code>   
|POST


/tts/synthesize/{id}
    <code><small>"remaining_licenses": 100,</small></code>
|Синтез звукового файла из текста для фраз большого размера - тип запроса "POST" позволяет отправку больших текстов
|
* '''ID''' - имя модели
* '''text''' - текст синтезируемой фразы
* '''rate''' - скорость речи
* '''pitch''' - высота (тон)
* '''volume''' - громкость
|wav файл с синтезированой фразой
|-
|/tts/synthesize/{id}
|GET
|Синтез звукового файла из текста небольшого размера - для совместимости с предыдущими версями
|
* '''ID''' - имя модели
* '''text''' - текст синтезируемой фразы
* '''rate''' - скорость речи
* '''pitch''' - высота (тон)
* '''volume''' - громкость
|wav файл с синтезированой фразой
|-
|}


    <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

}