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

Вы можете внедрить распознавание речи в свои приложения с помощью API сервиса SmartSpeech.

Способы распознавания

Ответ выдается только после обработки всей аудиозаписи. Максимальный размер аудио – 2 Мб, максимальная длина – одна минута. Для многоканального аудио распознается только первый канал.

Используется, если требуется распознавание речи в процессе ее записи: протоколы телефонии, запись аудио на мобильных устройствах и прочее. Возможно отображение промежуточных результатов и автоматическое определение конца фразы. Максимальный размер аудио – 1 Гб. Для многоканального аудио распознается только первый канал.

Подходит для распознавания многоканальных аудиозаписей. При работе стоит учитывать, что процесс асинхронного распознавания может быть дольше синхронного, поэтому этот тип подходит для случаев, когда длительность распознавания не важна. Максимальный размер аудио – 1 Гб.

Доступные кодировки аудио

Для распознавания доступны аудиофайлы со следующими кодировками:

  • PCM_S16LE

    • PCM signed 16bit little-endian, с заголовком WAV или без.
    • Частота дискретизации – от 8 до 96 кГц. Если без заголовка, то параметр sample_rate – обязательный.
    • Максимальное количество каналов – 8.
    • Значение Content-Type – audio/x-pcm;bit=16;rate=XXX.
  • OPUS

    • Opus в контейнере ogg.
    • Параметр sample_rate – необязательный.
    • Поддерживается только одноканальный звук.
    • Значение Content-Type – audio/ogg;codecs=opus.
  • MP3

    • MP3 (кроме MPEG2.5).
    • Параметр sample_rate – необязательный.
    • Максимальное количество каналов – 2.
    • Значение Content-Type – audio/mpeg.
  • FLAC

    • FLAC
    • Параметр sample_rate – необязательный.
    • Максимальное количество каналов – 8.
    • Значение Content-Type – audio/flac.
  • ALAW

    • G.711 A-law, с заголовком WAV или без.
    • Частота дискретизации – от 8 до 96 кГц. Если без заголовка, то параметр sample_rate – обязательный.
    • Максимальное количество каналов – 8.
    • Значение Content-Type – audio/pcma;rate=XXX.
  • MULAW

    • G.711 μ-law, с заголовком WAV или без.
    • Частота дискретизации – от 8 до 96 кГц. Если без заголовка, то параметр sample_rate – обязательный.
    • Максимальное количество каналов – 8.
    • Значение Content-Type – audio/pcmu;rate=XXX.

Языковые модели

Чтобы повысить точность распознавания, укажите языковую модель, которую должен использовать сервис. Модель должна соответствовать частоте дискретизации.

Поддерживаемые модели:

  • general – общая модель, для звука 16 кГц и больше. Рекомендуем начать с нее.
  • media – модель, которая обучена понимать фамилии актеров, артистов, названия музыкальных групп, треков, фильмов – все, что связано с медиа-контентом. Частота – 16 кГц и больше.
  • callcenter – модель, предназначенная для телефонии. Частота – меньше 16 кГц.

Как получить текст из аудио

Для полноценной работы с распознаванием речи необходимо клиентское приложение. При его разработке используйте описание API для распознавания речи. Клиентское приложение общается с сервисом SmartSpeech. Например, для потокового распознавания (gRPC) процесс в зависимости от настроек выглядит следующим образом:

  1. Приложение отправляет gRPC-запрос к методу Recognize сервиса SmartSpeech. В сообщениях рекомендуется отправлять следующие опции распознавания:

    • В заголовке — информация для аутентификации.
    • В первом сообщении — сообщение RecognitionOptions с описанием параметров распознавания. – В последующих сообщениях — чанки звука для распознавания.
  2. Аудиопоток передается в сообщениях RecognitionRequest.audio_chunk.
  3. В ответ приходят сообщения RecognitionResponse, содержащие нормализованный и ненормализованный текст в полях Hypothesis.normalized_text и Hypothesis.text.

Примеры клиентских приложений вы можете найти на нашей странице на GitHub.

Как улучшить распознавание

Распознавание речи можно сильно улучшить использованием хинтов.

Хинты — это одноразовые подсказки для сервиса распознавания речи, помогающие правильно понять речь пользователя в определенный момент времени. Например, когда приложение ожидает от пользователя конкретный ответ, этот ответ заранее придет в сервис в виде хинтов.

Подсказка работает только для следующего ответа пользователя. После использования хинтов процесс распознавания речи пользователя возвращается к ее обработке без подсказок.

Подробнее об использовании хинтов вы можете прочитать в статье Хинты.

Добавить хинты вы можете при потоковом и асинхронном распознавании.

Заметили ошибку?

Выделите текст и нажмите Ctrl + Enter, чтобы сообщить нам о ней