已连接电话的星号静音检测

问题描述 投票:1回答:2

抱歉,如果我的问题对您没有意义。我是星号的新手,我想做的是编写一个拨号计划,该计划可以连接2个软电话端点(VoIP客户端端点),然后尝试检测正在进行的呼叫是否静音。我可以使用以下拨号方案通过电话拨打]

exten = 100, 1, Answer() 
same =  100, n, Monitor()
same =  100, n, Dial(SIP/client1,15) 

当我拨打100时,它会拨入我优雅接收的client1,现在通话正在进行,现在我将两个终端麦克风(主叫方和被叫方)静音,通话仍在进行。正在正确创建每个通道的记录。现在,每当检测到静音3秒钟时,我就需要触发一个事件,我需要抓住该音频块直到静音。

任何想法我如何实现这个目标?

signal-processing asterisk voip audio-processing
2个回答
2
投票

在星号13中,您可以使用TALK_DETECT拨号计划功能:

简介

当星号检测到静音或正在通话时引发通知频道。

说明

TALK_DETECT函数在其应用的通道上启用事件至。这些事件可以通过AMI,ARI和其他潜在事件发出侦听内部通知的星号模块。

请记住,TALK_DETECT仅查找from通道设备侧(即读取侧)的音频。因此,如果我们想引发两个通道的事件,则需要将其应用于每个通道。例如,以下将通过在出站通道上使用预拨号处理程序将语音检测应用于两个通道:

[default]

exten => 100,1,Answer()
 same => n,Set(TALK_DETECT(set)=)
 same => n,Monitor()
 same => n,Dial(SIP/client1,15,b(default^apply_talk_detect^1)) 
 same => n,Hangup()

exten => apply_talk_detect,1,NoOp()
 same => n,Set(TALK_DETECT(set)=)
 same => n,Return()

使用此功能,检测到通话时,您应该获得AMI事件ChannelTalkingStart事件,而当其中一个频道停止通话时,您将获得ChannelTalkingStop事件。然后,您的外部应用程序可以查看事件之间是否存在三秒钟的间隔,并采取相应的措施。


1
投票

星号中没有这样的功能

您可以使用ChanSpy创建自己的c / c ++应用程序或附加另一个频道,并使用SilenceDetect命令+ UserEvent命令。

但是这种拨号计划不适用于新手,对不起

© www.soinside.com 2019 - 2024. All rights reserved.