Funções do Dialplan do Asterisk 20
Comando:
TALK_DETECT()
Sinopse:
Gera notificações quando o Asterisk detecta silêncio ou fala em um canal.
Descrição:
A função TALK_DETECT() habilita eventos em um canal, que podem ser emitidos via AMI, ARI e potencialmente outros módulos do Asterisk que escutam por notificações internas.
A função possui dois parâmetros opcionais que podem ser passados quando definida em um canal: dsp_talking_threshold e dsp_silence_threshold.
dsp_talking_threshold define o tempo em milissegundos de som acima do nível de silêncio base estabelecido pelo DSP para que um usuário seja considerado falando. Por padrão, utiliza o valor de silencethreshold do arquivo dsp.conf. Definir este valor muito baixo pode gerar falsos positivos devido a ruídos no ambiente.
Valores válidos são de 1 a 231.
dsp_silence_threshold define o tempo em milissegundos de som abaixo do nível de silêncio base estabelecido pelo DSP para que um usuário seja considerado em silêncio. Definir este valor muito baixo pode gerar falsos positivos quando o usuário faz uma pausa breve durante a fala.
O ideal é definir este valor ligeiramente acima do tempo máximo de silêncio que um usuário pode gerar durante a fala natural.
O valor padrão é 2500ms. Valores válidos são de 1 a 231.
Exemplos:
same => n,Set(TALK_DETECT(set)=) - Habilita a detecção de fala.
same => n,Set(TALK_DETECT(set)=1200) - Atualiza o limite de silêncio da detecção de fala existente para 1200ms.
same => n,Set(TALK_DETECT(remove)=) - Remove a detecção de fala.
same => n,Set(TALK_DETECT(set)=,128) - Habilita e define o limite de fala para 128.
Observação: A função TALK_DETECT() utiliza um audiohook para inspecionar os frames de mídia de voz em um canal. Outras funções, como JITTERBUFFER, DENOISE e AGC, utilizam um mecanismo similar. Os audiohooks são processados na ordem em que são colocados no canal. Portanto, geralmente é recomendado colocar funções que modificam os dados de mídia de voz antes de colocar a função TALK_DETECT(), para obter melhores resultados.
Exemplo:
same => n,Set(DENOISE(rx)=on) ; Remove ruído do áudio recebido.
same => n,Set(TALK_DETECT(set)=) ; Realiza a detecção de fala no áudio recebido com ruído removido.
TALK_DETECT(action)
action remove - Remove a detecção de fala do canal.
set(dsp_silence_threshold,dsp_talking_threshold) - Habilita TALK_DETECT e/ou configura os parâmetros de detecção de fala. Pode ser chamado várias vezes para alterar os parâmetros em um canal com detecção de fala já habilitada.
dsp_silence_threshold - O tempo em milissegundos de som abaixo do dsp_talking_threshold quando um usuário é considerado em silêncio. O valor padrão é 2500.
dsp_talking_threshold - A magnitude mínima média por amostra em um frame para que o DSP considere que há fala/ruído presente. Um valor abaixo deste nível é considerado silêncio. Se não especificado, o valor vem da opção silencethreshold do dsp.conf ou 256 se o dsp.conf não existir ou a opção silencethreshold não estiver definida.
Sintaxe:
same => n,Set(TALK_DETECT(set)=)
same => n,Set(TALK_DETECT(set)=1200)
same => n,Set(TALK_DETECT(remove)=)
same => n,Set(TALK_DETECT(set)=,128)
same => n,Set(DENOISE(rx)=on) ; Denoise received audio
same => n,Set(TALK_DETECT(set)=) ; Perform talk detection on the denoised received audio
TALK_DETECT(action)
Fonte: Asterisk Wiki