API MRCP¶
O MRCP é um protocolo frequentemente utilizado para disponibilizar recursos de áudio, síntese e reconhecimento de fala em sistemas de telecomunicações. No caso de URAs (Unidades de Resposta Audível), é um padrão para desenvolver aplicações de diálogo baseadas em síntese e reconhecimento de fala e na reprodução de prompts para os usuários.
Para informações sobre a integração usando MRCP, consulte o Manual do Servidor CPQD MRCP.
Métodos¶
Para a integração com os classificadores de idade, gênero e emoção foram incluídos novos parâmetros “vendor specific” nos métodos descritos a seguir.
SET PARAMETERS
Abaixo está o formato dos parâmetros “vendor specific” para acionamento dos classificadores de voz:
Vendor-Specific-Parameters: br.com.cpqd.asr.Infer-age-enabled=true; br.com.cpqd.asr.Infer-gender-enabled=true;br.com.cpqd.asr.Infer-emotion-enabled=true
GET PARAMETERS
Vale o mesmo comentário do método Set Parameters, com a exceção de que um Get Parameters vazio, não solicita parâmetros «specific vendor», será necessário solicitá-los explicitamente, ou incluí-los na solicitação com os demais parâmetros.
START RECOGNITION
Os parâmetros “vendor specific” podem ser usados no método Start Recognition e seguem o formato do Set Parameters.
RECOGNITION RESULT
Mensagem que contém o resultado do reconhecimento. Ela deve ser combinada com o resultado da classificação de gênero, idade e emoção caso estejam disponíveis. Os campos abaixo (em negrito) devem ser adicionados ao objeto do resultado do reconhecimento.
Headers:
Campo
Descrição
Tipo do campo
age_scores:
Dicionário que contém o tipo de evento, a idade estipulada e a probabilidade.
Dict: { event: <string>, age: <int>, p: <array[float]>, age_50: <array[int]>, age_80: <array[int]>, age_99: <array[int]>, }gender_scores:
Dicionário que contém o tipo de evento, a probabilidade e o gênero.
Dict: { event: <string>, p: <array[float]>, gender: <string>, }emotion_scores:
Dicionário que contém a probabilidade e o tipo de emoção em um formato <K,V>.
Dict: { p: <dict> { <string>: <float> }, event: <string>, emotion: <string>, }Exemplo de conteúdo:
<?xml version="1.0" encoding="UTF-8"?> <result> <interpretation grammar="builtin:slm/general" confidence="0.91"> <instance>eu quero uma pizza vegetariano</instance> <input mode="speech">eu quero uma pizza vegetariano</input> </interpretation> <age-scores> <event>AGE RESULT</event> <p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000000</p> <p>0.000116</p> <p>0.000568</p> <p>0.001398</p> <p>0.002690</p> <p>0.002863</p> <p>0.003313</p> <p>0.006897</p> <p>0.021486</p> <p>0.031100</p> <p>0.039255</p> <p>0.052133</p> <p>0.068787</p> <p>0.096417</p> <p>0.121222</p> <p>0.147217</p> <p>0.178631</p> <p>0.198858</p> <p>0.224273</p> <p>0.254821</p> <p>0.284483</p> <p>0.311271</p> <p>0.337931</p> <p>0.367762</p> <p>0.393655</p> <p>0.427061</p> <p>0.456557</p> <p>0.482710</p> <p>0.500024</p> <p>0.525248</p> <p>0.552225</p> <p>0.577556</p> <p>0.608544</p> <p>0.627145</p> <p>0.646607</p> <p>0.663277</p> <p>0.684210</p> <p>0.710832</p> <p>0.727683</p> <p>0.748482</p> <p>0.764080</p> <p>0.780238</p> <p>0.798526</p> <p>0.816560</p> <p>0.836532</p> <p>0.851102</p> <p>0.863376</p> <p>0.878755</p> <p>0.897002</p> <p>0.904588</p> <p>0.913626</p> <p>0.923301</p> <p>0.931504</p> <p>0.939743</p> <p>0.944034</p> <p>0.948489</p> <p>0.953124</p> <p>0.955638</p> <p>0.965674</p> <p>0.975005</p> <p>0.981188</p> <p>0.984547</p> <p>0.984608</p> <p>0.987012</p> <p>0.987012</p> <p>0.991108</p> <p>0.991108</p> <p>0.994282</p> <p>0.994282</p> <p>0.994282</p> <p>0.996831</p> <p>0.996831</p> <p>0.996831</p> <p>0.996831</p> <p>0.998747</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> <p>1.000000</p> </p> <age-range prob="age_50"> <age>29</age> <age>49</age> </age-range> <age-range prob="age_80"> <age>23</age> <age>58</age> </age-range> <age-range prob="age_99"> <age>16</age> <age>77</age> </age-range> <age>40</age> </age-scores> </result> <?xml version="1.0" encoding="UTF-8"?> <result> <interpretation grammar="builtin:slm/general" confidence="0.91"> <instance>eu quero uma pizza vegetariano</instance> <input mode="speech">eu quero uma pizza vegetariano</input> </interpretation> <emotion-scores> <event>EMOTION RESULT</event> <p> <p emotion="amedrontado">0.010442</p> <p emotion="ansioso">0.004266</p> <p emotion="enojado">0.016020</p> <p emotion="entusiasmado">0.014407</p> <p emotion="feliz">0.002329</p> <p emotion="frustrado">0.004790</p> <p emotion="irritado">0.005200</p> <p emotion="neutro">0.873555</p> <p emotion="surpreso">0.001975</p> <p emotion="triste">0.067016</p> </p> <emotion>neutro</emotion> </emotion-scores> </result> <?xml version="1.0" encoding="UTF-8"?> <result> <interpretation grammar="builtin:slm/general" confidence="0.91"> <instance>eu quero uma pizza vegetariano</instance> <input mode="speech">eu quero uma pizza vegetariano</input> </interpretation> <gender-scores> <event>GENDER RESULT</event> <p> <p>0.691992</p> <p>0.308008</p> </p> <gender>M</gender> </gender-scores> </result>