Подключите AITUNNEL к популярным инструментам разработки и автоматизации.

DeepSeek HarnessDeepSeek HarnessАгентный харнесс DeepSeek с рабочими пространствами и плагинами — модели через AITUNNEL
Claude CodeClaude CodeТерминальный агент Anthropic — правит код, запускает команды и git-операции через AITUNNEL
Codex CLICodex CLIOpen-source агент OpenAI в терминале — правки кода, ревью и автоматизация задач
CursorCursor IDEAI-редактор на VS Code с автодополнением Tab, агентом Composer и моделями через AITUNNEL
Qwen CodeCLI-агент для Qwen3-Coder — навигация по проекту, сборка фич и правки через AITUNNEL
OpenCodeOpenCodeОткрытый агент для терминала и IDE с поддержкой 75+ LLM-провайдеров
n8nn8nВизуальная автоматизация с AI-агентами, RAG и интеграциями — модели через AITUNNEL
ClineAI-агент для VS Code — правки файлов, команды в терминале и браузер с подтверждением шагов
OpenClawOpenClawAI-агент для Telegram, Discord и Slack — модели через один API-ключ AITUNNEL
Все инструменты

Озвучка текста

Текст в речь через POST /audio/speech. Совместимо с OpenAI SDK — подмените base_url. Ответ — сырой аудиопоток, не JSON.

POST https://api.aitunnel.ru/v1/audio/speech принимает JSON. В OpenAI SDK укажите base_url https://api.aitunnel.ru/v1/.

Поддерживаемые модели

Актуальный список, голоса, форматы и цены — публичный каталог:

cURL
curl https://api.aitunnel.ru/public/aitunnel/models/speech

На сайте: страница моделей.

ПолеОписание
voicesИдентификаторы голосов для поля voice
supported_formatsЗначения response_format. Первый — если параметр не указать
symbols_costЦена за 1 млн символов в рублях — или за 1 млн байт UTF-8, если billing_unit: "utf8_bytes"
billing_unitcharacters или utf8_bytes. У drama-3 — байты: кириллица 2 байта на букву, латиница 1
voices: []Пустой список = фиксированных голосов нет, опишите голос текстом
prompt_cost / completion_costЦена за 1 млн токенов, если модель тарифицируется по токенам
russian_supportedНадёжно ли озвучивает русский
supports_voice_cloningПринимает ли сэмпл голоса в input_references
voice_sample_max_bytesСамый большой сэмпл голоса в base64, в байтах; null без клонирования. Больше — 400

Имя в запросе — без префикса провайдера: gpt-4o-mini-tts, не openai/gpt-4o-mini-tts. Префикс provider/model обходит каталог — см. OpenRouter.

Базовое использование

curl https://api.aitunnel.ru/v1/audio/speech \
  -H "Authorization: Bearer sk-aitunnel-xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini-tts",
    "voice": "alloy",
    "input": "Привет! Это пример озвучки текста через AITUNNEL.",
    "response_format": "mp3"
  }' \
  --output output.mp3

Параметры запроса

ПараметрТипОбязательныйОписание
modelstringдаИмя из каталога или provider/model
inputstringдаТекст для озвучки
voicestringобычноГолос из voices модели. Если voices пустой — не передавайте
response_formatstringнетФормат аудио. Если не указать — первый из supported_formats (обычно mp3)
speednumberнетСкорость речи, 0.25–4.0. Есть у моделей OpenAI и eleven-multilingual-v2, у остальных может игнорироваться
instructionsstringнетСтиль речи. Есть у gpt-4o-mini-tts
input_referencesarrayнетСэмпл голоса для клонирования — ниже

Формат ответа

Тело — бинарное аудио. Стоимость и баланс — в заголовках:

ЗаголовокОписание
Content-Typeaudio/mpeg для mp3, audio/pcm для pcm
cost-rubСтоимость запроса в рублях
balanceОстаток баланса после списания
X-AITunnel-Cost-Pendingtrue, если провайдер ещё не сообщил стоимость. Тогда cost-rub и balance не приходят, а списание появится позже — подробнее
X-Request-IdID запроса (tts-…), как в истории расходов

Ошибка приходит JSON-ом, не аудио: сначала проверьте статус ответа. Форма ошибки — ошибки и отладка.

Перед запросом на балансе откладывается цена текста по каталогу; не хватает баланса или бюджета ключа — 402. У части моделей с ценой за символ действует нижняя граница: за запрос списывается не меньше каталожной цены символов input, даже если провайдер посчитал дешевле.

Клонирование голоса

У части моделей можно передать короткий сэмпл в input_references — отдельный «загрузить голос» шаг не нужен. Нужен один input_audio (base64 или data-URI) и по желанию text с расшифровкой сэмпла:

JSON
{
  "model": "voxtral-mini-tts-2603",
  "input": "Hello from my cloned voice!",
  "response_format": "mp3",
  "input_references": [
    {
      "type": "input_audio",
      "input_audio": { "data": "data:audio/wav;base64,UklGRuQXDAB..." }
    },
    { "type": "text", "text": "This is the transcript of the reference audio." }
  ]
}

Не все модели это умеют: смотрите supports_voice_cloning в каталоге. Сейчас это seed-audio-1-0. Если поле false, input_references вернёт 400. Слишком большой сэмпл провайдер отклонит.

Оплата за секунду аудио

seed-audio-1-0 тарифицируется не по символам, а по длительности готовой озвучки: 0,5 ₽ за секунду, 30 ₽ за минуту. Поле symbols_cost у неё — пересчёт этой цены в символы по средней скорости чтения, а не тариф. Практические следствия: короткий запрос всё равно стоит несколько секунд аудио, так что цена за символ на коротких строках выше; за один вызов нельзя получить больше 120 секунд, то есть дороже 60 ₽ запрос не выйдет. Точная сумма — в заголовке cost-rub.

Примеры

gpt-4o-mini-tts с инструкциями по стилю

Python
response = client.audio.speech.create(
    model="gpt-4o-mini-tts",
    voice="nova",
    input="Добро пожаловать! Сегодня у нас отличные скидки.",
    instructions="Говори с энтузиазмом, как диктор рекламы.",
)
response.stream_to_file("promo.mp3")

Grok Voice TTS 1.0

Python
response = client.audio.speech.create(
    model="grok-voice-tts-1.0",
    voice="eve",
    input="Hello! This is a test of Grok Voice TTS.",
    response_format="mp3",
)
response.stream_to_file("grok.mp3")

Gemini 3.1 Flash TTS с эмоциональными тегами

Только pcm:

Python
response = client.audio.speech.create(
    model="gemini-3.1-flash-tts-preview",
    voice="Kore",
    input="[excited] Невероятно! [whispers] Это работает.",
    response_format="pcm",
)
response.stream_to_file("gemini.pcm")

ElevenLabs Eleven v4 с аудиотегами

Теги в квадратных скобках ([whispers], [laughs], [sighs]) модель исполняет, а не читает вслух. Работают в eleven-v4 и eleven-v3. Теги входят в оплачиваемые символы и в лимит запроса: 10 000 символов у eleven-v4, eleven-v4-turbo и eleven-multilingual-v2, 5 000 у eleven-v3, 40 000 у eleven-flash-v2.5. Кроме 21 голоса из voices (george, sarah, …) в voice можно передать ID голоса из библиотеки ElevenLabs, например JBFqnCBsd6RMkjVDRZzb.

Python
response = client.audio.speech.create(
    model="eleven-v4",
    voice="george",
    input="[whispers] Это большой секрет. [laughs] Ну ладно, расскажу!",
    response_format="mp3",
)
response.stream_to_file("eleven.mp3")

Voxtral Mini TTS

Python
response = client.audio.speech.create(
    model="voxtral-mini-tts-2603",
    voice="en_paul_neutral",
    input="Welcome to our service. How can I help you today?",
    response_format="mp3",
)
response.stream_to_file("voxtral.mp3")

Несколько голосов в подкасте

Python
segments = [
    ("nova", "Добрый день! Вы слушаете еженедельный подкаст о технологиях."),
    ("onyx", "Сегодня мы обсудим последние новости в мире ИИ."),
    ("nova", "Начнём с обзора новых моделей этой недели."),
]

for i, (voice, text) in enumerate(segments):
    response = client.audio.speech.create(
        model="tts-1-hd",
        voice=voice,
        input=text,
        response_format="mp3",
    )
    response.stream_to_file(f"segment_{i}.mp3")

Лучшие практики

  • Модель: gpt-4o-mini-tts — стиль через instructions; tts-1 — быстрее; grok-voice-tts-1.0 — много языков; gemini-3.8-flash-tts — наррация и диалог; gemini-3.8-flash-lite-tts — массовое чтение вслух; gemini-3.1-flash-tts-preview — теги эмоций. У всех трёх Gemini только pcm. ElevenLabs: eleven-v4 — максимум выразительности; eleven-v4-turbo, eleven-v3-conversational и eleven-flash-v2.5 — голосовые агенты с низкой задержкой; eleven-multilingual-v2 — аудиокниги и ролики. drama-3 — режиссируемая озвучка: эмоция в квадратных скобках перед репликой, теги вроде <whisper> внутри строки. heygen-voice-1 и heygen-voice-1-turbo — 39 языков и 10 голосов, только pcm. assemblyai-tts-1 — тысячи голосов (slug вида aai-jane в voice), шесть языков: английский, испанский, французский, немецкий, итальянский и португальский; русского нет, до 5 000 символов за запрос. simba-3.5 от Speechify — 48 языков в одной модели (язык определяется по тексту, русский не заявлен и звучит с акцентом), голоса вида geffen_32 и alec, теги [whispering] и (sighs) в тексте, 3 000 ₽ за 1M символов.
  • Формат: mp3 для хранения и плеера; pcm для пайплайнов с низкой задержкой. Не сохраняйте pcm как .mp3.
  • Длинный текст режьте на фрагменты и склеивайте аудио.
  • Кэшируйте готовые файлы — повтор того же текста оплачивается снова.

Устранение неполадок

Пустой или битый файл?

  • response_format должен совпадать с расширением. У Gemini — только pcm.
  • Не-200 ответ — JSON с ошибкой, не аудио.

400 на формат?

  • Смотрите supported_formats модели.

Модель не найдена?

  • Имя без префикса провайдера (gpt-4o-mini-tts, не openai/gpt-4o-mini-tts).
  • Список: GET https://api.aitunnel.ru/public/aitunnel/models/speech.

Голос не принят?

  • Берите идентификатор из voices этой модели в каталоге. Наборы у моделей разные.
  • Если voices пустой (seed-audio-1-0), поле voice не передавайте вообще: чужое имя вроде alloy провайдер отклонит с 400. Нужный тембр опишите в input или instructions, либо передайте образец в input_references.

400 на input_references?

  • Клонирование есть только у моделей с supports_voice_cloning: true.

Смотрите также