Grok TTS
xai-tts-runware
Grok TTS — генерация аудио от xai, доступная через единый Ranvik API. Поддерживаемые возможности: text_to_audio.
от 5.6 ₽ / 1k симв
Технические характеристики
xai-tts-runwareВозможности
- Text-to-Audio
Цены
| Единица | Цена |
|---|---|
| за 1М символов | 5.6 ₽ |
Цены указаны в рублях. Списываются с баланса проекта при каждом успешном запросе.
Поддерживаемые параметры
Параметры передаются вендору как есть (pure proxy) — мы не валидируем их у себя на стороне. Если вендор не примет — вернётся его ошибка.
| Параметр | Тип | Диапазон / values | Default | Описание |
|---|---|---|---|---|
speech.textrequired | string | — | — | Текст для синтеза речи. Цена $0.0042 за 1000 символов. примеры значенийПримеры Привет! Это пример синтезированной речи через xAI. |
speech.voice | enum | una, leo, eve, ara, sal, rex | auto | Голос диктора. 6 предустановленных + auto. |
speech.language | enum | en, ar-EG, ar-SA, ar-AE, bn, zh, fr, de, hi, id, it, ja, ko, pt-BR, pt-PT, ru, es-MX, es-ES, tr, vi | — | Код языка / локали. 20 значений включая региональные варианты (ar-EG/SA/AE, pt-BR/PT, es-MX/ES). |
audioSettings.bitrate | integer | min: 8 | — | Битрейт kbps. Применимо только для lossy форматов (MP3, OGG). |
audioSettings.sampleRate | integer | — | — | Частота дискретизации в Hz. |
audioSettings.channels | enum | 1, 2 | 2 | Каналы: 1 — mono, 2 — stereo. |
numberResults | integer | min: 1 · max: 4 | 1 | Сколько вариаций сгенерировать. |
outputType | enum | URL, base64Data, dataURI | URL | Формат доставки. |
outputFormat | enum | MP3, WAV, FLAC, OGG | MP3 | Формат аудиофайла. WAV/FLAC — без компрессии (audioSettings.bitrate игнорируется). |
async | boolean | — | false | true → task_id для async-polling. false (default) → sync (binary audio в ответе). |
webhookURL | string | — | — | URL для POST-уведомления async. примеры значенийПримеры https://yourapp.com/webhooks/runware |
uploadEndpoint | string | — | — | Presigned URL для автозагрузки. примеры значенийПримеры https://bucket.s3.amazonaws.com/result.mp3?X-Amz-Signature=... |
Параметры ответа
Что возвращает API. У медиа-моделей формат зависит от режима: sync — сразу результат, async — task_id для опроса через GET /v1/tasks/{id}.
Sync (HTTP 200)
Для TTS короткого input: HTTP 200, **binary audio** (Content-Type: audio/mpeg / audio/wav / ...). Это НЕ JSON — это байты файла.
audio/mpeg, audio/wav, audio/opus, audio/ogg Async (HTTP 202)
Если is_async_only=1 (music gen) или async:true в запросе. HTTP 202 + JSON.
| Поле | Тип | Значения | Описание |
|---|---|---|---|
id | string | — | task_id для GET /v1/tasks/{id}. |
object | string | audio.task | |
status | enum | queued, processing, completed, failed | |
model | string | — | |
created | integer | — |
Опрос статуса (GET /v1/tasks/{id})
GET /v1/tasks/{id}.
| Поле | Тип | Значения | Описание |
|---|---|---|---|
id | string | — | |
status | enum | queued, processing, completed, failed, canceled | |
modality | string | audio | |
model | string | — | |
data | array | — | Каждый элемент:
|
error | string | — |
Пример запроса
from openai import OpenAI
client = OpenAI(api_key="rk_live_...", base_url="https://api.ranvik.ru/v1")
resp = client.audio.speech.create(
model= "xai-tts-runware",
"speech.text": "Пример промпта",
"speech.voice": "auto",
"speech.language": "en",
"audioSettings.bitrate": 8,
"audioSettings.sampleRate": 1,
"audioSettings.channels": 2,
numberResults= 1,
outputType= "URL",
outputFormat= "MP3",
async= False,
webhookURL= "https://example.com/...",
uploadEndpoint= "value",
)
print(resp) Замените rk_live_... на ваш ключ из кабинета.