Skip to content

Gemini 3.8 Flash Tts — Озвучка Текста и Диалогов ​

POST /sounds/gemini-tts

Озвучка текста голосами Gemini 3.8 Flash TTS (Google): один диктор или диалог — speakers задают дикторов (speaker_id + voice_name из списка голосов KIE), dialogue_turns — реплики (speaker_id, text, опционально style — инструкция подачи, напр. «скажи весело»). Цена — потокенная (вход текста + аудио-выход, за 1000 токенов; на старте списывается оценка по объёму текста, после генерации пересчитывается по факту). Лимит: 10 запросов/мин.

Базовый URL: https://api.aihere.ru/api/v1
Авторизация: Authorization: Bearer <API-ключ>
Rate-limit: 10 запросов/мин

Параметры ​

ПолеТипОбяз.Описание
speakersarray[object]дамин. элементов: 1; макс. элементов: 5
dialogue_turnsarray[object]дамин. элементов: 1; макс. элементов: 50
temperaturenumber (опционально)—мин: 0.0; макс: 2.0
filler_wordsboolean—по умолчанию false

Примеры ​

bash
curl -X POST "https://api.aihere.ru/api/v1/sounds/gemini-tts" \
  -H "Authorization: Bearer $AIHERE_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Callback-Url: https://myapp.example.com/api/aihere-callback" \
  -d '{
  "speakers": [
    {
      "speaker_id": "speaker1",
      "voice_name": "Kore"
    },
    {
      "speaker_id": "speaker2",
      "voice_name": "Puck"
    }
  ],
  "dialogue_turns": [
    {
      "speaker_id": "speaker1",
      "text": "Привет! Это пример реплики."
    },
    {
      "speaker_id": "speaker2",
      "text": "И это — ответ второго голоса."
    }
  ],
  "filler_words": false
}'
python
import requests

payload = {
    "speakers": [
        {
            "speaker_id": "speaker1",
            "voice_name": "Kore"
        },
        {
            "speaker_id": "speaker2",
            "voice_name": "Puck"
        }
    ],
    "dialogue_turns": [
        {
            "speaker_id": "speaker1",
            "text": "Привет! Это пример реплики."
        },
        {
            "speaker_id": "speaker2",
            "text": "И это — ответ второго голоса."
        }
    ],
    "filler_words": False
}

resp = requests.post(
    "https://api.aihere.ru/api/v1/sounds/gemini-tts",
    headers={
        "Authorization": f"Bearer {API_KEY}",
        # Опционально: вебхук о завершении задачи
        # "X-Callback-Url": "https://myapp.example.com/api/aihere-callback",
    },
    json=payload,
    timeout=60,
)
resp.raise_for_status()
task_id = resp.json()["task_id"]
print(f"Задача №{task_id} поставлена")
javascript
const resp = await fetch("https://api.aihere.ru/api/v1/sounds/gemini-tts", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
    // Опционально: "X-Callback-Url": "https://myapp.example.com/api/aihere-callback",
  },
  body: JSON.stringify({
  "speakers": [
    {
      "speaker_id": "speaker1",
      "voice_name": "Kore"
    },
    {
      "speaker_id": "speaker2",
      "voice_name": "Puck"
    }
  ],
  "dialogue_turns": [
    {
      "speaker_id": "speaker1",
      "text": "Привет! Это пример реплики."
    },
    {
      "speaker_id": "speaker2",
      "text": "И это — ответ второго голоса."
    }
  ],
  "filler_words": false
}),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);
const { task_id } = await resp.json();
console.log("Задача №" + task_id + " поставлена");
php
$payload = json_decode('{"speakers": [{"speaker_id": "speaker1", "voice_name": "Kore"}, {"speaker_id": "speaker2", "voice_name": "Puck"}], "dialogue_turns": [{"speaker_id": "speaker1", "text": "Привет! Это пример реплики."}, {"speaker_id": "speaker2", "text": "И это — ответ второго голоса."}], "filler_words": false}', true);

$ch = curl_init('https://api.aihere.ru/api/v1/sounds/gemini-tts');
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $apiKey",
        'Content-Type: application/json',
        // Опционально: 'X-Callback-Url: https://myapp.example.com/api/aihere-callback',
    ],
]);
$resp = json_decode(curl_exec($ch), true);
curl_close($ch);
echo "Задача №{$resp['task_id']} поставлена";

Ответ 200 ​

ID задачи

json
{
  "task_id": 123
}

Ошибки ​

КодПричина
429Превышен rate-limit
502Ошибка провайдера генерации
503Провайдер недоступен или сбой сервиса баланса (списанные средства возвращаются)
422Ошибка валидации тела запроса (detail содержит список полей)
401Нет или невалидный API-ключ