2016-12-02 34 views
1

所以我想通過讀取傅立葉分析圖的[x,y]座標來確定在DTMF波形文件中撥打的數字。這些數字是:251216.下面是我的一樣Matlab代碼:試圖從.wav文件中確定DTMF

% Tone Dialling % 
[y,Fs] = audioread('tones.wav'); 
n = length(y); 
p = abs(fft(y)); 
f = (Fs/n)*(0:n-1); 
plot(f,p); 
axis([500 1400 0 1000]) 
xlabel('f(Hz)') 
title('Power') 

這對應於以下情節:

enter image description here

enter image description here

現在,這個應該有6個峯,但不是!我錯在哪裏?剪輯是一個6秒的剪輯,每1秒後播放一次脈衝。

任何幫助表示讚賞。

回答

1

DTMF信號中的每個音調由兩個特定頻率組成的音調組成。

 1209 Hz 1336 Hz 1477 Hz 1633 Hz 
697 Hz 1  2  3  A 
770 Hz 4  5  6  B 
852 Hz 7  8  9  C 
941 Hz *  0  #  D 

如果你把序列的DTMF信號555555你只會看到包含在你的FFT圖數5的語氣兩個頻率。

DTMF Signal 555555

在你的情況你的音調由以下頻率:

  • 1:697赫茲,1209赫茲
  • 2:697赫茲,1336赫茲
  • 5: 770Hz,1336Hz
  • 6:770Hz,1477Hz

所以4個獨特的頻率。因此信號中的四個峯值。音調1和2共享頻率697Hz,音調2和5共享頻率1336Hz,並且音調5和6在他們各自的創建中共享頻率770Hz。

你的陰謀的幅度應該給你的頻率是如何經常在任何音調所使用的指示:

fft-plot of DTMF signal 251216

你剪了你的陰謀在1400赫茲,這是一個錯誤,因爲DTMF音6具有1477Hz的分量。