Gramáticas pré-compiladas¶
O CPqD ASR permite que gramáticas sejam compiladas antes de serem carregadas para reconhecimento. Uma gramática pré-compilada leva menos tempo para ser carregada pelo motor de reconhecimento, e pode apresentar um tempo de reconhecimento menor, mas isso não é garantido.
Recomenda-se o uso de gramáticas pré-compiladas em casos nos quais a gramática a ser usada é muito grande e apresenta um tempo de compilação mais alto que o desejado pelo desenvolvedor da aplicação.
A ferramenta usada para compilação de gramáticas é o programa
grammar-compile
, localizada em /opt/cpqd/asr/tools/grammar. Para sua maior
comodidade durante o desenvolvimento de gramáticas, recomenda-se adicionar esse
caminho ao PATH de seu shell:
$ export PATH=${PATH}:/opt/cpqd/asr/tools/grammar
Como exemplo, vamos compilar a gramática pizza.gram da seção anterior. Isso pode ser feito com o seguinte comando:
$ grammar-compile pizza.gram
Esse comando criará o diretório local pizza
, e colocará nele os
arquivos correspondentes à gramática compilada. O diretório de saída pode ser
alterado por meio da opção --out
.
A ferramenta grammar-compile
também aceita gramáticas no formato XML.
A compilação de gramáticas XML é feita do mesmo modo que a compilação de
gramáticas ABNF:
$ grammar-compile pizza.grxml
Igualmente, a gramática compilada será armazenada no novo diretório pizza
.
Para utilizar uma gramática pré-compilada no reconhecimento de fala, basta
indicar o caminho do diretório da gramática, gerado pela ferramenta
grammar-compile
. Ainda utilizando o exemplo da seção anterior, modifique o
arquivo script.txt para apontar para a gramática pré-compilada:
SETENGINE
SETLM file:///opt/grammar/pizza
WAVE /opt/cpqd/asr/tools/audio/pizza-veg-8k.wav
PRINTMODE ALL
RECOGNIZE
Execute asr-cmd
e deve obter um resultado similar ao seguinte:
$ /opt/cpqd/asr/tools/engine/asr-cmd script.asr
Creating engine... (config: /opt/cpqd/asr/config/engine/engine.conf)
Create engine TIME 2823 ms
Create session 1 TIME: 1 ms
Setting LM... (URI: file:///opt/grammar/pizza/)
Load LM TIME: 6 ms
Loading wave... (/opt/cpqd/asr/tools/audio/pizza-veg-8k.wav)
Recognizing queued 1 audios...
Recognizing with 1 threads
==============================================================================
=== TIMESTAMP: Tue Aug 8 11:30:57 2017
=== AUDIO: pizza-veg-8k
=== LM: file:///opt/grammar/pizza/
=== LM TIME: 0 ms
=== SEND TIME: 6 ms
=== RECOG TIME: 527 ms
==============================================================================
= RESULT 1
= CONFIDENCE: 100
= INTERPRETATION: "vegetariana" |
= TEXT: eu | quero | uma | pizza | vegetariana | por | favor |
= CONF: 100 | 100 | 100 | 100 | 100 | 100 | 100 |
==============================================================================
===== THREAD (1/1)
===== TOTAL LM TIME: 0 ms
===== TOTAL SEND TIME: 6 ms
===== TOTAL RECOG TIME: 527 ms
===== AVERAGE RECOG TIME: 527 ms
==============================================================================
results
Finishing...
Release session (1/1) TIME: 2 ms
Release engine TIME: 1011 ms
Note que o tempo de carregamento da gramática será menor (indicado na saída por Load LM TIME).