Загрузка...

Преобразование речи в текст

Расшифровывайте аудио в текст через выделенный эндпоинт RouterAI API.

RouterAI поддерживает преобразование речи в текст (STT, speech-to-text) через выделенный эндпоинт /api/v1/audio/transcriptions. Отправьте аудио в кодировке base64 и получите JSON-ответ с распознанным текстом и статистикой использования.

Примечание: Аудио передаётся как строка base64 (сырые байты, не data URI). Расшифровку выполняют только модели с поддержкой транскрибации.

Поиск моделей

Модели с поддержкой STT можно найти на нашей странице моделей, отфильтровав по модальности аудио. Примеры моделей: openai/whisper-large-v3, openai/whisper-1.

Использование API

Отправьте POST запрос на /api/v1/audio/transcriptions с JSON-телом, содержащим аудио в base64. В ответ придёт JSON с распознанным текстом и статистикой использования.

Структура запроса

  1. model — идентификатор STT-модели (например, openai/whisper-large-v3)
  2. input_audio.data — содержимое аудиофайла в кодировке base64
  3. input_audio.format — формат файла (mp3, wav, flac, m4a, ogg, webm, aac)

Пример запроса cURL

# Кодируем аудиофайл в base64
BASE64_AUDIO=$(base64 -w 0 ./audio.wav)

curl -X POST https://routerai.ru/api/v1/audio/transcriptions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $ROUTERAI_API_KEY" \
  -d @- << EOF
{
  "model": "openai/whisper-large-v3",
  "input_audio": {
    "data": "$BASE64_AUDIO",
    "format": "wav"
  }
}
EOF

Пример на Python

import requests
import base64

with open("audio.wav", "rb") as f:
    base64_audio = base64.b64encode(f.read()).decode("utf-8")

response = requests.post(
    url="https://routerai.ru/api/v1/audio/transcriptions",
    headers={
        "Authorization": "Bearer $ROUTERAI_API_KEY",
        "Content-Type": "application/json",
    },
    json={
        "model": "openai/whisper-large-v3",
        "input_audio": {
            "data": base64_audio,
            "format": "wav",
        },
    },
)

result = response.json()
print(result["text"])

Пример на TypeScript (fetch)

import fs from 'fs';

const audioBuffer = await fs.promises.readFile('audio.wav');
const base64Audio = audioBuffer.toString('base64');

const response = await fetch('https://routerai.ru/api/v1/audio/transcriptions', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.ROUTERAI_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    model: 'openai/whisper-large-v3',
    input_audio: {
      data: base64Audio,
      format: 'wav',
    },
  }),
});

const result = await response.json();
console.log(result.text);

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

Параметр Тип Обязательный Описание
model string Да STT-модель для запроса (например, openai/whisper-large-v3)
input_audio object Да Аудио для расшифровки
input_audio.data string Да Аудио в кодировке base64 (сырые байты, не data URI)
input_audio.format string Да Формат аудио (mp3, wav, flac, m4a, ogg, webm, aac)
language string Нет Язык в формате ISO-639-1 (например, "ru", "en"). По умолчанию определяется автоматически
temperature number Нет Температура семплирования. Меньшие значения дают более детерминированный результат

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

Эндпоинт возвращает JSON-ответ с распознанным текстом:

{
  "text": "Привет, это тест преобразования речи в текст.",
  "usage": {
    "seconds": 9.2,
    "total_tokens": 113,
    "input_tokens": 83,
    "output_tokens": 30,
    "cost": 0.000508
  }
}

Поля ответа

Поле Тип Описание
text string Распознанный текст
usage.seconds number Длительность входного аудио в секундах
usage.total_tokens number Всего использовано токенов (вход + выход)
usage.input_tokens number Количество тарифицированных входных токенов
usage.output_tokens number Количество сгенерированных выходных токенов
usage.cost number Полная стоимость запроса в USD

Заголовки ответа

Заголовок Описание
X-Generation-Id Уникальный ID генерации для запроса — полезен для отслеживания и отладки

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

Поддерживаемые форматы зависят от провайдера. Распространённые форматы:

Формат MIME-тип Описание
wav audio/wav Несжатое аудио, наивысшее качество
mp3 audio/mpeg Сжатое аудио, широкая совместимость
flac audio/flac Сжатие без потерь
m4a audio/mp4 Аудио MPEG-4
ogg audio/ogg Аудио Ogg Vorbis
webm audio/webm Аудио WebM, частое для записей в браузере
aac audio/aac Advanced Audio Coding

Примечание: Проверьте документацию вашей модели, чтобы подтвердить поддерживаемые форматы. Не все модели поддерживают все форматы.

Тарификация

STT-модели используют разные схемы тарификации в зависимости от провайдера:

  • По длительности (например, OpenAI Whisper): оплата за секунду входного аудио
  • По токенам (например, новые модели OpenAI): оплата за входные/выходные токены, как у текстовых моделей

Стоимость каждой модели можно посмотреть на странице моделей. Поле usage.cost в ответе показывает фактическую стоимость запроса.

Отличия от аудио входных данных

RouterAI предлагает два способа обработки аудио:

  1. Преобразование речи в текст (эта страница): выделенный эндпоинт /api/v1/audio/transcriptions, оптимизированный под транскрибацию. Возвращает структурированный JSON с текстом и статистикой использования. Лучший выбор для перевода аудио в текст.

  2. Аудио во входных данных чата (Аудио входные данные): аудио передаётся в составе запроса /api/v1/chat/completions через тип контента input_audio. Модель обрабатывает аудио вместе с текстом и отвечает в диалоговом формате. Лучший выбор для анализа аудио, ответов на вопросы по содержанию и комбинирования модальностей.

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

  • Выбор формата: WAV даёт лучшее качество для транскрибации. MP3 и другие сжатые форматы работают хорошо, но могут немного снижать точность на пограничном аудио
  • Размер файла: Очень длинные записи разбивайте на сегменты покороче. Максимальный размер тела запроса — 32 МБ
  • Кодирование base64: Аудио передаётся как строка base64 (сырые байты, не data URI). В большинстве языков есть встроенные средства base64-кодирования
  • Указание языка: Если язык известен заранее, передайте language в формате ISO-639-1 — это повышает точность и скорость

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

Пустая или неверная расшифровка?

  • Убедитесь, что формат аудио совпадает с полем format в запросе
  • Проверьте, что качество аудио достаточно для распознавания
  • При необходимости укажите параметр language

Запрос завершается с ошибкой размера?

  • Тело запроса не должно превышать 32 МБ. Разбейте длинные записи на сегменты покороче
  • Сжатые форматы (MP3, AAC) дают меньший размер и передаются быстрее

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

  • Найдите доступные STT-модели на странице моделей
  • Проверьте корректность идентификатора модели (например, openai/whisper-large-v3, а не whisper-large-v3)

Ошибка аутентификации?

  • Убедитесь, что используете действительный API-ключ из вашего дашборда
  • Эндпоинт STT использует ту же аутентификацию, что и Chat Completions API