Appearance
Клонирование голоса
Персональный голос создаётся асинхронно. API сразу возвращает ресурс с status: "PENDING", после чего запись очищается, распознаётся и превращается в референс для синтеза.
Поддерживаемые стили
Получите актуальные допустимые значения поля style перед созданием или изменением голоса:
bash
curl https://api.genvoice.ru/v1/api/voices/styles \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Ответ 200 OK:
json
{
"styles": [
"нейтральный",
"дикторский",
"тёплый",
"энергичный",
"спокойный",
"новостной",
"дружелюбный",
"глубокий",
"мягкий",
"деловой",
"аудиокниги",
"подкасты",
"обучение",
"реклама",
"документальный",
"автоответчик",
"звонки",
"книги",
"персонажи",
"asmr",
"медитации",
"детский"
]
}Порядок элементов стабилен. Передавайте одно из этих значений в поле style; для другого значения API вернёт 422 Unprocessable Entity.
Лимит голосов
Чтобы узнать текущий тариф и использование лимита персональных голосов:
bash
curl https://api.genvoice.ru/v1/api/voices/limits \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Ответ:
json
{
"account_tier": "pro",
"used": 2,
"limit": 10
}Удалённые и временные голоса не занимают лимит.
Создание
Передайте запись и метаданные как multipart/form-data:
bash
curl -X POST https://api.genvoice.ru/v1/api/voices \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-F "file=@speaker.wav" \
-F "name=Голос диктора" \
-F "lang=ru" \
-F "gender=male" \
-F "style=дикторский"Поддерживаются WAV, MP3, OGG, FLAC, MP4/M4A, WebM, AAC, Opus, AMR и WMA. Размер файла — до 50 МБ, длительность — от 3 секунд до 5 минут.
Ответ 201 Created:
json
{
"id": "37f29c58-e57a-4131-8918-62dc1c296606",
"name": "Голос диктора",
"transcription": null,
"lang": "ru",
"gender": "male",
"style": "дикторский",
"status": "PENDING",
"created_at": "2026-08-11T10:00:00Z",
"updated_at": "2026-08-11T10:00:00Z"
}Количество персональных голосов ограничено тарифом. При исчерпании лимита API возвращает 403 с кодом custom_voice_limit_reached.
Успешное создание ограничено 60 запросами в минуту на аккаунт. Все попытки, включая неуспешные, дополнительно ограничены 60 запросами в минуту на API-ключ и IP-адрес; смена невалидного ключа не обходит защиту. Число одновременно активных задач клонирования не может превышать доступное на тарифе число персональных голосов: например, 1 для тарифа с одним голосом и 50 для тарифа с 50 голосами. При превышении одного из этих ограничений API возвращает 429 Too Many Requests с заголовком Retry-After.
Проверка готовности
Опрашивайте ресурс по полученному id:
bash
curl https://api.genvoice.ru/v1/api/voices/VOICE_ID \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Поле status принимает одно из четырёх значений:
PENDING— задача ожидает обработки;PROCESSING— запись обрабатывается;COMPLETED— голос готов к синтезу;FAILED— обработка окончательно завершилась ошибкой.
Опрашивайте ресурс, пока статус не станет терминальным: COMPLETED или FAILED. У готового голоса transcription содержит распознанный текст голосового референса. При FAILED не продолжайте бесконечный опрос: этот голос нельзя использовать для синтеза.
Используйте голос в /api/tts только при status: "COMPLETED". Для любого другого статуса синтез и получение аудио возвращают 409 Conflict с пояснением.
Для прослушивания готового референса запросите временную ссылку:
bash
curl https://api.genvoice.ru/v1/api/voices/VOICE_ID/audio-url \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Изменение
bash
curl -X PATCH https://api.genvoice.ru/v1/api/voices/VOICE_ID \
-H "Authorization: Bearer sk_live_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"Новый диктор","transcription":"Исправленный текст","style":"реклама"}'Можно изменять name, transcription, lang, gender и style. Редактирование разрешено только в терминальном статусе COMPLETED или FAILED. Во время PENDING и PROCESSING API возвращает 409 Conflict, чтобы изменение транскрипции не конфликтовало с результатом фонового клонирования.
Удаление
bash
curl -X DELETE https://api.genvoice.ru/v1/api/voices/VOICE_ID \
-H "Authorization: Bearer sk_live_YOUR_API_KEY"Успешный ответ — 204 No Content. Удалённый голос пропадает из списка и больше не принимается синтезом. Чужой, удалённый или несуществующий voice_id всегда возвращает 404.