Web Speech API: Reconhecimento de Fala - JavaScript
O reconhecimento de fala é gerenciado pelo objeto SpeechRecognition
webkitSpeechRecognition
window
if (window.webkitSpeechRecognition) {
console.log("Reconhecimento de fala é suportado.");
} else {
console.log("Reconhecimento de fala NÃO é suportado.");
}
// Outra forma de verificação
if ("webkitSpeechRecognition" in window) {
console.log("Reconhecimento de fala é suportado.");
} else {
console.log("Reconhecimento de fala NÃO é suportado.");
}
O prefixo webkit
webkitSpeechRecognition
SpeechRecognition
Configuração do SpeechRecognition
O SpeechRecognition
: define ou retorna uma coleção de objetosgrammars
, que representam as gramáticas utilizadas.SpeechGrammar
: define ou retorna o idioma para reconhecimento. Caso não especificado, utiliza o valor do atributolang
do elementolang
.<html>
: determina se os resultados devem ser contínuos (continuous
) ou limitados a um único resultado (true
).false
: define se resultados intermediários devem ser retornados (interimResults
) ou não (true
).false
: estabelece o número máximo de alternativas para cada resultado. O padrão é 1.maxAlternatives
Métodos para Controle
O SpeechRecognition
: interrompe o reconhecimento sem tentar retornar resultados.abort()
: inicia o reconhecimento.start()
: finaliza o reconhecimento e tenta retornar resultados baseados no áudio já capturado.stop()
Eventos do Reconhecimento
O SpeechRecognition
: captura de áudio iniciado.audiostart
: captura de áudio finalizada.audioend
: serviço de reconhecimento desligado.end
: erro ocorrido.error
: resultado final não corresponde ao esperado.nomatch
: resultado retornado (palavra ou frase).result
: som detectado (ruído ou fala).soundstart
: detecção de som finalizada.soundend
: fala detectada.speechstart
: detecção de fala finalizada.speechend
: início da escuta pelo serviço de reconhecimento.start
Acessando os Resultados
Para acessar os resultados, é necessário adicionar um manipulador para o evento result. No exemplo abaixo, o evento fornece uma lista de resultados que podem ser explorados para acessar o texto reconhecido e o nível de confiança:
const recognition = new webkitSpeechRecognition();
recognition.onresult = function(event) {
const results = event.results; // Lista de resultados
const firstResult = results[0]; // Primeiro resultado
const firstAlternative = firstResult[0]; // Primeira alternativa
const transcript = firstAlternative.transcript; // Texto reconhecido
const confidence = firstAlternative.confidence; // Nível de confiança (0-1)
console.log(transcript);
console.log(confidence);
};
Exemplo Prático
Abaixo está uma página de exemplo que demonstra o uso do SpeechRecognition
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="utf-8" />
<title>Reconhecimento de Fala</title>
</head>
<body>
<button id="startBtn">Iniciar</button>
<button id="stopBtn">Parar</button>
<script>
const recognition = new webkitSpeechRecognition();
let index = 0;
recognition.onresult = function(event) {
const results = event.results;
const firstResult = results[index++];
const firstAlternative = firstResult[0];
const transcript = firstAlternative.transcript;
const confidence = firstAlternative.confidence;
console.log(transcript);
console.log(confidence);
};
document.getElementById("startBtn").addEventListener("click", () => {
if (window.webkitSpeechRecognition) {
recognition.continuous = true;
recognition.lang = "pt-BR"; // Define o idioma para português
recognition.start();
} else {
console.log("Reconhecimento de fala NÃO é suportado.");
}
});
document.getElementById("stopBtn").addEventListener("click", () => {
recognition.stop();
index = 0;
});
</script>
</body>
</html>
Neste exemplo, ao clicar no botão Iniciar
Parar
Ao iniciar o reconhecimento, o navegador solicitará permissão para usar o microfone. O usuário deve conceder acesso para que o reconhecimento funcione corretamente.