Funções do Dialplan do Asterisk 22
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 arquivo
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 da frase. A melhor abordagem para esta opção é defini-la levemente acima do tempo máximo em ms 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 até 2^31.
Exemplo: Habilitar detecção de fala
same => n,Set(TALK_DETECT(set)=)Exemplo: Atualizar o limiar de silêncio da detecção de fala existente para 1200 ms
same => n,Set(TALK_DETECT(set)=1200)Exemplo: Remover detecção de fala
same => n,Set(TALK_DETECT(remove)=)Exemplo: Habilitar e definir limiar de fala para 128
same => n,Set(TALK_DETECT(set)=,128)Observação: A função
TALK_DETECT utiliza um
audiohook para inspecionar os quadros de mídia de voz em um canal. Outras funções, como
JITTERBUFFER,
DENOISE e
AGC, usam mecanismo similar.
Audiohooks são processados na ordem em que são colocados no canal. Por isso, geralmente faz sentido posicionar funções que modificam os dados de mídia de voz antes de posicionar a função
TALK_DETECT, pois isso produzirá melhores resultados.
Exemplo: Redução de ruído e depois detecção de fala
same => n,Set(DENOISE(rx)=on) ; Reduzir ruído do áudio recebidosame => n,Set(TALK_DETECT(set)=) ; Realizar detecção de fala no áudio recebido já com redução de ruídoTALK_DETECT(action)actionremove - 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 quadro para que o DSP considere fala/ruído presente. Um valor abaixo desse nível é 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.