使用 C# 从字节数组中解码 dtmf

Posted

技术标签:

【中文标题】使用 C# 从字节数组中解码 dtmf【英文标题】:decode dtmf from array of bytes using C# 【发布时间】:2014-03-05 05:30:18 【问题描述】:

我正在开发一个软件,它可以捕捉传出的声音(扬声器)并识别是否有任何 dtmf 音调。我使用 NAudio 将声音捕获为字节数组的形式。我想检测这些字节数组上是否有 dtmf 音调。我已经用谷歌搜索了它,但我没有找到任何接近我的问题的解决方案。 Tapiex(​​或任何商业库)不是一个选项,因为我更喜欢开源解决方案。

【问题讨论】:

【参考方案1】:

进行频率分析并寻找指示正确键的两个峰值(请参阅Wikipedia 了解所使用的确切频率;对于大多数用途,请忽略 1633Hz 列)。确保提示音持续至少 100 毫秒,然后再接受。

频率分析见this *** question。

【讨论】:

我会检查您提供的链接,谢谢。但是还有一个问题,当您说“查找指示正确键的两个峰值”时,您的意思是说,例如,如果我正在寻找 dtmf 1,则检查字节数组中是否存在 697 和 1209? 您将无法直接使用字节数组。它可能需要转换为 float[]。然后,您必须计算您关心的每个频率的 dB 值。如果您使用我链接到的另一个问题的算法,您必须针对您关心的每个频率运行它,并使用它的结果来确定正在播放的键(如果有)。

以上是关于使用 C# 从字节数组中解码 dtmf的主要内容,如果未能解决你的问题,请参考以下文章

C#字节数组的常用解码处理方法

C#如何从字节数组中提取字节?已知起始字节

将 Base64 字符串解码为字节数组

如何将字节数组从 c# 传递到 MFC ActiveX

如何使用 C# 从字节数组中显示 Web 表单中的图像

无法将固定大小的字节数组从结构复制到 C# 结构中的另一个数组