Преобразование речи в текст с помощью API SpeechRecognition

API SpeechRecognition — это стандартный веб-API, который позволяет преобразовывать речь из звукового источника, например файла мультимедиа или микрофона устройства, в текст, непосредственно из кода JavaScript веб-сайта или расширений браузера. В этой статье рассматривается использование API SpeechRecognition с моделью распознавания речи на устройстве (или локальной), встроенной в Microsoft Edge.

Дополнительные сведения об API см. в разделе ВЕБ-API распознавания речи на сайте MDN.

Подробное содержимое:

Доступность локальной модели распознавания речи

Локальная модель распознавания речи доступна в Microsoft Edge Canary или Dev (версия 150.0.4076 или более поздняя). См . статью Стать участником программы предварительной оценки Microsoft Edge.

Преимущества локальной модели распознавания речи

При использовании API SpeechRecognition с локальной моделью в Microsoft Edge распознавание речи происходит на том же устройстве, где записывается речь. Этот подход имеет следующие преимущества по сравнению с облачными решениями:

  • Снижение стоимости: Использование облачной службы распознавания не связано с затратами.

  • Независимость сети: Помимо начальной загрузки модели, при использовании этого API для преобразования речи не возникает задержки в сети, и API также можно использовать, когда устройство находится в автономном режиме.

  • Улучшенная конфиденциальность: Речевой ввод в модель никогда не покидает устройство и не собирается для обучения моделей ИИ.

Доступность модели

Первоначальное скачивание модели требуется при первом использовании веб-сайта локальной модели распознавания речи с API SpeechRecognition.

Вы можете отслеживать скачивание модели с помощью обещания, возвращаемого методом API install() SpeechRecognition. См . раздел Проверка уже установленной локальной модели ниже.

Включение локального распознавания речи в Microsoft Edge

Чтобы использовать локальную модель распознавания речи с API SpeechRecognition, необходимо включить эту функцию в Microsoft Edge Canary или Dev. Чтобы включить распознавание речи с помощью модели на устройстве, выполните следующие действия:

  1. Убедитесь, что вы используете Microsoft Edge Canary или Dev (версии 150.0.4076 или более поздней). См . статью Стать участником программы предварительной оценки Microsoft Edge.

  2. В Microsoft Edge Canary или Dev откройте новую вкладку или окно и перейдите по адресу edge://flags.

  3. В поле поиска в верхней части страницы введите Распознавание речи с помощью модели на устройстве.

  4. В раскрывающемся списке Распознавание речи с моделью на устройстве выберите Включено, а затем нажмите кнопку Перезапустить в правом нижнем углу:

    Страница

См. рабочий пример

Чтобы увидеть API SpeechRecognition в действии и просмотреть демонстрационный код:

  1. Включите локальное распознавание речи в Microsoft Edge, как описано выше.

  2. В Microsoft Edge Canary или Dev откройте вкладку или окно и перейдите на игровую площадку API SpeechRecognition.

  3. В информационном баннере в верхней части проверка состояние: изначально он считывает API SpeechRecognition ready. Нажмите кнопку Пуск, чтобы начать.

  4. В раскрывающемся списке Язык ввода выберите язык, который нужно использовать для распознавания речи.

  5. В раскрывающемся списке Источник звука выберите источник звука для распознавания речи:

    • Выберите Микрофон , чтобы использовать микрофон устройства в качестве источника звука.
    • Выберите Файл, чтобы использовать звуковой или видеофайл с устройства в качестве источника звука.
  6. Если в качестве источника звука выбран файл , отобразится раздел Файл мультимедиа . Нажмите кнопку Выбрать файл и выберите звуковой или видеофайл с устройства.

  7. Нажмите кнопку Пуск.

    Если вы еще не скачали локальную модель распознавания речи для выбранного языка, начнется скачивание, а на информационном баннере появится сообщение Установка модели на устройстве для en-US...:

    Установка модели распознавания речи на устройстве

    После установки модели на странице отображается транскрибирование текста:

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

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

    Транскрибирование также может остановиться автоматически после длительного периода молчания во входном звуке.

См. также:

Использование API SpeechRecognition с локальным распознаванием на веб-сайте

В следующих разделах описывается использование API SpeechRecognition с локальным распознаванием речи в коде веб-сайта. Дополнительные сведения о самом API см. в разделе ВЕБ-API распознавания речи на сайте MDN.

Проверьте, поддерживается ли API, и создайте экземпляр объекта SpeechRecognition.

Чтобы убедиться, что API SpeechRecognition поддерживается в браузере, проверьте, доступен ли SpeechRecognition объект:

if (!window.SpeechRecognition) {
  console.log("The SpeechRecognition API is not available in this browser.");
} else {
  console.log("The SpeechRecognition API is available.");
}

Если API поддерживается, создайте новый SpeechRecognition экземпляр, чтобы начать использовать API:

const recognition = new SpeechRecognition();

См. также:

Выбор языка ввода и согласие на локальное распознавание

Чтобы настроить распознавание речи с помощью локальной модели, укажите язык ввода и задайте processLocally параметр:

recognition.lang = "en-US";
recognition.processLocally = true;

По состоянию на Microsoft Edge 150.0.4076 для локального распознавания речи поддерживаются следующие языки ввода:

  • Английский (США)
  • Немецкий (de-DE)
  • Итальянский — (it-IT)
  • Португальский (pt-PT)
  • Испанский (es-ES)
  • Корейский (ko-KR)

Ожидается, что поддержка языков будет расширена в будущих версиях.

Кроме того, continuous задайте параметры и interimResults для true транскрибирования длительных звуковых сеансов без остановки и получения промежуточных результатов:

recognition.continuous = true;
recognition.interimResults = true;

См. также:

Проверьте, установлена ли локальная модель.

Перед началом распознавания проверка, доступна ли локальная модель для выбранного SpeechRecognition.available() языка с помощью метода .

Если модель еще не установлена, активируйте установку с помощью SpeechRecognition.install() метода и дождитесь завершения модели, прежде чем начать распознавание:

async function ensureModelReady(lang) {
  // Check if the model is already available.
  const availability = await SpeechRecognition.available({
    langs: [lang],
    processLocally: true,
  });

  // If the model is already available, proceed to recognition.
  if (availability === "available") {
    return true;
  }

  // If the model is not available but can be downloaded,
  // trigger the installation and wait for it to complete
  // before proceeding to recognition.
  if (availability === "downloadable" || availability === "downloading") {
    const installed = await SpeechRecognition.install({
      langs: [lang],
      processLocally: true,
    });

    if (!installed) {
      throw new Error(`Failed to install local model for ${lang}.`);
    }

    return true;
  }

   return false;
}

Обещание, возвращаемое методом SpeechRecognition.install() , разрешается при успешной или неудачной установке.

См. также:

Запуск распознавания речи

Убедившись, что API и модель готовы, для начала распознавания используйте start() метод .

При вызове без параметра start() метод распознает звук с микрофона пользователя:

recognition.start();

Чтобы распознать звук из файла мультимедиа, а не из микрофона пользователя, передайте MediaStreamTrack экземпляр в качестве аргумента в start() метод . Например, можно создать MediaStreamTrack экземпляр с помощью MediaStreamDestinationNode API WebAudio:

const audioContext = new AudioContext();
const mediaStreamDestination = audioContext.createMediaStreamDestination();
recognition.start(mediaStreamDestination.stream.getAudioTracks()[0]);

См. также:

Остановка распознавания явным образом и на стороне мультимедиа

Чтобы остановить распознавание, используйте stop() метод :

recognition.stop();

Вы также можете остановить распознавание при завершении ввода мультимедиа с помощью onended обработчика событий элемента мультимедиа, который вы используете в качестве входных данных. Например, если вы используете HTMLAudioElement или HTMLVideoElement в качестве источника звука, можно настроить обработчик событий следующим образом:

mediaElement.onended = () => recognition.stop();

См. также:

Отправка отзывов

Мы заинтересованы в том, чтобы услышать ваши отзывы о:

  • Локальная модель распознавания речи.
  • Производительность локальной модели распознавания речи.
  • Любые другие улучшения, которые вы хотели бы видеть для ваших вариантов использования.

Отправьте отзыв, добавив комментарий к проблеме обратной связи API SpeechRecognition.

См. также

Microsoft:

MDN:

Github: