Pular para o conteúdo principal

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 em e.detail.transcript e o resultado da substituição é colocado em e.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
}