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.
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();
}