Funções do Dialplan do Asterisk 21
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. Esses eventos podem ser emitidos via AMI, ARI e potencialmente outros módulos do Asterisk que escutam a notificação interna.
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 é o tempo em milissegundos de som acima do que o DSP estabeleceu como silêncio base para um usuário, antes que o usuário seja considerado falando. Por padrão, o valor de silencethreshold do arquivo dsp.conf é usado. Se este valor for definido muito baixo, eventos podem ser disparados falsamente por variações no ruído ambiente.
Valores válidos são de 1 a 231.
dsp_silence_threshold é o tempo em milissegundos de som abaixo do que o DSP estabeleceu como silêncio base, antes que o usuário seja considerado em silêncio. Se este valor for definido muito baixo, eventos indicando que o usuário parou de falar podem ser enviados falsamente quando o usuário faz uma breve pausa durante uma frase.
A melhor abordagem é definir este valor ligeiramente acima da quantidade máxima de milissegundos de silêncio que um usuário pode gerar durante a fala natural.
Por padrão, este valor é 2500ms. Valores válidos são de 1 a 231.
Exemplos:
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)
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, usam um mecanismo similar. Os audiohooks são processados na ordem em que são colocados no canal. Portanto, geralmente faz sentido colocar funções que modificam os dados de mídia de voz antes de colocar a função TALK_DETECT(), pois isso produzirá melhores resultados.
Exemplo:
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)
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édia mínima 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 arquivo 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