Мультимодальность

Аудио

Как передавать аудио в модели и получать звуковой ответ через AllTokens.

Через AllTokens можно и отправлять аудиофайлы в совместимые модели, и получать от некоторых моделей звуковой ответ. Ниже собраны оба сценария: звуковой ввод и звуковой результат.

Звуковой ввод

Аудио можно отправлять в модели для расшифровки, анализа речи и других сценариев обработки звука. Для этого используется POST /api/v1/chat/completions и тип содержимого input_audio внутри messages.

Аудио передаётся только в base64. Прямая ссылка на файл для этого сценария не используется.

Ищите подходящие модели в каталоге AllTokens по поддержке аудиоввода. В первую очередь смотрите на architecture.input_modalities.

В примерах ниже используется модель google/gemini-2.5-flash.

Как отправить аудиофайл

import base64
import requests

def encode_audio_to_base64(audio_path):
    with open(audio_path, "rb") as audio_file:
        return base64.b64encode(audio_file.read()).decode("utf-8")

base64_audio = encode_audio_to_base64("path/to/your/audio.wav")

url = "https://api.alltokens.ru/api/v1/chat/completions"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

payload = {
    "model": "google/gemini-2.5-flash",
    "messages": [
        {
            "role": "user",
            "content": [
                {
                    "type": "text",
                    "text": "Расшифруй этот аудиофайл."
                },
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": base64_audio,
                        "format": "wav"
                    }
                }
            ]
        }
    ]
}

response = requests.post(url, headers=headers, json=payload)
print(response.json())

Поддерживаемые форматы аудиоввода

Поддерживаемые форматы зависят от модели и поставщика. Часто встречаются:

  • wav
  • mp3
  • aiff
  • aac
  • ogg
  • flac
  • m4a
  • pcm16
  • pcm24

Точный набор форматов зависит от модели. Если формат важен, проверьте страницу модели в каталоге AllTokens перед интеграцией.

Генерация аудио

Некоторые модели умеют не только возвращать текст, но и синтезировать звук. Для этого в запросе нужно указать modalities и объект audio.

В примерах ниже используется модель openai/gpt-4o-audio-preview.

Как запросить генерацию аудио

Чтобы получить аудиоответ, используйте:

  • modalities: ["text", "audio"]
  • audio.voice — голос
  • audio.format — формат звука
  • stream: true — аудио приходит потоково
import base64
import json
import requests

url = "https://api.alltokens.ru/api/v1/chat/completions"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
    "Content-Type": "application/json"
}

payload = {
    "model": "openai/gpt-4o-audio-preview",
    "messages": [
        {
            "role": "user",
            "content": "Скажи привет дружелюбным тоном."
        }
    ],
    "modalities": ["text", "audio"],
    "audio": {
        "voice": "alloy",
        "format": "wav"
    },
    "stream": True
}

response = requests.post(url, headers=headers, json=payload, stream=True)

audio_data_chunks = []
transcript_chunks = []

for line in response.iter_lines():
    if not line:
        continue
    decoded = line.decode("utf-8")
    if not decoded.startswith("data: "):
        continue
    data = decoded[len("data: "):]
    if data.strip() == "[DONE]":
        break

    chunk = json.loads(data)
    delta = chunk["choices"][0].get("delta", {})
    audio = delta.get("audio", {})

    if audio.get("data"):
        audio_data_chunks.append(audio["data"])
    if audio.get("transcript"):
        transcript_chunks.append(audio["transcript"])

transcript = "".join(transcript_chunks)
print(f"Transcript: {transcript}")

full_audio_b64 = "".join(audio_data_chunks)
audio_bytes = base64.b64decode(full_audio_b64)

with open("output.wav", "wb") as f:
    f.write(audio_bytes)

Формат потокового чанка

При звуковом результате аудиоданные и текст расшифровки приходят по частям в delta.audio:

{
  "choices": [
    {
      "delta": {
        "audio": {
          "data": "<base64-чанк аудио>",
          "transcript": "Привет"
        }
      }
    }
  ]
}

Настройки audio

ПолеЧто означает
voiceГолос для синтеза речи, например alloy, echo, fable, onyx, nova, shimmer
formatФормат выходного звука, например wav, mp3, flac, opus, pcm16

Набор голосов и форматов зависит от выбранной модели. Если нужна конкретная связка, проверьте страницу модели в каталоге AllTokens.

Частые вопросы

Нет, для звукового ввода аудио передаётся только в base64.

Потому что аудиоданные приходят по частям через SSE, в delta.audio.

Да, для этого обычно используют modalities: ["text", "audio"].