在Python中解析(提取)DTMF

2 投票
2 回答
6874 浏览
提问于 2025-04-16 00:01

如果我有一个录制好的音频文件(MP3格式),有没有办法用纯Python找出里面录制的DTMF音调?

(如果纯Python不行的话,Java也可以。关键是它应该能在Google Appengine上运行)

2 个回答

1

对数据进行快速傅里叶变换(FFT)。这样你会在两个音调的频率上看到尖峰。

7

首先,你需要把MP3文件解码成一种没有压缩的格式,也就是原始的音频样本,这样可以设置特定的位深和采样率。接下来,你要找出组成每个DTMF音调的频率。虽然可以用快速傅里叶变换(FFT)来实现这个,但更常用的方法是戈策尔算法(Goertzel Algorithm)。这个算法的好处在于,你在进行转换之前就已经知道你关心的频率是什么:http://en.wikipedia.org/wiki/Goertzel_algorithm

网上有一些免费的Python代码可以用戈策尔算法来检测DTMF音调,虽然我自己没试过,但你可以看看这个链接:

http://johnetherton.com/projects/pys60-dtmf-detector

撰写回答