Эндпоинты аудио
POST /v1/audio/speech превращает текст в речь (формат запроса OpenAI плюс дизайн голоса, клонирование, язык и эмоции), а /v1/audio/voices сохраняет образцы голоса для клонирования — создание, список, получение, переименование, скачивание и удаление.
Синтез речи следует speech API от OpenAI, поэтому официальные SDK работают с https://lovelyrouter.com/v1. Руководство с моделями, их голосами и примерами — Синтез речи. Аутентифицируйтесь своим API-ключом в виде Authorization: Bearer $LOVELY_API_KEY (Аутентификация).
Синтез речи#
/v1/audio/speechОзвучивает input и возвращает аудиофайл. Длительность в секундах передаётся в заголовке x-lovely-audio-seconds, а id вызова — в x-lovely-request-id. Оплата за каждую секунду созданного аудио (не меньше одной секунды); неудачный запрос не оплачивается.
Параметры тела запроса
modelstringОбязательноqwen3-tts или zonos2 (GET /v1/models перечисляет их с ценами).
inputstringОбязательноТекст для озвучивания, до 4 096 символов.
voicestring or objectПредустановленный голос модели, имя голоса OpenAI (alloy, nova, onyx, … сопоставляются с предустановленными) или id сохранённого голоса (voice_…, также в виде {"id": "voice_…"}). Необязательно: без него модель выбирает предустановленный голос для language, или qwen3-tts создаёт голос по instructions.
instructionsstringТолько для qwen3-tts, до 1 000 символов. С голосом — как говорить (эмоция, темп, громкость, шёпот). Без голоса — описание голоса, который нужно создать.
languagestringКод ISO (en, zh, ja, ko, de, fr, pt-br, …) или auto (по умолчанию). Указание языка помогает с короткими текстами и числами.
response_formatstringПо умолчанию mp3mp3, opus, aac, flac, wav или pcm (16 бит, 24 кГц, моно).
speednumberПо умолчанию 1.0От 0,25 до 4,0; высота голоса не меняется.
emotionstring or objectТолько для zonos2: happy, sad, angry или surprised либо веса от 0 до 1, например {"happy": 0.7}.
seedintegerДля воспроизводимого результата, от 0 до 2147483647.
reference_audiostringРазовый голос для клонирования: URL https, URL data: или base64 фрагмента длиной 3–15 с (WAV, MP3, M4A, OGG, FLAC или WebM, до 10 МБ). Не вместе с voice.
reference_textstringЧто говорится в reference_audio (с ним qwen3-tts клонирует точнее).
consentbooleanОбязателен с reference_audio: вы подтверждаете, что голос ваш или у вас есть разрешение говорящего.
Ошибки имеют обычную форму: 400 invalid_request_error с param, указывающим поле (неизвестный голос, instructions для zonos2, emotion для qwen3-tts, отсутствующий consent), 402 при нехватке баланса, 404 для неизвестной модели или чужого голоса, 502, если синтез не удался (ничего не списывается).
curl https://lovelyrouter.com/v1/audio/speech \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3-tts",
"input": "Hello! Nice to meet you.",
"voice": "serena",
"instructions": "Friendly and upbeat"
}' \
--output hello.mp3Объект голоса#
Атрибуты
idstringvoice_ и 24 символа. Используйте его как voice.
objectstringВсегда voice.
namestringДо 80 символов.
transcriptstring | nullЧто говорится в образце.
typestringФормат образца, например audio/wav.
bytesintegerРазмер образца.
audio_urlstringСкачивает образец (с вашим API-ключом).
created_atintegerСекунды Unix.
{
"id": "voice_8f2c4a1e9b7d3f60a5c2e1d4",
"object": "voice",
"name": "Narrator",
"transcript": "Thanks for listening. See you next week on the show.",
"type": "audio/wav",
"bytes": 482044,
"audio_url": "https://lovelyrouter.com/v1/audio/voices/voice_8f2c4a1e9b7d3f60a5c2e1d4/audio",
"created_at": 1792915200
}Сохранение голоса#
/v1/audio/voicesСохраняет образец голоса и возвращает 201 с объектом голоса. Отправляйте multipart (образец как file) или JSON (audio как URL https или data:). Бесплатно; до 100 голосов на учётную запись, хранятся, пока вы их не удалите.
Параметры тела запроса
namestringОбязательноДо 80 символов.
filefile (or `audio` string)ОбязательноОт 3 до 15 секунд чёткой речи одного человека без музыки: WAV, MP3, M4A, OGG/Opus, FLAC или WebM, до 10 МБ.
transcriptstringЧто говорится в образце, до 1 000 символов.
consentbooleanОбязательноtrue: голос ваш, или у вас есть разрешение говорящего на его клонирование.
curl https://lovelyrouter.com/v1/audio/voices \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F name="Narrator" \
-F transcript="Thanks for listening. See you next week on the show." \
-F consent=true \
-F file=@narrator.wavСписок голосов#
/v1/audio/voicesВаши сохранённые голоса, сначала новые: {"object": "list", "data": [voice, …]}.
Получение голоса#
/v1/audio/voices/{id}Один объект голоса. На голос другой учётной записи возвращается 404.
Изменение голоса#
/v1/audio/voices/{id}JSON с name и/или transcript (null очищает значение). Возвращает объект голоса.
Удаление голоса#
/v1/audio/voices/{id}Безвозвратно удаляет голос и его образец: {"id": "voice_…", "object": "voice", "deleted": true}. Персонажи, которые его использовали, остаются без голоса.