Configuração do Serviço MRCP

Configuração Padrão

Os codecs de áudio suportados pelo MRCP do CPQD são:

  • PCMA (8kHz)

  • PCMU (8kHz)

O Serviço MRCP possui uma configuração padrão de portas que são usadas de acordo com a versão do protocolo:

  • MRCPv1

    • Porta 1554, para RTSP

    • Portas 5000 a 6000, para o RTP

  • MRCPv2

    • Porta 8060, para SIP

    • Porta 1544, para MRCPv2 Agent

    • Portas 5000 a 6000, para o RTP

No MRCPv1, além da informar quais portas atenderão os respectivos protocolos, é preciso informar o Resource Path de cada serviço de mídia disponível. Os Resource Paths padrão são:

  • Resource Path da Síntese: speechsynthesizer

  • Resource Path do Reconhecimento: speechrecognizer

Parâmetros do Serviço MRCP

Aviso

Os arquivos de configuração a serem editados estão em /opt/cpqd/mrcp/server/conf/templates e /opt/cpqd/mrcp/server/conf/cpqd. Após a edição desejada, o script /opt/cpqd/mrcp/server/bin/configure deve ser executado para que as alterações tenham efeito.

  1. Para alterar o endereço IP do Serviço MRCP, edite o arquivo: /opt/cpqd/mrcp/server/conf/cpqd/common.xml

  2. Os parâmetros de configuração do Servidor MRCP são ajustados por meio da atribuição de valores a variáveis pré definidas. Qualquer alteração será válido somente após o reinicialização do Servidor. /opt/cpqd/mrcp/server/conf/templates/unimrcpserver.xml

  3. Para alterar configuração dos perfis, altere os dois arquivos: /opt/cpqd/mrcp/server/conf/templates/unimrcpserver.xml e /opt/cpqd/mrcp/server/conf/templates/cpqd.xml

Servidores de Recursos MRCP

  1. As engines de recursos MRCP (Síntese de fala, Reconhecimento de voz e Verificação de locutor) são configuradas dentro da plugin-factory do arquivo de configuração do servidor MRCP: /opt/cpqd/mrcp/server/conf/unimrcpserver.xml. Cada plugin é identificado pelo nome do plugin: cpqd_mrcp_tts, cpqd_mrcp_asr e cpqd_mrcp_ver. Estas engines apontam para os respectivos servidores de recursos.

  2. Para os recursos com suporte a TLS estão disponíveis o parâmetro ssl_certificate_path para indicar o caminho da pasta que comtém os certificados.

  3. Os plugins para uso nos ambientes em nuvem é necessário configurar autenticação por token, para permitir o acesso e bilhetagem no ambiente. Os seguintes parâmetros estão disponíveis: sl_url para configuração da URL do servidor de licensa para obter o token de autenticação, token_user_id e token_password com o usuário e senha para obtenção do token. Cada tipo de recurso possui usuário e senha distinto porque estão vincluladas a licenças com funcionalidade específicas.

Parâmetros de configuração das engines

Engine TTS

<plugin-factory>
    <engine id="CPqD-TTS" name="cpqd_mrcp_tts" enable="true">
		<param name="tts_server_ip" value="$TTS_SERVER_IP"/>
		<param name="tts_server_port" value="$TTS_SERVER_PORT"/>
		<param name="tts_timeout_net" value="20"/>
		<param name="sl_url" value="$MRCP_SL_URL"/>
		<param name="tts_server_ssl" value="$MRCP_TLS_ENABLE"/>
		<param name="ssl_certificate_path" value="$SSL_CERT_PATH"/>
		<param name="token_user_id" value="user"/>
		<param name="token_password" value="password"/>
		<param name="tts_encoder_8k" value="$MRCP_ENCODER_8k"/>
		<param name="tts_default_voice_name" value="$TTS_VOICE"/>
	</engine>
</plugin-factory>	

Parâmetros obrigatórios:

  • tts_server_ip: IP ou URL do servidor TTS

  • tts_server_port: Porta do servidor TTS

  • tts_timeout_net: timeout para respostas de rede em ms (padrão 10s)

Parâmetros para conexão a servidores com segurança em nuvem:

  • sl_url: URL do servidor do servidor de licença para obtenção do token

  • token_user_id: user id para obtenção de token

  • token_password: senha par obtenção do token

  • tts_server_ssl: indica se a conexão gRPC utiliza TSL

  • ssl_certificate_path: caminho para a chave do certificado para conexão gRPC com TLS

Outros parâmetros:

  • tts_encoder_8k: encoder 8k padrão que será procurado caso o encoder caso o encoder “pcm/8000/16/1” não seja encontrada na lista do servidor

  • tts_encoder_16k: encoder 16k padrão que será procurado caso o encoder caso o encoder “pcm/16000/16/1” não seja encontrada na lista do servidor

  • tts_default_voice_name: quando definida será a voz padrão utilizada caso nenhuma voz esteja presente na requisição de síntese, caso contrário irá usar como padrão a primeira voz da lista de vozes retornada pelo servidor

  • tts_default_ptbr_male_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz masculina no idioma português

  • tts_default_ptbr_female_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz feminina no idioma português

  • tts_default_ptbr_neutral_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz neutra no idioma português

  • tts_default_es_male_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz masculina no idioma espanhol

  • tts_default_es_female_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz feminina no idioma português

  • tts_default_es_neutral_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz neutra no idioma espanhol

  • tts_default_en_male_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz masculina no idioma inglês

  • tts_default_en_female_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz feminina no idioma inglês

  • tts_default_en_neutral_voice_name: é a voz utilizada quando requisição MRCP solicita uma voz neutra no idioma inglês

  • language_name_ptbr: é a grafia do idioma português na requisição MRCP (valor padrão: pt-BR)

  • language_name_es: é a grafia do idioma espanhol na requisição MRCP (valor padrão: es-ES)

  • language_name_en: é a grafia do idioma inglês na requisição MRCP (valor padrão: en-EU)

Nota

É possível flexibilizar o nome dos idiomas, acima estão os parâmetros utilizados com os valores padrão, que são assumidos caso o usuário não tenha configurado nenhum deles. Se o equipamento enviar outra variante do idioma ou uma sequência diferente de caracteres nas mensagens MRCP, o ajuste poderá ser feito através desses parâmetros na seção engine de síntese de fala no arquivo de configuração.

Nota

Para equipamentos que não enviam o parâmetro Voice-Name nas mensagens de requisição de síntese de fala, é disponiblizado um mapeamento dos parâmetros Voice-Gender e Speech-Language para um valor padrão de voz conforme o gênero e idioma enviados. Se a configuração da voz padrão não for preenchida, nenhum voice-name será enviado ao servidor TTS, caso a mensagem MRCP não contenha essa informação. Os seguintes mapeamentos estão disponibilizados e podem ser configurados na engine de síntese de fala:

Nota

A solicitação dos parâmetros de gênero e idioma poderá ser feito nas mensagens MRCP de Speak e Set-Parameters. Contudo a consulta via Get-Parameters irá retornar os parâmetros ajustados e a voz padrão enviada ao TTS quando a consulta incluir o parâmetro Voice-Name.

Engine ASR

<plugin-factory>	  
	<engine id="CPqD-ASR" name="cpqd_mrcp_asr" enable="true">
		<param name="cpqd_asr_server" value="http://SERVER_IP:PORT"/>
		<param name="timeout_net_sec" value="20"/>
		<param name="ivr_vendor" value="asterisk"/>
		<param name="validate_ssl_certificate" value="false"/>
		<param name="sl_url" value="https://CPQD_SL_IP:CPQD_SL_PORT"/>
		<param name="token_user_id" value="user"/-->
		<param name="token_password" value="password"/>
		<param name="ssl_certificate_path" value="$SSL_CERT_PATH"/>
		<param name="grpc_metadata" value="x-asr-grpc:general"/>
	</engine>
</plugin-factory>	

Parâmetros Obrigatórios:

  • cpqd_asr_server: URL de conexão ao servidor ASR, quando o servidor é conectado com segurança a URL será inciada por https, caso contrário será http.

  • timeout_net_sec: timeout de conexão de rede valor padrão (10s)

Parâmetros para conexão a servidores com segurança em nuvem:

  • sl_url: URL do servidor do servidor de licença para obtenção do token

  • token_user_id: user id para obtenção de token

  • token_password: senha par obtenção do token

  • ssl_certificate_path: caminho para a chave do certificado para conexão gRPC com segurança

  • grpc_metadata: Utilizado na instalação para uso do ambiente Saas do ASR, com o objetivo de diferenciar os modelos de língua general e call center respectivamento. Valores permitidos: «x-asr-grpc:general» ou «x-asr-grpc:call»

Outros parâmetros:

  • ivr_vendor: vendor para formatação do XML de resposta, existe customização apenas para o vendor CISCO e GENERIC.

Engine VER

<plugin-factory>
    <engine id="CPqD-VER" name="cpqd_mrcp_ver" enable="true">
    	<param name="cpqd_ver_server" value="http://0.0.0.0:9293/"/>
    	<param name="timeout_net_sec" value="20"/>
    	<param name="ivr_vendor" value="asterisk"/>
    	<param name="validate_ssl_certificate" value="false"/>
    	<param name="sl_url" value="https://CPQD_SL_IP:CPQD_SL_PORT"/>
    	<param name="token_user_id" value="TOKEN_VER_USER_ID"/>
    	<param name="token_password" value="TOKEN_VER_PASSWORD"/>
    	<param name="verification_scenario" value="mrcp@sr8khz"/>
    </engine>
</plugin-factory>	

Parâmetros Obrigatórios:

  • cpqd_asr_server: URL de conexão ao servidor ASR, quando o servidor é conectado com segurança a URL será inciada por https, caso contrário será http.

  • timeout_net_sec: timeout de conexão de rede valor padrão (10s)

  • verification_scenario: Nome do cenário de verificação a ser usado por padrão se o cliente não enviou na requisição

Parâmetros para conexão a servidores com segurança em nuvem:

  • sl_url: URL do servidor do servidor de licença para obtenção do token

  • token_user_id: user id para obtenção de token

  • token_password: senha par obtenção do token

  • ssl_certificate_path: caminho para a chave do certificado para conexão gRPC com segurança

Outros parâmetros:

  • ivr_vendor: vendor para formatação do XML de resposta, existe customização apenas para o vendor CISCO e GENERIC.

Nota

Novidades

Suporte a variáveis de ambiente nas configurações de engines

O valor de cada parâmetro das engines pode ser substituído pelo valor da variável de ambiente cujo nome está precedido por $. Assim para a configuração abaixo a URL do servidor TTS será o valor da variável de ambiente TTS_SERVER_IP.: <param name="tts_server_ip" value="$TTS_SERVER_IP"/>

Load balance gRPC

É possível realizar uma configuração de load balance conforme descrito em gRPC Load Balancing

O seguinte parâmetro está disponível nas engines para configuração do load balance:

  • grpc_load_balance: tipo de load balance pick_first ou round_robin. O valor padrão é o round_robin.

Aviso

A engine TTS suporta apenas o recurso de Síntese de fala, a engine ASR suporta apenas o recurso de Reconhecimento de voz (com e sem classificadores) e a engine VER suporta os recursos de Reconhecimento de voz e Verificação de locutor, podendo ambos serem configurados na mesma plugin-factory do arquivo de configuração.