3

我打算在android中创建一个centerx系统应用程序。其中有语音邮件将设置在接收方。根据语音信箱中的指示,来电者必须按下拨号盘中的号码,接收方应识别号码并做出相应的动作。有谁知道如何检测呼叫者在接收方按下的号码?,它背后的技术是什么?,在android中是否可能?

任何帮助将是可观的..

4

2 回答 2

0

解码 DTMF 相当简单,因为它是用来解码的。您将对音频流进行傅里叶变换,得到频率分布。这些可以与明确定义的 DTMF 频率相匹配。您可以在 Wikipedia 上查找它们。顺便说一句,该页面还链接到用于 DTMF 解码的 Goertzel 算法。

为了识别单独的脉冲,您可以在静音时对音频流进行分段,或者只选择足够短的分段然后尝试修补数据。这里最具挑战性的事情可能是检测相同数量的多个实例。

于 2013-10-17T11:34:57.080 回答
0

有谁知道如何检测呼叫者在接收方按下的号码?

您需要一个 DTMF 检测器/解码器。这是一个相当深入的研究主题,你可以谷歌它。不完美的实现很容易实现(例如,8 个 Goertzel 过滤器)并且适用于大多数情况。标准级别的质量实现要困难得多,但您并不真正需要这些。

它背后的技术是什么?

多音检测。这是一个有趣的探索课题。即使是现代数据传输,例如 ADSL,也建立在它之上(尽管比 DTMF 先进得多)。但是,为了您的目的,一个简单的“过滤器库”应该可以。

在安卓中可以吗?

当然,您只需要获取您的音频数据(样本)并将它们提供给您的检测器。你如何获得你的样本取决于你如何获得你的声音。在 Java 中,您可能会使用MediaRecorderAPI,并MediaRecorder.AudioSource.VOICE_CALL从呼叫中识别您想要的音频,而不是 MIC(rophone)。

于 2016-02-08T21:39:20.893 回答