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 ASR recebe e compila a gramática fornecida.
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:8025
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:8025/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();
    }