Аудио: распознавание и синтез речи
Speech to text (STT), text to speech (TTS), MP3 и PCM
Используйте API-ключ с областью gateway:write, разрешённой моделью и положительным балансом организации.
Speech to text — распознавание речи
POST /v1/audio/transcriptions распознаёт аудио и возвращает JSON с text и usage. Принимается JSON с input_audio.data (base64) и input_audio.format либо multipart/form-data с file и model. Поддерживаются response_format: json и verbose_json; язык, температура и временные метки зависят от модели. Лимит всего тела запроса по умолчанию — 2 000 000 байт, включая base64 или multipart; большие записи разбивайте на части.
Text to speech — синтез речи
POST /v1/audio/speech принимает model, input (до 4096 символов), voice, response_format (mp3 или pcm, по умолчанию mp3) и необязательный speed (0.25–4). Голос и формат должны поддерживаться моделью. Ответ — аудиобайты, а не JSON. Шлюз буферизует до 32 МиБ перед выдачей и проверяет стоимость; потоковая выдача во время генерации и SSE пока не поддерживаются.
Для безопасного повтора передавайте Idempotency-Key: завершённый ответ хранится 24 часа, повтор с другим телом или одновременно выполняющийся запрос возвращает 409. Ошибка не сохраняется как успешный ответ: повтор после 502 может вызвать новую платную генерацию. Для аудио-чата по-прежнему используйте /v1/chat/completions.
Транскрипция через JSON
В поле data передайте base64-содержимое записи. Пример структуры успешного ответа; значения зависят от записи и модели:
Проверка результата и ошибки
Для speech ожидайте HTTP 200, Content-Type: audio/mpeg для MP3 или audio/pcm для PCM и X-Generation-Id. Сохраните ответ в файл; MP3 можно открыть аудиоплеером. PCM — необработанные аудиоданные.
При ошибке возвращается JSON, а не аудиофайл. speech_generation означает ошибку получения звука; speech_billing — ошибку получения стоимости. Сохраните X-KodikRouter-Request-Id и X-Generation-Id для диагностики.
