Conversión de voz en texto con speechRecognition API

SpeechRecognition API es una API web estándar que permite convertir la voz, desde un origen de audio como un archivo multimedia o un micrófono de dispositivo, en texto, directamente desde el código JavaScript de las extensiones de un sitio web o explorador. Este artículo se centra en el uso de SpeechRecognition API con el modelo de reconocimiento de voz en el dispositivo (o local) integrado en Microsoft Edge.

Para obtener más información sobre la API, consulte Web Speech API, en MDN.

Contenido detallado:

Disponibilidad del modelo de reconocimiento de voz local

El modelo de reconocimiento de voz local está disponible en Microsoft Edge Canary o Dev (versión 150.0.4076 o posterior). Consulte Convertirse en un insider de Microsoft Edge.

Ventajas del modelo de reconocimiento de voz local

Cuando se usa speechRecognition API con el modelo local en Microsoft Edge, el reconocimiento de voz se produce en el mismo dispositivo donde se captura la voz. Este enfoque tiene las siguientes ventajas en comparación con las soluciones basadas en la nube:

  • Costo reducido: No hay ningún costo asociado al uso de un servicio de reconocimiento en la nube.

  • Independencia de red: Más allá de la descarga del modelo inicial, no hay latencia de red al usar esta API para convertir voz y la API también se puede usar cuando el dispositivo está sin conexión.

  • Privacidad mejorada: La entrada de voz en el modelo nunca sale del dispositivo y no se recopila para entrenar modelos de inteligencia artificial.

Disponibilidad del modelo

Se requiere una descarga inicial del modelo la primera vez que un sitio web usa el modelo de reconocimiento de voz local con speechRecognition API.

Puede supervisar la descarga del modelo mediante la promesa devuelta por el método de la API install() SpeechRecognition. Consulte Comprobación de si el modelo local ya está instalado, a continuación.

Habilitación del reconocimiento de voz local en Microsoft Edge

Para usar el modelo de reconocimiento de voz local con speechRecognition API, debe habilitar la característica en Microsoft Edge Canary o Dev. Para habilitar el reconocimiento de voz mediante el modelo en el dispositivo:

  1. Asegúrese de que usa Microsoft Edge Canary o Dev (versión 150.0.4076 o posterior). Consulte Convertirse en un insider de Microsoft Edge.

  2. En Microsoft Edge Canary o Dev, abra una nueva pestaña o ventana y vaya a edge://flags.

  3. En el cuadro de búsqueda de la parte superior de la página, escriba Reconocimiento de voz con el modelo en el dispositivo.

  4. En la lista desplegable Reconocimiento de voz con modelo en el dispositivo , seleccione Habilitado y, a continuación, haga clic en el botón Reiniciar de la parte inferior derecha:

    Página Marcas del explorador

Consulte un ejemplo de trabajo

Para ver speechrecognition API en acción y ver el código de demostración:

  1. Habilite el reconocimiento de voz local en Microsoft Edge, como se describió anteriormente.

  2. En Microsoft Edge Canary o Dev, abra una pestaña o ventana y vaya al área de juegos de SpeechRecognition API.

  3. En el banner de información de la parte superior, compruebe el estado: inicialmente lee SpeechRecognition API listo. Haga clic en Iniciar para comenzar.

  4. En la lista desplegable Idioma de entrada , seleccione el idioma que desea usar para el reconocimiento de voz.

  5. En la lista desplegable Origen de audio, seleccione un origen de audio para el reconocimiento de voz:

    • Seleccione Micrófono para usar el micrófono del dispositivo como origen de audio.
    • Seleccione Archivo para usar un archivo de audio o vídeo del dispositivo como origen de audio.
  6. Si seleccionó Archivo como origen de audio, se mostrará una sección Archivo multimedia . Haga clic en el botón Elegir archivo y, a continuación, seleccione un archivo de audio o vídeo desde el dispositivo.

  7. Haga clic en el botón de Inicio.

    Si aún no ha descargado el modelo de reconocimiento de voz local para el idioma seleccionado, se inicia la descarga y el banner de información lee Instalación del modelo en el dispositivo para en-US...:

    Instalación del modelo de reconocimiento de voz en el dispositivo

    Una vez instalado el modelo, la transcripción de texto se muestra en la página:

    Conversión de voz en texto

  8. Para detener la conversión de voz en texto, en cualquier momento, haga clic en el botón Detener .

    La transcripción también podría detenerse automáticamente después de un largo período de silencio en el audio de entrada.

Vea también:

Uso de speechRecognition API con reconocimiento local en el sitio web

En las secciones siguientes se describe cómo usar speechRecognition API con el reconocimiento de voz local en el código del sitio web. Para obtener más información sobre la propia API, consulte Web Speech API, en MDN.

Compruebe si se admite la API y cree una instancia de un objeto SpeechRecognition.

Para asegurarse de que la API SpeechRecognition se admite en el explorador, pruebe si el SpeechRecognition objeto está disponible:

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

Si se admite la API, cree una nueva SpeechRecognition instancia para empezar a usar la API:

const recognition = new SpeechRecognition();

Vea también:

Elegir un idioma de entrada y participar en el reconocimiento local

Para configurar el reconocimiento de voz mediante un modelo local, especifique un idioma de entrada y establezca la processLocally opción :

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

A partir de Microsoft Edge 150.0.4076, se admiten los siguientes lenguajes de entrada para el reconocimiento de voz local:

  • Inglés (en-US)
  • Alemán (de-DE)
  • Italiano (it-IT)
  • Portugués (pt-PT)
  • Español (es-es)
  • Coreano (ko-KR)

Se espera que la compatibilidad con idiomas se expanda en versiones futuras.

Establezca también las continuous opciones y interimResults en true para transcribir sesiones de audio largas sin detener y recibir resultados provisionales:

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

Vea también:

Compruebe si el modelo local ya está instalado

Antes de iniciar el reconocimiento, compruebe si el modelo local está disponible para el idioma seleccionado mediante el SpeechRecognition.available() método .

Si el modelo aún no está instalado, desencadene la instalación mediante el SpeechRecognition.install() método y espere a que el modelo se complete antes de iniciar el reconocimiento:

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;
}

La promesa devuelta por SpeechRecognition.install() se resuelve cuando la instalación se realiza correctamente o se produce un error.

Vea también:

Inicio del reconocimiento de voz

Después de asegurarse de que la API y el modelo están listos, para iniciar el reconocimiento, use el start() método .

Cuando se llama a sin un parámetro, el método reconoce el start() audio del micrófono del usuario:

recognition.start();

Para reconocer el audio de un archivo multimedia en lugar de desde el micrófono del usuario, pase una MediaStreamTrack instancia como argumento al start() método . Por ejemplo, puede crear una MediaStreamTrack instancia mediante la MediaStreamDestinationNode API de WebAudio:

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

Vea también:

Detener el reconocimiento de forma explícita y en el extremo multimedia

Para detener el reconocimiento, use el stop() método :

recognition.stop();

También puede optar por detener el reconocimiento cuando finalice la entrada multimedia, mediante el onended controlador de eventos del elemento multimedia que se usa como entrada. Por ejemplo, si usa o HTMLAudioElementHTMLVideoElement como origen de audio, puede configurar el controlador de eventos de la siguiente manera:

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

Vea también:

Enviar comentarios

Estamos interesados en escuchar sus comentarios sobre:

  • Modelo de reconocimiento de voz local.
  • Rendimiento del modelo de reconocimiento de voz local.
  • Cualquier otra mejora que quiera ver para los casos de uso.

Envíe comentarios agregando un comentario al problema de comentarios de SpeechRecognition API.

Vea también

Microsoft:

MDN:

GitHub: