Templates (rich transcript)
A funcionalidade de templates permite que o conteúdo de qualquer transcrição de audio seja enriquecida com conteúdo extra e disponibilizada através da propriedade richTranscript
. Templates são similares a comandos Iara, porém o foco é na substiuição (ou enriquecimento) de conteúdo.
Funcionamento básico
Em linhas gerais, um template nada mais é do que um filtro que tranforma conteúdo da propriedade e.detail.transcript
para a propriedade e.detail.richTranscript
do objeto de resultado de reconhecimento.
Esse processo de transformação de conteúdo é basicante buscar uma string e subtituir ela por outra. A busca é realizada em e.detail.transcript
, porém o resultado da substituição é colocado em e.detail.richTranscript
.
Dessa forma, o template é composto por duas partes principais:
- Texto/comando de ativação (string a ser buscada)
- Conteúdo (string que substituirá o texto/comando de ativação)
Por padrão, qualquer texto/comando de ativação será prefixado internamente pela string "iara texto "
. Logo, o template cujo texto/comando de ativação seja "teste"
entrará em ação se o usuário falar iara texto teste
.
Dica: templates são, essencialmente, funções de busca e substituição de strings, onde a busca é feita eme.detail.transcript
e o resultado da substituição é colocado eme.detail.richTranscript
.
Templates podem ser altamente customizados, desde o prefixo dos comandos quanto a forma como o conteúdo será alterado. As seções a seguir demonstram cada uma dessas funcionalidades.
Utilização básica
Templates são adicionados através da propriedade richTranscriptTemplates
do reconhecedor:
var recognition = new IaraSpeechRecognition();
var cmd = 'teste';
var content = 'conteúdo';
// Adiciona templates
recognition.richTranscriptTemplates.add(cmd, content);
recognition.init({
// ...
}).done(function(e) {
// Assumindo que o usuário falou "iara texto teste fígado",
// o seguinte será produzido.
recognition.onresult = function(event) {
console.log(e.detail.transcript); // "iara texto teste fígado"
console.log(e.detail.richTranscript); // "conteúdo fígado"
}
});
No exemplo acima, quando o usuário falar iara texto teste
, essa mesma string que existe na propriedade e.detail.transcript
será substituída por "conteúdo"
na propriedade e.detail.richTranscript
.
O conteúdo de um template não será sanitizado ou alterado antes de sua utilização, então ele pode conter, inclusive, tags HTML:
var recognition = new IaraSpeechRecognition();
// Adiciona templates
recognition.richTranscriptTemplates.add(
'vias biliares',
'<em>vias biliares</em> foi <strong>enriquecido</strong>'
);
recognition.init({
// ...
}).done(function(e) {
// Assumindo que o usuário falou "iara texto vias biliares",
// o seguinte será produzido.
recognition.onresult = function(event) {
console.log(e.detail.transcript); // "iara texto vias biliares"
console.log(e.detail.richTranscript); // "<em>vias biliares</em> foi <strong>enriquecido</strong>"
}
});
Callback de ativação
Pode-se detectar se um template foi ativado ou não através de uma callback passada como parâmetro do método add()
:
function myCallback(resultEvent, context) {
console.log('Template "dilatação" invocado.');
console.log('Resultado do template "dilatação": ', resultEvent);
console.log('Contexto do template "dilatação": ', context);
}
var recognition = new IaraSpeechRecognition();
// Adiciona template com callback
recognition.richTranscriptTemplates.add('dilatação', 'Não há dilatação', myCallback);
recognition.init({
// ...
}).done(function(e) {
// Assumindo que o usuário falou "iara texto dilatação",
// o seguinte será produzido.
recognition.onresult = function(event) {
console.log(e.detail.transcript); // "iara texto dilatação"
console.log(e.detail.richTranscript); // "Não há dilatação"
}
});
No exemplo acima, o comando "iara texto dilatação"
ativa o template que substituirá essa string por "Não há dilatação"
. Adicionalmente, quando o template for ativado, a callback passada como terceiro parâmetro será invocada.
A callback receberá como parâmetros o objeto resultado da trasncrição atual (objeto event
do onresult
no exemplo acima), e um parâmetro que contém informações sobre o contexto do template sendo executado.
O parâmetro context
recebido pela callback contém diversas informações sobre o template e a transcrição. No caso do exemplo acima, esses seriam as suas propriedades e valores:
// console.log(context)
{
// Texto que será buscado em `transcript`
findText: 'iara texto dilatação',
// Texto que substituirá `findText`, se for encontrado.
replaceText: 'Não há dilatação',
// Conteúdo da propriedade `richTranscript` sem
// qualquer template ter sido aplicado.
originalRichTranscript: 'iara texto dilatação',
// Objeto de configuração extra do template.
config: {},
// referencia para a função de callback
callback: Function
}