Eventos
Todos os eventos do SDK são disponibilizados em dois formatos: via método addEventListener()
ou usando as propriedades on
do objeto IaraSpeechRecognition
. Em ambos os casos, a função receberá um evento como parâmetro cuja propriedade detail
conterá dados relacionados à Iara Health.
IMPORTANTE: dados relacionados com a Iara Health estarão sempre na propriedadedetail
de qualquer evento, ex.:event.detail
.
Por exemplo, dado o evento fictício result
, ele pode ser acessado via addEventListener()
:
var recognition = new IaraSpeechRecognition();
recognition.addEventListener('result', function(event) {
// Dados relacionados com a Iara Health estarão disponíveis
// através da propriedade `detail` de qualquer evento.
console.log(event.detail);
});
Ou através da propriedade onresult
:
recognition.onresult = function(event) {
// Dados relacionados com a Iara Health estarão disponíveis
// através da propriedade `detail` de qualquer evento.
console.log(event.detail);
}
Para facilitar a descoberta de eventos (e o auto-completar de código em IDEs), todos os eventos disparados pela classe IaraSpeechRecognition
estão disponíveis como propriedades estáticas da classe IaraEvent
.
Dica: a classeIaraEvent
contém todos os eventos disponíveis para uso. DigiteIaraEvent.
na sua IDE para que ela liste as propriedades dessa classe (que são os eventos disponíveis).
As seções a seguir descrevem, por assunto, cada um dos eventos disponíveis e o conteúdo da sua propriedade detail
. Todos os exemplos mostrados abaixo assumem que um reconhecedor chamado recognition
foi instanciado:
var recognition = new IaraSpeechRecognition();
Lista de eventos disponíveis
A tabala abaixo mostra todos os eventos existentes, todos acessíveis através de IaraEvent.*
.
Evento | Informação |
---|---|
SPEECH_RECOGNITION_RESULT | - |
SPEECH_RECOGNITION_START | - |
SPEECH_RECOGNITION_STARTING | - |
SPEECH_RECOGNITION_STOP | - |
SPEECH_RECOGNITION_READY | - |
INIT_DONE | - |
INIT_FAIL | - |
INIT_VOICE_MODEL_DOWNLOAD_STARTED | - |
INIT_VOICE_MODEL_DOWNLOAD_COMPLETED | - |
INIT_VOICE_MODEL_DOWNLOAD_PROGRESS | - |
INIT_API_AUTH | - |
INIT_API_CONFIG | - |
INIT_ALS_CHECK | - |
INIT_INSTALL_ALS | - |
INIT_PROGRESS | - |
ALS_OFFLINE | - |
ALS_ONLINE | - |
AUDIO_LEVEL_UPDATE | - |
AUDIO_DEVICE_ADD | - |
AUDIO_DEVICE_REMOVE | - |
AUDIO_DEVICE_CHANGE | - |
SHORTCUT | - |
INTERNAL | - |
ERROR | - |
ERROR_NO_INPUT_DEVICE | - |
ERROR_UNSUPPORTED_SAMPLE_RATE | - |
ERROR_RECORD_INTERRUPTION | - |
NEWER_VOICE_MODEL_AVAILABLE | - |
NEWER_ALS_AVAILABLE | - |
As seções a seguir explicam e exemplificam em mais detalhes cada um dos eventos listados acima.
Reconhecimento de voz
Eventos relacionados com o reconhecimento de voz da Iara Health. Todos esses eventos são emitidos depois que uma inicialização bem-sucedida aconteceu.
Ready - IaraEvent.SPEECH_RECOGNITION_READY
e onready
Emitido quando o reconhecedor está pronto para receber audios de entrada para fazer novas inferências.
recognition.addEventListener(IaraEvent.SPEECH_RECOGNITION_READY, function(event) {
console.log(event.detail);
});
recognition.onready = function(event) {
console.log(event.detail);
}
Result - IaraEvent.SPEECH_RECOGNITION_RESULT
e onresult
Emitido quando o reconhecedor finalizou uma inferência.
recognition.addEventListener(IaraEvent.SPEECH_RECOGNITION_RESULT, function(event) {
console.log(event.detail);
});
recognition.onresult = function(event) {
console.log(event.detail);
}
Veja a seção Reconhecimento de voz para saber mais sobre o reconhecimento de voz, inclusive a obtenção de resultados intermediários.
Start - IaraEvent.SPEECH_RECOGNITION_START
e onstart
Emitido quando o reconhecedor inicia o processo de reconhecimento, i.e. logo após start()
ter sido invocado.
recognition.addEventListener(IaraEvent.SPEECH_RECOGNITION_START, function(event) {
console.log(event.detail);
});
recognition.onstart = function(event) {
console.log(event.detail);
}
IMPORTANTE: pode haver uma pausa de alguns milisegundos (ou segundos, dependendo do computador do usuário) desde o momento questart()
é chamado e o momento no qual o reconhecimento inicia, de fato. Isso acontece porque o ALS está configurando os canais de audio do sistema. Os eventosIaraEvent.SPEECH_RECOGNITION_START
eonstart
indicam quando o reconhecimento iniciou proprieamente.
Stop - IaraEvent.SPEECH_RECOGNITION_STOP
e onstop
Emitido quando o reconhecedor foi instruído a parar o reconhecimento atual, i.e. logo após stop()
ter sido invocado.
recognition.addEventListener(IaraEvent.SPEECH_RECOGNITION_STOP, function(event) {
console.log(event.detail);
});
recognition.onstop = function(event) {
console.log(event.detail);
}
VAD Voice Start - IaraEvent.SPEECH_RECOGNITION_VAD_VOICE_START
Emitido quando o a opção useVAD é true na inicialização e o VAD (voice activity detection) inicia a detecção de voz.
recognition.addEventListener(IaraEvent.SPEECH_RECOGNITION_VAD_VOICE_START, function(event) {
console.log(event.detail);
});
VAD Voice Stop - IaraEvent.SPEECH_RECOGNITION_VAD_VOICE_STOP
Emitido quando o a opção useVAD é true na inicialização e o VAD (voice activity detection) para de detectar emissão de voz.
recognition.addEventListener(IaraEvent.SPEECH_RECOGNITION_VAD_VOICE_STOP, function(event) {
console.log(event.detail);
});
Inicialização
Eventos emitidos durante o processo de inicialização do reconhecedor da Iara.
Init done - IaraEvent.INIT_DONE
e oninitdone
Emitido quando o reconhecedor finalizou a sua inicialização e está pronto para iniciar os trabalhos.
recognition.addEventListener(IaraEvent.INIT_DONE, function(event) {
console.log(event.detail);
});
recognition.oninitdone = function(event) {
console.log(event.detail);
}
Dica: a callbackdone()
encadeada junto ao métodoinit()
do reconhecedor é um atalho paraIaraEvent.INIT_DONE
eoninitdone
.
Os eventos de IaraEvent.INIT_DONE
e oninitdone
também estão disponíveis através da callback done() encadeada com o método init() do reconhecedor:
var recognition = new IaraSpeechRecognition();
recognition.init({
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3'
}).done(function(e) {
// Inicialização finalizada com sucesso
});
Init fail - IaraEvent.INIT_FAIL
e oninitfail
Emitido quando o reconhecedor não conseguiu realizar uma inicialização bem-sucedida. Se esse evento for emitido, o reconhecedor não estará pronto para fazer qualquer reconhecimento de voz.
recognition.addEventListener(IaraEvent.INIT_FAIL, function(event) {
console.log(event.detail);
});
recognition.oninitfail = function(event) {
console.log(event.detail);
}
Dica: a callbackfail()
encadeada junto ao métodoinit()
do reconhecedor é um atalho paraIaraEvent.INIT_FAIL
eoninitfail
.
Os eventos de IaraEvent.INIT_FAIL
e oninitfail
também estão disponíveis através da callback fail() encadeada com o método init() do reconhecedor:
var recognition = new IaraSpeechRecognition();
recognition.init({
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3'
}).fail(function(e) {
// Inicialização falhou.
});
Init progress - IaraEvent.INIT_PROGRESSS
e oninitprogress
Emitido quando o reconhecedor está inicializando. Durante o processo de inicialização, o reconhecedor realiza diversos passos, como autenticação com a API Iara, download de modelos de voz, etc.
Para cada um desses passos, os eventos IaraEvent.INIT_PROGRESSS
e oninitprogress
serão invocados:
recognition.addEventListener(IaraEvent.INIT_PROGRESSS, function(event) {
console.log(event.detail);
});
recognition.oninitprogress = function(event) {
console.log(event.detail);
}
Cada vez que IaraEvent.INIT_PROGRESSS
e oninitprogress
forem emitidos, pode-se saber o status/passo da inicialização através da propriedade type
do objeto detail
do evento passado como parâmetro, i.e. event.detail.type
.
Os valores possíveis para event.detail.type
são:
IaraEvent.INIT_VOICE_MODEL_DOWNLOAD_STARTED
: emitido quando o reconhecedor iniciou o download do modelo de voz do usuário identificado pela propriedadeuserId
usada durante a chamada ainit()
.IaraEvent.INIT_VOICE_MODEL_DOWNLOAD_PROGRESS
: emitido várias vezes enquanto o reconhecedor realiza o download do modelo de voz do usuário identificado pela propriedadeuserId
usada durante a chamada ainit()
. Pode-se saber o progresso do download através da propriedadedata
do objetodetail
do evento passado como parâmetro, i.e.event.detail.data
.IaraEvent.INIT_VOICE_MODEL_DOWNLOAD_COMPLETED
: emitido quando reconhecedor finializou o download do modelo de voz do usuário identificado pela propriedadeuserId
usada durante a chamada ainit()
.
Dica: a callbackprogress()
encadeada junto ao métodoinit()
do reconhecedor é um atalho paraIaraEvent.INIT_PROGRESSS
eoninitprogress
.
Todos os eventos de progresso de inicialização, ex.: IaraEvent.INIT_*
, estão disponíveis através da callback progress() encadeada com o método init() do reconhecedor:
var recognition = new IaraSpeechRecognition();
recognition.init({
userId: 'meu@email.com',
apiToken: '197765800edb8affcb44a7ae7b4ff0a3'
}).progress(function(e) {
// A inicialização está acontecendo.
console.log(e.detail.type, e.detail.data);
});
Audio
Eventos relacionados ao controle de dispositivos de entrada e saída de audio. Veja a seção Dispositivos de audio para saber mais sobre como configurar e escolher entrada e saída de audio.
Audio level update - IaraEvent.AUDIO_LEVEL_UPDATE
e onaudiolevelupdate
Emitido pelo reconhecedor quando audio é detectado no dispositivo de entrada, após start()
ter sido invocado.
recognition.addEventListener(IaraEvent.AUDIO_LEVEL_UPDATE, function(event) {
console.log(event.detail);
});
recognition.onaudiolevelupdate = function(event) {
console.log(event.detail);
}
Dica: utilize os eventos `IaraEvent.AUDIO_LEVEL_UPDATE` e `onaudiolevelupdate` para melhorar a UX de sua aplicação. Por exemplo, depois que `start()` for invocado, mostre pequenas barras verticais (de som) se movendo para indicar que audio está sendo capturado pelo microfone.
Erros
Visando facilitar o tratamento de erros, o SDK aciona eventos relacionados ao erro em questão. As informações relevantes podem ser acessadas em event.detail
. Cada erro possui:
- Um
errorCode
único, representado abaixo pela coluna 'Código'; - Uma
developerMessage
, que visa explicar a causa do erro para o desenvolvedor; - Uma
userMessage
, que representa uma sugestão de mensagem a ser mostrada para o usuário.
Lista de erros
A tabela abaixo mostra todos os erros existentes e suas descrições.
Código | Evento Acionado | Mensagem para o Desenvolvedor | Descrição |
---|---|---|---|
ERROR_RECORD_INTERRUPTION | Adding or removing audio devices when recording is not allowed. | Problema com a gravação: um microfone foi adicionado ou removido enquanto o reconhecimento estava ativo. (Cód #1) | |
ERROR | Unknown error, please contact our team. | Erro desconhecido: por favor, entre em contato com o nosso suporte. (Cód #2) | |
ERROR | Unknown error, please contact our team. | Erro de áudio desconhecido: por favor, entre em contato com o nosso suporte. (Cód #3) | |
ERROR_RECORD_INTERRUPTION | Something affected the recording: + reason. | Problema com a gravação: um erro desconhecido interrompeu a gravação. Por favor, entre em contato com o nosso suporte. (Cód #4) | |
ERROR_NO_INPUT_DEVICE | No input device is available. | Microfone indisponível: por favor, verifique se possui um microfone conectado. (Cód #5) | |
ERROR | ALS seems to be permanently offline. | Problema com o serviço local da Iara: por favor, tente reiniciar o "ALS". Caso o problema persista, entre em contato com o nosso suporte. (Cód #6) | |
ERROR | mediaDevices not supported by browser or insecure access (HTTP instead of HTTPS). | Microfone indisponível: o navegador não possui acesso seguro ao microfone ou ele não é suportado. Por favor, entre em contato com o nosso suporte. (Cód #7) | |
ERROR | Unable to create browser stream. | Erro de áudio: por favor, entre em contato com o nosso suporte. (Cód #8) | |
ERROR | Unable to enumerate input devices. | Microfone indisponível: não foi possível verificar se há um microfone conectado. Por favor, tente reiniciar o "ALS". Caso o problema persista, entre em contato com o nosso suporte. (Cód #9) | |
UNSUPPORTED_SAMPLE_RATE | Browser mic has an unsupported sample rate for recording. | Microfone indisponível: não foi possível inicializar o microfone. Por favor, entre em contato com o nosso suporte. (Cód #10) | |
ERROR | Unable to record. | Problema com a gravação: não foi possível iniciar a gravação. Por favor, entre em contato com o nosso suporte. (Cód #11) | |
ERROR | Recording is disabled: + reason. | Problema com a gravação: uma gravação anterior ainda está sendo processada. Por favor, aguarde alguns instantes e tente novamente. Caso o problema persista, entre em contato com o nosso suporte. (Cód #12) | |
INIT_FAIL | Unauthorized access to Iara API. | Falha na inicialização: usuário ou senha inválidos. Por favor, verifique as suas credenciais de acesso. (Cód #13) | |
INIT_FAIL | Incompatible OS or browser version. | Falha na inicialização: este navegador ou sistema operacional é incompatível com a Iara. (Cód #14) | |
INIT_FAIL | Problem reading Iara API SDK version info. | Falha na inicialização: não foi possível verificar a versão do nosso "Javascript SDK". Por favor, entre em contato com o nosso suporte. (Cód #15) | |
INIT_FAIL | No suitable input method is available. Check your audio input devices. | Falha na inicialização: não foi possível detectar um microfone compatível com a Iara. (Cód #18) | |
INIT_FAIL | No audio input device is available. Check if you have a valid mic or SpeechMike. | Falha na inicialização: não foi possível detectar um microfone. (Cód #19) | |
INIT_FAIL | Requested input is invalid. Valid inputs are "auto" or "speechmike", for instance. | Falha na inicialização: um microfone incompatível foi selecionado. (Cód #20) | |
INIT_FAIL | ALS not installed. | Falha na inicialização: o serviço local da Iara "ALS" parece não estar instalado. (Cód #21) | |
ERROR | The Iara speech recognition engine is busy. Please try again in a moment. | O motor do reconhecimento de voz da Iara está ocupado no momento. Por favor, tente novamente dentro de alguns instantes. (Cód #22) | |
ERROR | Error dealing with the Iara API. | Falha de comunicação com a API da Iara. Por favor, tente novamente dentro de alguns instantes. Caso o problema persista, entre em contato com o nosso suporte. (Cód #23) | |
ERROR | Unable to initialize. | Falha na inicialização: não conseguimos inicializar o motor do reconhecimento de voz. Por favor, entre em contato com o nosso suporte. (Cód #24) | |
ERROR | Recorder already in use. | A Iara está inicializada em mais um lugar. No momento, não é possível utilizar simultaneamente o reconhecimento de voz em múltiplas abas do navegador. (Cód #25) | |
ERROR | Recorder being forcefully disconnected. | A Iara está inicializada em mais um lugar. No momento, não é possível utilizar simultaneamente o reconhecimento de voz em múltiplas abas do navegador. (Cód #26) | |
ERROR | Unable to generate audio log. | Ocorreu um problema com o arquivo de áudio para fins de registro. Você pode continuar usando a Iara normalmente. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #27) | |
ERROR | Unable to open audio line. | Erro de áudio: um erro desconhecido impediu o início da gravação. Por favor, entre em contato com o nosso suporte. (Cód #28) | |
ERROR | Unable to open and/or start playback line. | Erro de áudio: um erro desconhecido impediu a reprodução de um áudio. Por favor, entre em contato com o nosso suporte. (Cód #29) | |
ERROR | Unable to open and/or start capture line. | Problema com a gravação: não foi possível iniciar a gravação. Verifique se o microfone continua conectado. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #30) | |
ERROR | Recorder is busy. | Problema com a gravação: o gravador do serviço local "ALS" está ocupado. Por favor, tente novamente dentro de instantes. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #31) | |
ERROR | Unable to generate .ogg file. | Ocorreu um problema com o arquivo de áudio para fins de registro. Você pode continuar usando a Iara normalmente. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #32) | |
ERROR | Invalid command. | Problema de comunicação com o meu serviço local "ALS": mensagem inválida. (Cód #33) | |
ERROR | Error selecting audio line. | Microfone indisponível: por favor, verifique se o microfone selecionado ainda está conectado. (Cód #34) | |
INIT_FAIL | The Iara speech recognition engine is busy. Please try again in a moment. | O motor do reconhecimento de voz da Iara está ocupado no momento. Por favor, tente novamente dentro de alguns instantes. (Cód #35) | |
INIT_FAIL | Error dealing with the Iara API. | Falha na inicialização: Falha de comunicação com a API da Iara. Por favor, tente novamente dentro de alguns instantes. Caso o problema persista, entre em contato com o nosso suporte. (Cód #36) | |
INIT_FAIL | Unable to initialize. | Falha na inicialização: não conseguimos inicializar o motor do reconhecimento de voz. Por favor, entre em contato com o nosso suporte. (Cód #37) | |
INIT_FAIL | Recorder already in use. | Falha na inicialização: A Iara está inicializada em mais um lugar. No momento, não é possível utilizar simultaneamente o reconhecimento de voz em múltiplas abas do navegador. (Cód #38) | |
INIT_FAIL | Recorder being forcefully disconnected. | Falha na inicialização: A Iara está inicializada em mais um lugar. No momento, não é possível utilizar simultaneamente o reconhecimento de voz em múltiplas abas do navegador. (Cód #39) | |
INIT_FAIL | Unable to generate audio log. | Falha na inicialização: Ocorreu um problema com o arquivo de áudio para fins de registro. Você pode continuar usando a Iara normalmente. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #40) | |
INIT_FAIL | Unable to open audio line. | Falha na inicialização: Erro de áudio: um erro desconhecido impediu o início da gravação. Por favor, entre em contato com o nosso suporte. (Cód #41) | |
INIT_FAIL | Unable to open and/or start playback line. | Falha na inicialização: Erro de áudio: um erro desconhecido impediu a reprodução de um áudio. Por favor, entre em contato com o nosso suporte. (Cód #42) | |
INIT_FAIL | Unable to open and/or start capture line. | Falha na inicialização: Problema com a gravação: não foi possível iniciar a gravação. Verifique se o microfone continua conectado. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #43) | |
INIT_FAIL | Recorder is busy. | Falha na inicialização: Problema com a gravação: o gravador do serviço local "ALS" está ocupado. Por favor, tente novamente dentro de instantes. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #44) | |
INIT_FAIL | Unable to generate .ogg file. | Falha na inicialização: Ocorreu um problema com o arquivo de áudio para fins de registro. Você pode continuar usando a Iara normalmente. Caso o problema persistir, por favor, entre em contato com o nosso suporte. (Cód #45) | |
INIT_FAIL | Invalid command. | Falha na inicialização: Problema de comunicação com o meu serviço local "ALS": mensagem inválida. (Cód #46) | |
INIT_FAIL | Error selecting audio line. | Falha na inicialização: Microfone indisponível: por favor, verifique se o microfone selecionado ainda está conectado. (Cód #47) | |
INIT_FAIL | The installed ALS version is outdated and incompatible with this SDK version. | Falha na inicialização: A versão instalada do serviço local da Iara "ALS" é incompatível ou está desatualizada. (Cód #48) | |
INIT_FAIL | ALS closed all currently active connections due to forceConnect (probably multiple tabs are open). | Falha na inicialização: o serviço local da Iara "ALS" parece ter encerrado todas as conexões. Pode ser que a Iara esteja inicializada em mais de uma aba do seu navegador. (Cód #49) | |
INIT_FAIL | Invalid response from Iara API. | Falha na inicialização: Falha de comunicação com a API da Iara. Por favor, tente novamente dentro de alguns instantes. Caso o problema persista, entre em contato com o nosso suporte. (Cód #50) | |
ERROR | Failed to submit the feedback to the Iara API. Reason: + reason. | Erro: falha ao tentar submeter um feedback. (Cód #51) | |
ERROR | Unable to properly initialize ALS protocols that use the UserAgent. You can try to restart the ALS and refresh the page to fix the problem and, if that doesn't work, try reinstalling the ALS. | Problema com o serviço local da Iara: não foi possível inicializar os protocolos do ALS corretamente desabilitando as funcionalidades de atalhos para gravação, copiar laudo e o editor externo. Por favor, tente reiniciar o "ALS" e atualizar a página, caso o problema persista será necessário reinstalar o ALS. (Cód #53) | |
ERROR | Unable to run the recognition engine for the given audio file. Please, check that the file is in proper wav 44100Hz format. | Problema ao executar o motor do reconhecimento de voz com o arquivo de áudio dado. Verifique se o formato do arquivo é wav 44100Hz. (Cód #54) | |
ERROR | Failed to update or create a report. | Falha no envio ou atualização de um laudo. (Cód #55) | |
INIT_FAIL | User license has expired. | Licença do usuário expirada. Favor verificar que não há pagamentos pendentes. (Cód #56) | |
ERROR | Failed to fetch user parser rules. | Falha ao recuperar regras de parser do usuário. (Cód #57) | |
INIT_FAIL | User denied mic usage permission. | Falha na inicialização: o reconhecimento precisa de permissão para acesso ao microfone do browser. (Cód #58) | |
INIT_FAIL | Failed to update the user parser rules in the speech engine. | Falha ao recuperar regras de parser do usuário. (Cód #59) |