Действия

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

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

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




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


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


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


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




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


Ответ сервиса представляет собой JSON-документ в кодировке UTF-8 или двоичный файл. Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6186 будет отображен интерфейс swagger со всеми методами с возможностью их проверки.
Ответ сервиса представляет собой JSON или текстовый документ в кодировке UTF-8, или двоичный файл.  
 
Содержимое документа зависит от результата выполнения запроса. При наличии ошибки в качестве ответа вернется переменная error=1 и описание в переменной message. Для удобства проверки методов по ссылке http://АДРЕС:6186 будет отображен интерфейс Swagger со всеми методами с возможностью их проверки.
 
{| class="wikitable" style="width: 110%"
|+''Описание методов 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>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
| style="width: 50%" |<small>простой текст - строки с словом и его интерпретацией с ударением</small>
|-
! style="color:blue;width: 15%" |'''GET/tts/dictionary/get'''
! colspan="2" style="width: 85%" |<small>Выгрузка пользовательского словаря ударений в виде json.</small>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</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:green;width: 15%" |'''POST/tts/dictionary/import'''
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений. Текущий словарь будет переписан.</small>
|-
| colspan="2" style="width: 50%" |
* <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:green;width: 15%" |'''POST/tts/dictionary/put'''
! colspan="2" style="width: 85%" |<small>Загрузка пользовательского словаря ударений в виде json. Текущий словарь будет переписан.</small>
|-
| colspan="2" style="width: 50%" |
* <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/models'''
! colspan="2" style="width: 85%" |<small>Перечень моделей синтеза речи. Модели поставляются только в составе дистрибутива.</small>
|-
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</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>
 
<small><code>  "message": "success",</code></small>
 
<small><code>  "text": "нормализованный текст"</code></small>
 
<small><code>}</code></small>
|-
! 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>
 
<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/revoice/{revoicer}'''
|GET
! colspan="2" style="width: 85%" |<small>Модификация или искажение голоса</small>
|Вывод списка моделей
| -
|<code>{ models: [model1,...,modelN] }</code>
|-
|-
|/tts/dictionary/export
| colspan="2" style="width: 50%" |
|GET
* <small>'''wav''' — аудиофайл для обработки.</small>
|выгрузка пользовательского словаря ударений
* <small>'''revoicer''' — модель модификации голоса.</small>
| -
| style="width: 50%" |<small>wav файл с модифицированным (искаженным) голосом.</small>
|текст - строки с словом и его интерперетацией с ударением
|-
|-
|/tts/dictionary/get
! style="color:blue;width: 15%" |'''GET/tts/revoicers'''
|GET
! colspan="2" style="width: 85%" |<small>Перечень моделей модификации или искажения голоса. Модели поставляются только в составе дистрибутива. Модель distortion — искажение голоса, делает голос неузнаваемым и речь неразборчивой.</small>
|выгрузка пользовательского словаря ударений в виде json
| -
|<code>[
  [
    "слово",
    "замена слова с удар+ением"
  ],
  [
    "слово2",
    "замена слова2 с удар+ением"
  ],
  ...
  ...
]</code>
|-
|-
|/tts/dictionary/import
| colspan="2" style="width: 50%" |<small>Входные параметры отсутствуют</small>
|POST
| style="width: 50%" |<small>[  "distortion" ]</small>
|загрузка пользовательского словаря ударений
|текст - строки с словом и его интерперетацией с ударением
| -
|-
|-
! style="color:blue;width: 15%" |'''GET/tts/split'''
! colspan="2" style="width: 85%" |<small>Разбивка текста на фразы. Текст из нескольких предложений разбивает на отдельные фразы. Фразы отдаёт списком.</small>
|-
|-
|/tts/dictionary/get
| colspan="2" style="width: 50%" |
|POST
* <small>'''text''' - текст для обработки</small>
|загрузка пользовательского словаря ударений в виде json
| style="width: 50%" |<small>{  "error": 0,</small>
|<code>[
 
  [
<small>  "message": "success",</small>
    "слово",
 
    "замена слова с удар+ением"
<small>  "phrases": [ "фраза 1", "фраза 2", ....  "фраза N"  ] }</small>
  ],
  [
    "слово2",
    "замена слова2 с удар+ением"
  ],
  ...
  ...
]</code>
| -
|-
|-
|/tts/synthesize/{id}
! style="color:green;width: 15%" |'''POST/tts/synthesize/{id}'''
|GET
! colspan="2" style="width: 85%" |<small>Синтез звукового файла из текста для фраз большого размера — тип запроса «POST» позволяет отправку больших текстов.</small><small><small>'''ВНИМАНИЕ''': аналогичный метод GET теперь отсутствует.</small>
|Синтез звукового файла из текста
| 
  ID - имя модели
  text - текст синтезируемой фразы
  rate - скорость речи
  pitch - высота (тон)
  volume - громкость
|wav файл с синтезированой фразой
|-
|-
|}
| 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

}