Gramáticas Inline

Uma gramática inline é aquela em que o corpo da gramática é informado diretamente na requisição de reconhecimento. Neste caso, o CPQD ASR recebe e compila a gramática fornecida.

../../_images/inline_grammar.png

Fig. 12 Referência à gramática inline

Veja exemplos de uso para as diferentes API’s:

API REST

POST /asr/rest/v3/recognize HTTP/1.1
Host: 127.0.0.1:8080
Content-Length: ...
Content-Type: multipart/form-data; boundary=BOUNDARY

--BOUNDARY
Content-Disposition: form-data; name="lm";
Content-Type: application/srgs

(corpo da gramática)

--BOUNDARY
Content-Disposition: form-data; name="audio";
Content-Type: audio/wav

(conteúdo do áudio)
--BOUNDARY--

Exemplo com API Rest usando o comando curl no Linux. O corpo da gramática deve estar num arquivo.

curl --form “lm=@/opt/grammar/pizza.gram;type=application/srgs”
  --form “audio=@/opt/training/audio/pizza-veg-8k.wav;type=audio/wav”
  http://127.0.0.1:8080/asr/rest/v3/recognize

API WebSocket

C->S: ASR 2.4 START_RECOGNITION
  Content-Type: application/srgs
  Content-Length: …

  #ABNF 1.0 UTF-8;
  language pt-BR;
  mode voice;

  root $root;
  $root = sim | não;

API MRCPv2

C->S: MRCP/2.0 ... RECOGNIZE 543260
  Channel-Identifier:32AECB23433801@speechrecog
  Content-Type:application/srgs
  Content-ID: yes_no
  Content-Length:...

  #ABNF 1.0 UTF-8;
  language pt-BR;
  mode voice;

  root $root;
  $root = sim | não;

Criação de objeto LanguageModel em JAVA para uso com GRPC

    public RecognitionConfig.LanguageModel createLanguageModelUsingLocalGrammarFile(String inlineGrammar) {
RecognitionConfig.LanguageModel lm = RecognitionConfig.LanguageModel.newBuilder()
        .setId(Integer.toHexString(inlineGrammar.hashCode())).setContentType("application/srgs")
        .setDefinition(inlineGrammar).build();
    }