Преобразование речи в текст
Расшифровывайте аудио в текст через выделенный эндпоинт 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 с распознанным текстом и статистикой использования.
Структура запроса
model— идентификатор STT-модели (например,openai/whisper-large-v3)input_audio.data— содержимое аудиофайла в кодировке base64input_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 предлагает два способа обработки аудио:
-
Преобразование речи в текст (эта страница): выделенный эндпоинт
/api/v1/audio/transcriptions, оптимизированный под транскрибацию. Возвращает структурированный JSON с текстом и статистикой использования. Лучший выбор для перевода аудио в текст. -
Аудио во входных данных чата (Аудио входные данные): аудио передаётся в составе запроса
/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