POST http://example.ru:5002/synth
example.ru5002/synthPOST| Заголовок | Значение | Описание |
|---|---|---|
Content-Type |
application/json |
Определяет, что тело запроса передаётся в формате JSON. |
Тело запроса содержит JSON с параметрами для синтеза речи.
{
"text": "Здравствуйте. Приветствую вас на нашем вебинаре.",
"voice": "egor",
"speed": 1.1,
"sample_rate": 22050
}
| Параметр | Тип | Описание | Параметр по умолчанию | Обязательный | Диапазон |
|---|---|---|---|---|---|
text |
string |
Исходный текст для синтеза речи. Рекомендованный гайд по тому, как работать с ударениями и интонациями в исходном тексте. |
- | ✅ Да | Не ограничен; не допускается текст, состоящий целиком из непроизносимых символов. |
voice |
string |
Идентификатор голоса | olga | ❌ Нет | • olga (нейтральный)• olga_good (добрый)• egor (нейтральный) • egor_good (добрый) |
speed |
float |
Скорость голоса | 1.0 | ❌ Нет | 0.4 - 2.0 |
sample_rate |
integer |
Частота дискретизации | 22050 | ❌ Нет | 8000 или 22050 |
curl -X POST http://example.ru:5002/synth \
-H "Content-Type: application/json" \
-d '{
"text": "Здравствуйте. Приветствую вас на нашем вебинаре...",
"voice": "egor",
"speed": 1.1,
"sample_rate": 22050
}' -o output.wav
| Заголовок | Значение | Описание |
|---|---|---|
Date |
Fri, 28 Mar 2025 09:07:35 GMT |
Дата и время обработки запроса |
Connection |
close |
Статус соединения |
Transfer-encoding |
chunked |
Механизм передачи данных |
Content-Type |
audio/wav |
Формат передаваемого аудиофайла |
Content-Disposition |
attachment; filename="out.wav" |
Имя файла, предлагающегося для скачивания |
Сервер возвращает сгенерированное аудио в бинарном формате (audio/wav). Данные представляют собой поток байтов, соответствующий стандарту WAV.
Чтобы сохранить ответ в виде WAV-файла, используйте параметр -o в curl:
curl -X POST http://example.ru:5002/synth -H "Content-Type: application/json" -d '{...}' -o output.wav
Пример реализации сохранения аудиофайла в Python:
import requests
url = "http://example.ru:5002/synth"
data = {
"text": "Здравствуйте. Приветствую вас на нашем вебинаре.",
"voice": "egor",
"speed": 1.0,
"sample_rate": 22050
}
response = requests.post(url, json=data)
if response.status_code == 200 and response.headers.get("Content-Type") == "audio/wav":
wav_name = "output.wav"
with open(wav_name, "wb") as f:
f.write(response.content) # Запись аудиофайла
print(f"Аудиофайл сохранен как {wav_name}")
else:
print("Ошибка запроса:", response.status_code, response.text)
| Код | Ошибка | Описание |
|---|---|---|
400 |
Bad request |
Некорректные параметры запроса |
500 |
Internal Server Error |
Ошибка сервера |
{
"error": "Bad request",
"message": "requested sample rate 24050 exceeds the model's default sample rate 22050."
}
{
"error": "Bad request",
"message": "text contains only prohibited characters and will not be synthesised."
}
{
"error": "Bad request",
"message": "invalid speed hint: speed value too high"
}
text может быть ограничена сервером.voice) определяются серверной конфигурацией.