Converter voz em texto com a API SpeechRecognition

A API SpeechRecognition é uma API Web padrão que permite a conversão de voz, de uma origem de áudio, como um ficheiro de multimédia ou microfone do dispositivo, em texto, diretamente a partir do código JavaScript de uma extensão de site ou browser. Este artigo centra-se na utilização da API SpeechRecognition com o modelo de reconhecimento de voz no dispositivo (ou local) incorporado no Microsoft Edge.

Para obter mais informações sobre a API, veja API de Voz Na Web, na MDN.

Conteúdo detalhado:

Disponibilidade do modelo de reconhecimento de voz local

O modelo de reconhecimento de voz local está disponível no Microsoft Edge Canary ou Dev (versão 150.0.4076 ou posterior). Consulte Tornar-se um Microsoft Edge Insider.

Benefícios do modelo de reconhecimento de voz local

Ao utilizar a API SpeechRecognition com o modelo local no Microsoft Edge, o reconhecimento de voz ocorre no mesmo dispositivo onde a voz é capturada. Esta abordagem tem os seguintes benefícios em comparação com as soluções baseadas na cloud:

  • Custo reduzido: Não existem custos associados à utilização de um serviço de reconhecimento de cloud.

  • Independência da rede: Para além da transferência do modelo inicial, não existe latência de rede ao utilizar esta API para converter voz e a API também pode ser utilizada quando o dispositivo está offline.

  • Privacidade melhorada: A entrada de voz no modelo nunca sai do dispositivo e não é recolhida para preparar modelos de IA.

Disponibilidade do modelo

É necessária uma transferência inicial do modelo na primeira vez que um site utiliza o modelo de reconhecimento de voz local com a API SpeechRecognition.

Pode monitorizar a transferência do modelo com a promessa devolvida pelo método da API install() SpeechRecognition. Veja Verificar se o modelo local já está instalado, abaixo.

Ativar o reconhecimento de voz local no Microsoft Edge

Para utilizar o modelo de reconhecimento de voz local com a API SpeechRecognition, tem de ativar a funcionalidade no Microsoft Edge Canary ou Dev. Para ativar o reconhecimento de voz com o modelo no dispositivo:

  1. Certifique-se de que está a utilizar o Microsoft Edge Canary ou o Dev (versão 150.0.4076 ou mais recente). Consulte Tornar-se um Microsoft Edge Insider.

  2. No Microsoft Edge Canary ou Dev, abra um novo separador ou janela e aceda a edge://flags.

  3. Na caixa de pesquisa na parte superior da página, introduza Reconhecimento de Voz com o modelo no dispositivo.

  4. Na lista pendente Reconhecimento de Voz com modelo no dispositivo , selecione Ativado e, em seguida, clique no botão Reiniciar no canto inferior direito:

    Página sinalizadores do browser

Veja um exemplo de trabalho

Para ver a API SpeechRecognition em ação e ver o código de demonstração:

  1. Ative o reconhecimento de voz local no Microsoft Edge, conforme descrito acima.

  2. No Microsoft Edge Canary ou Dev, abra um separador ou janela e aceda a Ambiente de trabalho da API de Reconhecimento de Voz.

  3. Na faixa de informações na parte superior, marcar o status: inicialmente, lê a API SpeechRecognition pronta. Clique em Iniciar para começar.

  4. Na lista pendente Idioma de entrada, selecione o idioma que pretende utilizar para reconhecimento de voz.

  5. Na lista pendente Origem de áudio, selecione uma origem de áudio para reconhecimento de voz:

    • Selecione Microfone para utilizar o microfone do dispositivo como origem de áudio.
    • Selecione Ficheiro para utilizar um ficheiro de áudio ou vídeo do seu dispositivo como origem de áudio.
  6. Se tiver selecionado Ficheiro como origem de áudio, é apresentada uma secção Ficheiro de multimédia . Clique no botão Escolher Ficheiro e, em seguida, selecione um ficheiro de áudio ou vídeo a partir do seu dispositivo.

  7. Clique no botão Iniciar.

    Se ainda não transferiu o modelo de reconhecimento de voz local para o idioma selecionado, a transferência é iniciada e a faixa de informações indica Instalar o modelo no dispositivo para en-US...:

    Instalação do modelo de reconhecimento de voz no dispositivo

    Após a instalação do modelo, a transcrição de texto é apresentada na página:

    Conversão de voz em texto

  8. Para parar de converter voz em texto, em qualquer altura, clique no botão Parar .

    A transcrição também pode parar automaticamente após um longo período de silêncio no áudio de entrada.

Veja também:

Utilizar a API SpeechRecognition com reconhecimento local no seu site

As secções seguintes descrevem como utilizar a API SpeechRecognition com o reconhecimento de voz local no código do seu site. Para obter mais detalhes sobre a própria API, veja API de Voz Na Web, na MDN.

Verificar se a API é suportada e instanciar um objeto SpeechRecognition

Para garantir que a API SpeechRecognition é suportada no browser, teste se o SpeechRecognition objeto está disponível:

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

Se a API for suportada, crie uma nova SpeechRecognition instância para começar a utilizar a API:

const recognition = new SpeechRecognition();

Veja também:

Escolher um idioma de entrada e optar ativamente por participar no reconhecimento local

Para configurar o reconhecimento de voz com um modelo local, especifique um idioma de entrada e defina a opção processLocally :

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

A partir do Microsoft Edge 150.0.4076, os seguintes idiomas de entrada são suportados para reconhecimento de voz local:

  • Inglês (en-US)
  • Alemão (de-DE)
  • Italiano (it-IT)
  • Português (pt-PT)
  • Espanhol (es-ES)
  • Coreano (ko-KR)

Espera-se que o suporte de idiomas se expanda em versões futuras.

Defina também as continuous opções e interimResults para true transcrever sessões de áudio longas sem parar e receber resultados provisórios:

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

Veja também:

Verificar se o modelo local já está instalado

Antes de iniciar o reconhecimento, marcar se o modelo local está disponível para o idioma selecionado através do SpeechRecognition.available() método .

Se o modelo ainda não estiver instalado, acione a instalação com o SpeechRecognition.install() método e aguarde que o modelo seja concluído antes de iniciar o reconhecimento:

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

A promessa devolvida por SpeechRecognition.install() resolve quando a instalação é bem-sucedida ou falha.

Veja também:

Iniciar reconhecimento de voz

Depois de se certificar de que a API e o modelo estão prontos, para iniciar o reconhecimento, utilize o start() método .

Quando chamado sem um parâmetro, o start() método reconhece o áudio do microfone do utilizador:

recognition.start();

Para reconhecer áudio de um ficheiro de multimédia em vez de do microfone do utilizador, transmita uma MediaStreamTrack instância como um argumento para o start() método . Por exemplo, pode criar uma MediaStreamTrack instância ao criar uma MediaStreamDestinationNode instância com a API WebAudio:

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

Veja também:

Parar o reconhecimento explicitamente e no lado multimédia

Para parar o reconhecimento, utilize o stop() método :

recognition.stop();

Também pode optar por parar o reconhecimento quando a entrada de multimédia terminar, utilizando o onended processador de eventos do elemento multimédia que está a utilizar como entrada. Por exemplo, se estiver a utilizar uma HTMLAudioElement ou HTMLVideoElement como origem de áudio, pode configurar o processador de eventos da seguinte forma:

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

Veja também:

Enviar comentários

Estamos interessados em ouvir o seu feedback sobre:

  • O modelo de reconhecimento de voz local.
  • O desempenho do modelo de reconhecimento de voz local.
  • Quaisquer outras melhorias que gostaria de ver para os seus casos de utilização.

Envie feedback ao adicionar um comentário ao problema de feedback da API SpeechRecognition.

Confira também

Microsoft:

MDN:

GitHub: