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 no canal ao qual é aplicada. Esses eventos podem ser emitidos via AMI, ARI e potencialmente outros módulos do Asterisk que escutam as notificações internas. A função possui dois parâmetros opcionais que podem ser passados quando 'set' é aplicado a 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 ele seja considerado como falando. Por padrão, o valor de silencethreshold do dsp.conf é utilizado. Se esse valor for definido muito baixo, eventos podem ser acionados falsamente por variações no ruído ambiente. Valores válidos são de 1 até 2^31. 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 silencioso. Se esse 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 no meio de uma frase. A melhor abordagem é definir esse valor levemente acima da quantidade máxima de ms de silêncio que um usuário pode gerar durante a fala natural. Por padrão, esse valor é 2500ms. Valores válidos são de 1 até 2^31.
Exemplo: Habilitar detecção de fala => n,Set(TALK_DETECT(set)=)
Exemplo: Atualizar o limiar de silêncio da detecção de fala existente para 1200ms => n,Set(TALK_DETECT(set)=1200)
Exemplo: Remover detecção de fala => n,Set(TALK_DETECT(remove)=)
Exemplo: Habilitar e definir limiar de fala para 128 => n,Set(TALK_DETECT(set)=,128)
Nota: 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 mecanismo similar. Os audiohooks são processados na ordem em que são colocados no canal. Por isso, normalmente faz sentido colocar funções que modificam os dados de mídia de voz antes de colocar a função TALK_DETECT, pois isso resultará em melhores resultados.
Exemplo: Reduzir ruído e depois realizar detecção de fala => n,Set(DENOISE(rx)=on) ; Reduzir ruído do áudio recebido
=> n,Set(TALK_DETECT(set)=) ; Realizar detecção de fala no áudio recebido já com redução de ruído
TALK_DETECT(action)
action remove - W/O. Remove a detecção de fala do canal. set(dsp_silence_threshold,dsp_talking_threshold) - W/O. Habilita TALK_DETECT e/ou configura os parâmetros de detecção de fala. Pode ser chamado múltiplas vezes para alterar parâmetros em um canal com detecção de fala já habilitada. dsp_silence_threshold - O tempo em milissegundos de som abaixo da opção dsp_talking_threshold quando um usuário é considerado como tendo parado de falar. O valor padrão é 2500. dsp_talking_threshold - A magnitude média mínima por amostra em um frame para o DSP considerar fala/ruído presente. Um valor abaixo desse é considerado silêncio. Se não especificado, o valor vem da opção silencethreshold do dsp.conf ou 256 se 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