Документация NeuroAPI
Генерация

Распознавание речи

Как передать аудиофайл в Transcriptions API, получить текст и проверить качество распознавания

Для преобразования записи в текст используйте POST /v1/audio/transcriptions. Запрос передаёт файл через multipart/form-data, ответ в формате json содержит поле text.

Распознавание речи (ASR) и синтез речи (TTS) решают разные задачи. Если нужен диалог с мультимодальной моделью, сначала проверьте её формат запросов в документации генерации текста: наличие аудиовхода в каталоге само по себе не означает поддержку Transcriptions API.

Выбор модели

Проверьте модели, доступные вашему API-ключу, через GET /v1/models, затем сверьте назначение и цену в каталоге. В примере используется whisper-1; это пример идентификатора, а не гарантия доступности для любого ключа и тарифа.

Перед интеграцией сравните модели на коротких записях вашего языка, с характерным шумом, терминологией и числом говорящих. Поддержка языка, временных меток или разделения говорящих зависит от модели; не переносите эти свойства автоматически между моделями.

Минимальный запрос

Сохраните тестовую запись в файл recording.wav. Ключ передавайте из переменной окружения, не включайте его в клиентский код или репозиторий.

export NEUROAPI_KEY='YOUR_API_KEY'

curl --fail-with-body https://neuroapi.host/v1/audio/transcriptions \
  -H "Authorization: Bearer $NEUROAPI_KEY" \
  -F 'model=whisper-1' \
  -F 'file=@./recording.wav' \
  -F 'response_format=json'

Не задавайте Content-Type: application/json. При использовании -F curl самостоятельно формирует multipart/form-data и корректный boundary. file — содержимое локального файла, а не ссылка на него.

ПолеЗначениеТребование
modelТочный ID модели для распознаванияОбязательное
fileЗагружаемый аудиофайлОбязательное
response_formatjson в минимальном примереПри отсутствии используется json

Необязательные поля и дополнительные форматы ответа проверяйте для выбранной модели. Наличие поля в общей OpenAI-спецификации не гарантирует его поддержку каждой моделью NeuroAPI.

Разбор ответа

Пример формы ответа для response_format=json:

{
  "text": "Текст распознанной записи."
}

Сохраняйте text как текст, а не HTML. Дополнительные поля могут зависеть от модели и выбранного формата; минимальная интеграция не должна требовать временные метки, длительность или сведения о говорящих, если их поддержка не подтверждена.

Файлы, длительность и стоимость

Допустимые кодеки, контейнеры, размер и длительность записи зависят от модели. Единого подтверждённого лимита для всех моделей нет; параметры в текстовом поле «контекст» нельзя считать лимитом аудиофайла. Уточните ограничения выбранной модели до отправки длинной записи.

Начните с небольшого корректного файла. Для длинных записей можно заранее подготовить части с сохранённым порядком и временными смещениями; оцените, как границы частей влияют на распознавание. Каждый отправленный фрагмент является отдельным API-запросом.

Сверяйте стоимость с единицей измерения в каталоге цен. Число слов в полученном тексте не является универсальной мерой стоимости распознавания.

Проверка результата и обработка ошибок

Для сравнения качества подготовьте несколько записей с вручную проверенной расшифровкой. Оцените пропуски, ошибки в именах и терминах, пунктуацию и обработку тишины; при расчёте WER или CER используйте одинаковые правила нормализации для обеих моделей. Измеряйте время ответа на одинаковых файлах и отделяйте его от времени загрузки.

Если запрос отклонён, проверьте ключ, ID модели, наличие файла и его формат; затем разберите код ошибки. При таймауте или обрыве соединения обработка могла уже начаться. Не запускайте автоматическую повторную отправку аудиофайла: сначала проверьте историю запросов и расход в кабинете. Повторная отправка может создать дополнительную оплачиваемую операцию.

Авторизация · Лимиты · Сравнение моделей · Синтез речи

On this page