Синтез речи
Преобразование текста в аудио
Метод
POST https://api.getapi.ru/v1/audio/speech
Метод используется с моделью синтеза речи, поддерживающей Speech API
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
model | string | Да | ID модели синтеза речи |
input | string | Да | Текст для озвучивания |
voice | string | Зависит от модели | Голос, поддерживаемый моделью |
response_format | string | Нет | Формат аудио, например mp3 |
speed | number | Нет | Скорость, если поддерживается |
instructions | string | Нет | Стиль произношения для совместимых моделей |
Набор голосов, форматов и ограничение длины зависят от модели
Для eleven-v3 используйте response_format: "mp3" или "pcm". Значения wav, opus, flac и aac отклоняются провайдером. Допустимый speed находится в диапазоне от 0.7 до 1.2 включительно
Gemini TTS и HeyGen Voice требуют response_format: "pcm". Такой ответ содержит сырые PCM-данные, частота и число каналов указаны в Content-Type, добавляйте контейнер WAV перед сохранением в .wav
Для seed-audio-1-0 можно передать описание голоса в input без поля voice. Голос alloy для этой модели не подходит
Пример
Пример использует eleven-v3 и голос george. Установите пакет openai и задайте GETAPI_API_KEY
import os
from pathlib import Path
from openai import OpenAI
client = OpenAI(
base_url="https://api.getapi.ru/v1",
api_key=os.environ["GETAPI_API_KEY"],
max_retries=0,
)
response = client.audio.speech.create(
model="eleven-v3",
voice="george",
input="Здравствуйте, ваша заявка принята",
response_format="mp3",
)
Path("speech.mp3").write_bytes(response.read())Ответ
Успешный ответ содержит аудиоданные, а не JSON с текстом. При прямом HTTP-вызове сначала проверьте статус и Content-Type, затем сохраняйте тело
При ошибке API может вернуть JSON. Не сохраняйте его как аудиофайл только из-за расширения .mp3
Потоковая загрузка
Побайтовое чтение HTTP-ответа позволяет начать передачу файла до полного скачивания. Это не SSE и не двусторонний голосовой сеанс
Поддержка Realtime не следует из поддержки Speech API
Аудио через Chat Completions
gpt-audio-mini использует отдельный сценарий с аудиовыводом через POST /v1/chat/completions
{
"model": "gpt-audio-mini",
"messages": [{"role": "user", "content": "Скажи: привет"}],
"modalities": ["text", "audio"],
"audio": {"voice": "alloy", "format": "pcm16"},
"stream": true
}Аудиофрагменты приходят в choices[].delta.audio.data как base64. Декодируйте их по порядку и собирайте поток PCM16. Это сырые аудиоданные без заголовка WAV, для воспроизведения задайте частоту и число каналов из контракта модели
Проверяйте завершение потока и usage. Не считайте этот сценарий эквивалентом вызова Speech API, поддержка непотокового вывода зависит от модели
Speech API отклоняет provider.only, provider.order и provider.ignore с кодом provider_routing. Правила Chat Completions на этот метод не распространяются, см. маршрутизацию
Стоимость
Единица тарификации зависит от модели и может учитывать текстовые или аудиотокены, символы либо другие параметры. Актуальные условия смотрите в стоимости и учёте
Распознавание существующего аудио описано в Speech to Text
Статус выполнения аудио не подтверждает окончательный расчёт, при manual_reconciliation проверьте резерв по правилам списания