我计划在android中创建一个centrex系统应用程序。其中有一个语音邮件将设置在接收方。通过语音邮件中的说明,来电者必须按拨号盘中的号码,接收方应识别号码并执行相应的操作。有没有人知道如何检测接收方呼叫者按下的号码? 背后的技术是什么?, 在android中有可能吗?
任何帮助都会很明显......
答案 0 :(得分:0)
解码DTMF非常简单,因为它是MADE解码的。您将傅里叶变换音频流,获得频率分布。这些可以与明确定义的DTMF频率匹配。你可以在维基百科上查找它们。顺便提一下,该页面还链接到用于DTMF解码的Goertzel算法。
为了识别单独的脉冲,您可以在静音时对音频流进行分段,或者只选择足够短的段并尝试在之后修补数据。这里最具挑战性的事情可能是检测到相同数量的多个实例。
答案 1 :(得分:0)
有没有人知道如何检测接收方呼叫者按下的号码?
您需要DTMF检测器/解码器。这是一个相当好的研究主题,你可以谷歌它。不完美的实现很容易(例如,8个Goertzel过滤器)并且适用于大多数情况。标准级的质量实施要困难得多,但你并不需要那些。
背后的技术是什么?
多音检测。这是一个值得探索的有趣主题。即使是现代数据传输,例如ADSL也是基于它(比DTMF更先进)。但是,为了您的目的,一个简单的过滤银行"应该这样做。
在Android中有可能吗?
当然,您只需要获取音频数据(样本)并将其提供给检测器。如何获得样品取决于您的声音。在Java中,您可能会使用MediaRecorder
API和MediaRecorder.AudioSource.VOICE_CALL
来识别您想要来自呼叫的音频,而不是MIC(留声机)。