Métodos¶
RECOGNIZE¶
Realiza o reconhecimento de fala de um áudio enviado para o serviço. O conteúdo do áudio deve ser enviado no corpo da mensagem HTTP. O reconhecimento é realizado de forma síncrona e o resultado vem na resposta HTTP.
Requisição
POST /asr-server/rest/recognize
HTTP Headers
Accept | (Opcional) Tipo de conteúdo do resultado do reconhecimento. Valores válidos:
Valor padrão: application/json. |
User-Agent | Identificação do dispositivo e/ou aplicação que está gerando o áudio. Útil para fins de log de aplicação. |
Content-Length | Indica o número de bytes do conteúdo |
Content-Type | Indica o formato do áudio enviado. Formatos válidos:
|
O reconhecimento de fala pode ser configurado para se adaptar às características específicas da aplicação. A configuração é feita através de parâmetros definidos como headers da requisição HTTP. A lista dos parâmetros é encontrada em Parâmetros de reconhecimento
Parâmetros da requisição
audio.rate | indica a taxa do áudio que se está enviando. Permite que o serviço utilize o modelo acústico adequado para o reconhecimento. Valores possíveis:
|
lm | URI do modelo de língua. Caso não seja informada, será retornado um erro. A URI deve possuir um dos prefixos abaixo:
|
Resultado
O resultado do reconhecimento é um objeto que possui a seguinte estrutura:
recognition_result
- alternatives
- result_status
alternatives: lista com os resultados prováveis do reconhecimento
- index: índice da alternativa de resultado
- text: texto reconhecimento
- score: pontuação ou índice de confiança
- interpretations: lista com os resultados da interpretação, conforme definido na gramática. Em caso de modelo de língua de fala livre, essa lista é vazia.
result_status: estado do reconhecimento. Pode ser um dos valores abaixo:
result_status Descrição RECOGNIZED reconhecimento realizado com sucesso NO_MATCH reconhecimento realizado com sucesso mas sem correspondência na gramática NO_INPUT_TIMEOUT o reconhecimento não detectou o início de fala antes do vencimento do temporizador EARLY_SPEECH o áudio recebido não possui trecho de silêncio inicial (a fala começou antes do início do reconhecimento) MAX_SPEECH o servidor recebeu uma quantidade de áudio maior do que a capacidade de processamento RECOGNITION_TIMEOUT não foi possível gerar um resultado final antes do vencimento do temporizador NO_SPEECH não foi possível detectar fala no áudio enviado CANCELED o reconhecimento foi cancelado FAILURE falha não específica no servidor
Exemplos
Chamada REST:
curl -X POST \
--user username:passwd \
--header "Content-Type: audio/wav" \
--data-binary '@bank-transfira-8k.wav' \
https://speech.cpqd.com.br/asr/rest/v1/recognize?lm=builtin:grammar/samples/bank
Resultado JSON:
{
"alternatives":[
{
"text":"transfira seis mil novecentos e trinta e sete reais para a conta corrente",
"interpretations":[{
"action":"TRANSFERENCIA",
"money":6937,
"to_account_type":"CONTA_CORRENTE"
}],
"words":[
{"text":"transfira","score":100,"start_time":2.26,"end_time":3.0099998},
{"text":"seis","score":100,"start_time":3.0099998,"end_time":3.37},
{"text":"mil","score":100,"start_time":3.37,"end_time":3.61},
{"text":"novecentos","score":100,"start_time":3.61,"end_time":4.33},
{"text":"e","score":100,"start_time":4.33,"end_time":4.39},
{"text":"trinta","score":100,"start_time":4.39,"end_time":4.7499404},
{"text":"e","score":99,"start_time":4.7499404,"end_time":4.810059},
{"text":"sete","score":100,"start_time":4.810059,"end_time":5.2},
{"text":"reais","score":100,"start_time":5.2,"end_time":5.709542},
{"text":"para","score":90,"start_time":5.71106,"end_time":5.988702},
{"text":"a","score":45,"start_time":5.990944,"end_time":6.0397873},
{"text":"conta","score":100,"start_time":6.0425696,"end_time":6.4599996},
{"text":"corrente","score":100,"start_time":6.4599996,"end_time":7.1797533}
],
"score":95,
"lm":"file:///opt/cpqd/asr/tools/grammar/samples/ptbr/bank.gram",
"interpretation_scores":[94]
},
{
"text":"transfira seis mil novecentos e trinta e sete reais para conta corrente",
"interpretations":[{
"action":"TRANSFERENCIA",
"money":6937,
"to_account_type":"CONTA_CORRENTE"
}],
"words":[
{"text":"transfira","score":100,"start_time":2.26,"end_time":3.0099998},
{"text":"seis","score":100,"start_time":3.0099998,"end_time":3.37},
{"text":"mil","score":100,"start_time":3.37,"end_time":3.61},
{"text":"novecentos","score":100,"start_time":3.61,"end_time":4.33},
{"text":"e","score":100,"start_time":4.33,"end_time":4.39},
{"text":"trinta","score":100,"start_time":4.39,"end_time":4.7499404},
{"text":"e","score":99,"start_time":4.7499404,"end_time":4.810059},
{"text":"sete","score":100,"start_time":4.810059,"end_time":5.2},
{"text":"reais","score":100,"start_time":5.2,"end_time":5.709542},
{"text":"para","score":90,"start_time":5.7138157,"end_time":6.011838},
{"text":"conta","score":100,"start_time":6.0425696,"end_time":6.4599996},
{"text":"corrente","score":100,"start_time":6.4599996,"end_time":7.1797533}
],
"score":95,
"lm":"file:///opt/cpqd/asr/tools/grammar/samples/ptbr/bank.gram",
"interpretation_scores":[99]
},
{
"text":"transfira seis mil novecentos e trinta e sete reais pra conta corrente",
"interpretations":[{
"action":"TRANSFERENCIA",
"money":6937,
"to_account_type":"CONTA_CORRENTE"
}],
"words":[
{"text":"transfira","score":100,"start_time":2.26,"end_time":3.0099998},
{"text":"seis","score":100,"start_time":3.0099998,"end_time":3.37},
{"text":"mil","score":100,"start_time":3.37,"end_time":3.61},
{"text":"novecentos","score":100,"start_time":3.61,"end_time":4.33},
{"text":"e","score":100,"start_time":4.33,"end_time":4.39},
{"text":"trinta","score":100,"start_time":4.39,"end_time":4.7499404},
{"text":"e","score":99,"start_time":4.7499404,"end_time":4.810059},
{"text":"sete","score":100,"start_time":4.810059,"end_time":5.2},
{"text":"reais","score":100,"start_time":5.2,"end_time":5.709542},
{"text":"pra","score":9,"start_time":5.7180476,"end_time":6.012299},
{"text":"conta","score":100,"start_time":6.0425696,"end_time":6.4599996},
{"text":"corrente","score":100,"start_time":6.4599996,"end_time":7.1797533}
],
"score":92,
"lm":"file:///opt/cpqd/asr/tools/grammar/samples/ptbr/bank.gram",
"interpretation_scores":[92]}
],
"segment_index":0,
"last_segment":true,
"final_result":true,
"start_time":1.93,
"end_time":7.38,
"result_status":"RECOGNIZED"
}
Resultado XML:
<?xml version="1.0" encoding="UTF-8"?>
<recognition_result>
<segment_index>0</segment_index>
<last_segment>true</last_segment>
<final_result>true</final_result>
<start_time>1.93</start_time>
<end_time>7.38</end_time>
<result_status>RECOGNIZED</result_status>
<alternatives>
<alternative>
<text>transfira seis mil novecentos e trinta e sete reais para a conta corrente</text>
<score>95</score>
<lm>file:///opt/cpqd/asr/tools/grammar/samples/ptbr/bank.gram</lm>
<interpretations>
<interpretation>
<action>TRANSFERENCIA</action>
<money>6937</money>
<to_account_type>CONTA_CORRENTE</to_account_type>
</interpretation>
</interpretations>
<interpretation_scores>
<interpretation_score>94</interpretation_score>
</interpretation_scores>
<words>
<word><text>transfira</text><score>100</score><start_time>2.26</start_time><end_time>3.0099998</end_time></word>
<word><text>seis</text><score>100</score><start_time>3.0099998</start_time><end_time>3.37</end_time></word>
<word><text>mil</text><score>100</score><start_time>3.37</start_time><end_time>3.61</end_time></word>
<word><text>novecentos</text><score>100</score><start_time>3.61</start_time><end_time>4.33</end_time></word>
<word><text>e</text><score>100</score><start_time>4.33</start_time><end_time>4.39</end_time></word>
<word><text>trinta</text><score>100</score><start_time>4.39</start_time><end_time>4.749938</end_time></word>
<word><text>e</text><score>99</score><start_time>4.749938</start_time><end_time>4.8100615</end_time></word>
<word><text>sete</text><score>100</score><start_time>4.8100615</start_time><end_time>5.2</end_time></word>
<word><text>reais</text><score>100</score><start_time>5.2</start_time><end_time>5.7095466</end_time></word>
<word><text>para</text><score>90</score><start_time>5.711042</start_time><end_time>5.9897656</end_time></word>
<word><text>a</text><score>45</score><start_time>5.991897</start_time><end_time>6.039843</end_time></word>
<word><text>conta</text><score>100</score><start_time>6.0425854</start_time><end_time>6.4599996</end_time></word>
<word><text>corrente</text><score>100</score><start_time>6.4599996</start_time><end_time>7.179733</end_time></word>
</words>
</alternative>
<alternative>
<text>transfira seis mil novecentos e trinta e sete reais para conta corrente</text>
<score>95</score>
<lm>file:///opt/cpqd/asr/tools/grammar/samples/ptbr/bank.gram</lm>
<interpretations>
<interpretation>
<action>TRANSFERENCIA</action>
<money>6937</money>
<to_account_type>CONTA_CORRENTE</to_account_type>
</interpretation>
</interpretations>
<interpretation_scores>
<interpretation_score>99</interpretation_score>
</interpretation_scores>
<words>
<word><text>transfira</text><score>100</score><start_time>2.26</start_time><end_time>3.0099998</end_time></word>
<word><text>seis</text><score>100</score><start_time>3.0099998</start_time><end_time>3.37</end_time></word>
<word><text>mil</text><score>100</score><start_time>3.37</start_time><end_time>3.61</end_time></word>
<word><text>novecentos</text><score>100</score><start_time>3.61</start_time><end_time>4.33</end_time></word>
<word><text>e</text><score>100</score><start_time>4.33</start_time><end_time>4.39</end_time></word>
<word><text>trinta</text><score>100</score><start_time>4.39</start_time><end_time>4.749938</end_time></word>
<word><text>e</text><score>99</score><start_time>4.749938</start_time><end_time>4.8100615</end_time></word>
<word><text>sete</text><score>100</score><start_time>4.8100615</start_time><end_time>5.2</end_time></word>
<word><text>reais</text><score>100</score><start_time>5.2</start_time><end_time>5.7095466</end_time></word>
<word><text>para</text><score>91</score><start_time>5.713287</start_time><end_time>6.0115943</end_time></word>
<word><text>conta</text><score>100</score><start_time>6.0425854</start_time><end_time>6.4599996</end_time></word>
<word><text>corrente</text><score>100</score><start_time>6.4599996</start_time><end_time>7.179733</end_time></word>
</words>
</alternative>
<alternative>
<text>transfira seis mil novecentos e trinta e sete reais pra conta corrente</text>
<score>92</score>
<lm>file:///opt/cpqd/asr/tools/grammar/samples/ptbr/bank.gram</lm>
<interpretations>
<interpretation>
<action>TRANSFERENCIA</action>
<money>6937</money>
<to_account_type>CONTA_CORRENTE</to_account_type>
</interpretation>
</interpretations>
<interpretation_scores>
<interpretation_score>92</interpretation_score>
</interpretation_scores>
<words>
<word><text>transfira</text><score>100</score><start_time>2.26</start_time><end_time>3.0099998</end_time></word>
<word><text>seis</text><score>100</score><start_time>3.0099998</start_time><end_time>3.37</end_time></word>
<word><text>mil</text><score>100</score><start_time>3.37</start_time><end_time>3.61</end_time></word>
<word><text>novecentos</text><score>100</score><start_time>3.61</start_time><end_time>4.33</end_time></word>
<word><text>e</text><score>100</score><start_time>4.33</start_time><end_time>4.39</end_time></word>
<word><text>trinta</text><score>100</score><start_time>4.39</start_time><end_time>4.749938</end_time></word>
<word><text>e</text><score>99</score><start_time>4.749938</start_time><end_time>4.8100615</end_time></word>
<word><text>sete</text><score>100</score><start_time>4.8100615</start_time><end_time>5.2</end_time></word>
<word><text>reais</text><score>100</score><start_time>5.2</start_time><end_time>5.7095466</end_time></word>
<word><text>pra</text><score>8</score><start_time>5.7179365</start_time><end_time>6.0120983</end_time></word>
<word><text>conta</text><score>100</score><start_time>6.0425854</start_time><end_time>6.4599996</end_time></word>
<word><text>corrente</text><score>100</score><start_time>6.4599996</start_time><end_time>7.179733</end_time></word>
</words>
</alternative>
</alternatives>
</recognition_result>
INTERPRET¶
Realiza a interpretação semântica de um texto fornecido pelo cliente, usando a gramática indicada, de forma similar a RECOGNIZE. O texto deve ser enviado no corpo da mensagem HTTP. O reconhecimento é realizado de forma síncrona e o resultado vem na resposta HTTP.
Requisição
POST /asr-server/rest/interpret
HTTP Headers
Accept | (Opcional) Tipo de conteúdo do resultado do reconhecimento. Valores válidos:
Valor padrão: application/json. |
User-Agent | Identificação do dispositivo e/ou aplicação que está gerando o áudio. Útil para fins de log de aplicação. |
Content-Length | Indica o número de bytes do conteúdo |
Content-Type | Indica o formato do áudio enviado. Formatos válidos:
|
Parâmetros da requisição
lm | URI do modelo de língua. Caso não seja informada, será retornado um erro. A URI deve possuir um dos prefixos abaixo:
|
Resultado
O resultado do reconhecimento é um objeto que possui a seguinte estrutura: