Reconocimiento de voz
El reconocimiento de voz de Iara funciona en dos modos principales:sin resultados intermedios (interimResults
es false
) y con resultados intermedios (resultados provisionales
es true
).
En ambos casos, la función de reconocimiento general es la misma y se basa en llamadas a start()
y stop()
, como se describe en la siguiente sección.
Funcionamiento general
El reconocimiento de voz de Iara se basa en llamadas a dos comandos principales: start()
y stop()
.
Suponiendo que el reconocedor se haya inicializado correctamente, simplemente llame al método start()
del reconocedor para iniciar el reconocimiento de voz. Cuando la aplicación considere que es hora de finalizar el reconocimiento, ej. el usuario soltó el botón de grabación, simplemente llame al método stop()
del reconocedor.
Iara no realizará nuevos reconocimientos en el dispositivo de entrada de audio hasta que se vuelva a llamar a start()
(seguido de stop()
para finalizar el reconocimiento).
Pista: consulte la sección Eventos para obtener más información sobre las callbacks y los eventos de reconocimiento de audio.
El siguiente ejemplo ilustra el funcionamiento general:
recognition = new IaraSpeechRecognition();
recognition.init(
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3'
).done(
// Llamar primero recognition.start()
//después de un período llamar recognition.stop().
);
recognition.onresult = function(event) {
var text = event.result.transcript;
console.log('Texto reconocido: ' + text);
};
El parámetro event
recibido por la callback onresult
contiene una propiedad llamada result
, que es un objeto IaraSpeechRecognitionResult
. La propiedad transcript
de este resultado contiene el texto que Iara reconoció en función del audio de entrada.
El atributo result
del evento también contiene muchas informaciónes sobre el reconocimiento, pero la propiedad result.transcript
es la que contiene el texto reconocido.
Consejo: ambos reconocimientos (con o sin resultados intermedios) funcionan a base de llamadas astart()
ystop()
. La única diferencia está en el número de veces que el callbackonresult
o el eventoresult
son llamados.
Tipos de reconocimiento
Sin resultados intermedios - interimResults: false
Lo que controla si el reconocedor se ejecutará con o sin resultados intermedios es el atributo interimResults
que se pasa al método init()
, como en el ejemplo siguiente:
var recognition = new IaraSpeechRecognition();
// El atributo `interimResults` controla si los resultados intermedios
// del reconocimiento de voz debe producirse o no. Si nada es
// informado, el valor por defecto es falso (no hay resultados intermedios).
recognition.init({
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',
interimResults: false
});
Cuando interimResults: false
es utilizado en init()
, el callback onresult
es llamado automaticamente y una única vez así que stop()
se invoca.
Abajo hay un ejemplo de reconocimiento de voz sin resultados intermedios:
var recognition = new IaraSpeechRecognition();
recognition.init({
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',
interimResults: false
}).done(function(e) {
// Configurar los botones para activar/desactivar el reconocimiento de audio.
var botaoStart = document.getElementById('btnStart');
var botaoStop = document.getElementById('btnStop');
botaoStart.addEventListener('click', function() {
recognition.start();
});
botaoStop.addEventListener('click', function() {
recognition.stop();
});
});
// Maneja el callback `onresult`, llamado después de `stop()` cuando Iara
// ha terminado de reconocer el audio de entrada.
recognition.onresult = function(event) {
var text = event.result.transcript
console.log('Texto reconocido: ' + text);
};
En el ejemplo anterior, cuando el reconocedor llama al método done()
para indicar que todo está correctamente configurado, se configuran dos botones HTML para activar y desactivar el reconocimiento de voz de Iara. El primer botón (cuyo id es btnStart
) está configurado para activar el reconocimiento de voz cuando se hace clic en él. Esto se hace a través del evento click
del botón, que cuando se activa, hace una llamada a recognition.start()
, iniciando el reconocimiento de voz. Del mismo modo, el botón de identificación btnStop
, al hacer clic, llama recognition.stop()
, que finaliza la operación de reconocimiento.
Finalmente, al final del ejemplo, se asigna un rol a la propiedad onresult
, que está vinculado al evento result
. En el caso del conocimiento sin resultados intermedios, el evento (y la callback onresult
) se llama una vez, después stop()
ser invocado. El tiempo entre la llamada de onresult
después stop()
no está definido y depende de la potencia de procesamiento de lo computador del usuario.
A continuación se muestra un ejemplo completo del uso del reconocimiento de voz sin resultados intermedios:
<html>
<head>
<!-- Iara Speech SDK:
https://developers.iarahealth.com/javascript/docs/geral-instalacao -->
<script src="https://cdn.iarahealth.com/sdk/javascript/1.9.0/iara-speech.min.js"></script>
</head>
<body>
<button id="btnStart">Iniciar</button>
<button id="btnStop">Parar</button>
<script type="text/javascript">
var myUserId = 'meu@email.com'; // use o seu userId
var myApiToken = '197765800edb8affcb44a7ae7b4ff0a3'; // use o seu apiToken
// Instanciar el reconocedor de Iara
var recognition = new IaraSpeechRecognition();
// Inicialice el SDK, es decir, autenticación, verificar ALS, descargar modelo de voz, etc.
recognition.init({
userId: myUserId,
apiToken: myApiToken,
interimResults: false // sin resultados intermedios de reconocimiento
}).done(function(e) {
// El evento principal del reconocimiento de voz es el "resultado", llamado cuando
// se reconoce algo de audio en la entrada.
recognition.onresult = function(event) {
// El parámetro "evento" contiene una propiedad llamada "result", que es un
// objeto IaraSpeechRecognitionResult. La propried "transcript" de eso
//El resultado contiene el texto que Iara reconoció en función del audio de entrada.
var text = event.result.transcript.toLowerCase();
console.log('Texto reconhecido: ' + text);
};
// Configurar botones para habilitar/deshabilitar el reconocimiento de audio.
var botaoStart = document.getElementById('btnStart');
var botaoStop = document.getElementById('btnStop');
botaoStart.addEventListener('click', function() {
recognition.start();
});
botaoStop.addEventListener('click', function() {
recognition.stop();
});
}).fail(function(e) {
// Ocurrió algún problema. El parámetro "e" contiene mucha información sobre el error.
console.error('Hubo un problema con la inicialización de Iara: ' + e.errorMessage); }).progress(function(e) { // El SDK invoca este método varias veces durante su inicialización.
// Tu puedes usarlo para seguir los pasos de iniciación, para informar
// a su usuario que su modelo de voz se está descargando, por ejemplo.
console.debug('Iara está inicializando: ' + e.initType);
});
</script>
</body>
Con resultados intermedios - interimResults: true
El reconocimiento con resultados intermedios funciona de manera muy similar al reconocimiento sin resultados intermedios. Cuándo interimResults: true
se usa en init()
, la callback onresult
se llama automáticamente y repetidamente después que start()
es invocado.
El evento onresult
se invoca repetidamente con un intervalo variable, que depende de los recursos informáticos disponibles en la computadora del usuario. Cuándo stop()
se llama, onresult
se puede llamar unas cuantas veces más, hasta que finalmente no se llame en absoluto.
Consejo: puedes saber si una llamada aonresult
es el último (resultado final después destop()
ser llamado) a través de la propiedadisFinal
del evento pasado como parámetro a la callback que maneja los resultados.
A continuación se muestra un ejemplo de reconocimiento de voz con resultados intermedios:
var recognition = new IaraSpeechRecognition();
recognition.init({
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3',
interimResults: true // Se producirán resultados intermedios.
}).done(function(e) {
// Configuramos botones para habilitar/deshabilitar el reconocimiento de audio.
var botaoStart = document.getElementById('btnStart');
var botaoStop = document.getElementById('btnStop');
botaoStart.addEventListener('click', function() {
recognition.start();
});
botaoStop.addEventListener('click', function() {
recognition.stop();
});
});
// Trata la callback `onresult`, llamar repetidamente después
`start()`. Cuándo `stop()`
// se invoca, `onresult` se puede llamar unas cuantas veces más.
recognition.onresult = function(event) {
var text = event.result.transcript
// La propiedad `isFinal` del evento recibido informa
// si este es el resultado final del reconocimiento (obtenido después
// que `stop()` for llamado).
if(event.isFinal) {
console.log('Texto intermediário: ' + text);
} else {
console.log('Texto final: ' + text);
}
};
A seguir un ejemplo completo del uso del reconocimiento de voz con resultados intermedios:
<html>
<head>
<!-- Iara Speech SDK: https://developers.iarahealth.com/javascript/docs/geral-instalacao -->
<script src="https://cdn.iarahealth.com/sdk/javascript/1.9.0/iara-speech.min.js"></script></script>
</head></head>
<body>
<button id="btnStart">Iniciar</button></button>
<button id="btnStop"><button id="btnStop">Parar</button>
<script type="text/javascript">
var myUserId = 'mi@email.com'; // utilice su userId
var myApiToken = '197765800edb8affcb44a7ae7b4ff0a3'; // use o seu apiToken
// Instancias el reconocedor Iara
var recognition = new IaraSpeechRecognition();
// Inicializa el SDK, i.e. autenticación, revisar el ALS, baja modelo de voz, etc.
recognition.init({
userId: myUserId,
apiToken: myApiToken,
interimResults: true // se producirán resultados intermediarios.
recognition.onresult = function(event) {
// El parámetro "event" contiene una propiedad llamada "result", que es un
// objeto IaraSpeechRecognitionResult. La propiedad "transcripción" de este
// el resultado contiene el texto que Iara ha reconocido según el audio de entrada.
var text = event.result.transcript;
// La propiedad `isFinal` del evento recibido informa
// si se trata del resultado final del reconocimiento (obtenido después de
// llamar a `stop()`).
if(event.isFinal) {
console.log('Texto intermediário: ' + text);
} else {
console.log('Texto final: ' + text);
}
};
// Configuración de los botones para activar/desactivar el reconocimiento de audio.
var botaoStart = document.getElementById('btnStart');
var botaoStop = document.getElementById('btnStop');
botaoStart.addEventListener('click', function() {
recognition.start();
});
botaoStop.addEventListener('click', function() {
recognition.stop();
});
}).fail(function(e) {
// se ha producido algún problema. El parámetro "e" incluye varias informaciones sobre el error.
console.error('console.error('Algum problema na inicialização da Iara: ' + e.errorMessage);
}).progress(function(e) {
// Este método es llamado varias veces por el SDK a medida que se inicializa.
// Usted puede utilizarlo para seguir los pasos de iniciación, para informar
// Puede utilizarlo para seguir los pasos de inicio, para informar a al usuario de que su modelo de voz se está bajando, por ejemplo.
console.debug('Iara está iniciando: ' + e.initType);
});
</script>
</body>