DSP_實(shí)驗(yàn)9_電話撥號(hào)音的合成與識(shí)別_第1頁
DSP_實(shí)驗(yàn)9_電話撥號(hào)音的合成與識(shí)別_第2頁
DSP_實(shí)驗(yàn)9_電話撥號(hào)音的合成與識(shí)別_第3頁
DSP_實(shí)驗(yàn)9_電話撥號(hào)音的合成與識(shí)別_第4頁
DSP_實(shí)驗(yàn)9_電話撥號(hào)音的合成與識(shí)別_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、武漢大學(xué)教學(xué)實(shí)驗(yàn)報(bào)告電子信息學(xué)院 通信工程 專業(yè) 2015 年_10 月10日 實(shí)驗(yàn)名稱 電話撥號(hào)音的合成與識(shí)別 指導(dǎo)教師 盧昕 姓名 莫幫杰 年級(jí) 2013 學(xué)號(hào) 2013301200227 成績 一、 預(yù)習(xí)部分1. 實(shí)驗(yàn)?zāi)康?. 實(shí)驗(yàn)基本原理3. 主要儀器設(shè)備(含必要的元器件、工具)一、實(shí)驗(yàn)?zāi)康?本實(shí)驗(yàn)基于對電話通信系統(tǒng)中撥號(hào)音合成與識(shí)別的仿真實(shí)現(xiàn),主要涉及到電話撥號(hào)音合成的基本原理及識(shí)別的主要方法,利用 MATLAB 軟件以及 FFT 算法實(shí)現(xiàn)對電話通信系統(tǒng)中撥號(hào)音的合成與識(shí)別。并進(jìn)一步利用 MATLAB 中的圖形用戶界面 GUI 制作簡單直觀的模擬界面。使其對電話通信系統(tǒng)撥號(hào)音的合成與

2、識(shí)別有個(gè)基本的了解。 能夠利用矩陣不同的基頻合成 0 9 不同按鍵的撥號(hào)音,并能夠?qū)Σ煌膿芴?hào)音加以正確的識(shí)別,實(shí)現(xiàn)由撥號(hào)音解析出電話號(hào)碼的過程。進(jìn)一步利用 GUI 做出簡單的圖形操作界面。要求界面清楚,畫面簡潔,易于理解,操作簡單。從而實(shí)現(xiàn)對電話撥號(hào)音系統(tǒng)的簡單的實(shí)驗(yàn)仿真。二、實(shí)驗(yàn)基本原理雙音多頻 DTMF( Dual Tone Multi-Frequency )信號(hào),是用兩個(gè)特定的單音頻率信號(hào)的組合來代表數(shù)字或功能。在 DTMF 電話機(jī)中有 16 個(gè)按鍵,其中 10 個(gè)數(shù)字鍵 0 9 , 6 個(gè)功能鍵 * 、 # 、 A 、 B 、 C 、 D 。其中 12 個(gè)按鍵是我們比較熟悉的按鍵,另

3、外由第 4 列確定的按鍵作為保留,作為功能鍵留為今后他用。 根據(jù) CCITT 建議,國際上采用 697Hz 、 770Hz 、 852Hz 、 94lHz 低頻群及 1209Hz 、 1336Hz 、 1477Hz 、 1633Hz 高頻群。從低頻群和高頻群任意各抽出一種頻率進(jìn)行組合,共有 16 種組合,代表 16 種不同的數(shù)字鍵或功能,每個(gè)按鍵唯一地由一組行頻和列頻組成,如表 1 所示。三、主要儀器設(shè)備MATLAB(軟件)涉及的 MATLAB 函數(shù) 1. Set 功能:設(shè)置對象屬性。 基本調(diào)用格式:set(H,'PropertyName',PropertyValue,.) 用

4、屬性值'PropertyValue'設(shè)置關(guān)于用參量 H 標(biāo)志的對象(一個(gè)或個(gè))的屬性名'PropertyName'(一個(gè)或多個(gè))。H 可以為一句柄的向量。在這種情形下,命令 set 可以設(shè)置所有對象的屬性值。 2. find 功能:找出矩陣 X 中非 0 項(xiàng)的坐標(biāo)和取值。 基本調(diào)用格式:row,col = find(X, .) 常與邏輯運(yùn)算法一起使用,可進(jìn)一步明確搜索數(shù)值的范圍。 3. disp 功能:顯示文本或數(shù)組。 基本調(diào)用格式:disp(X) 4. struct 功能:創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組。 基本調(diào)用格式:s = struct('field1'

5、;, values1, 'field2', values2, .) 給每一個(gè)域名賦值,賦值可以為矢量也可以為標(biāo)量,但是矢量必須有相 同的維數(shù)。3、 實(shí)驗(yàn)操作部分1. 實(shí)驗(yàn)數(shù)據(jù)、表格及數(shù)據(jù)處理2. 實(shí)驗(yàn)操作過程(可用圖表示)3. 實(shí)驗(yàn)結(jié)論一、實(shí)驗(yàn)過程1. 圖形電話撥號(hào)面板的制作 利用 GUI 圖形用戶界面設(shè)計(jì)工具制作電話撥號(hào)面板,把 DTMF 信號(hào)和電話機(jī)的鍵盤矩陣對應(yīng)起來,如下圖所示。2. DTMF 信號(hào)的產(chǎn)生合成 現(xiàn)在將對上節(jié)制作的圖形電話撥號(hào)面板上的各控件單位的動(dòng)作和變化進(jìn)行設(shè)置,即對 tu1.m 文件進(jìn)行編輯。其主要的功能是使對應(yīng)的按鍵,按照表 1 的對應(yīng)關(guān)系產(chǎn)生相應(yīng)的撥

6、號(hào)音,完成對應(yīng)行頻及列頻的疊加輸出。此外,對于圖形界面的需要,還要使按鍵的號(hào)碼數(shù)字顯示在撥號(hào)顯示窗口中。 鑒于 CCITT 對 DTMF 信號(hào)規(guī)定的指標(biāo),這里每個(gè)數(shù)字信號(hào)取 1000 個(gè)采樣點(diǎn)模擬按鍵信號(hào),并且每兩個(gè)數(shù)字之間用 100 個(gè) 0 來表示間隔來模擬靜音。以便區(qū)別連續(xù)的兩個(gè)按鍵信號(hào)。間隔的靜音信號(hào)也是在按鍵時(shí)產(chǎn)生的。以按鍵 0 為例,簡單介紹撥號(hào)音產(chǎn)生的過程: % 按鍵 0 的響應(yīng)函數(shù) function varargout = pushbutton0_Callback(h, eventdata, handles, varargin) n=1:1000; % 每個(gè)數(shù)字 1000 個(gè)采樣

7、點(diǎn)表示 d0=sin(0.7217*n)+sin(1.0247*n); % 對應(yīng)行頻列頻疊加 n0=strcat(get(handles.edit1,'string'),'0'); % 獲取數(shù)字號(hào)碼 set(handles.edit1,'string',n0); % 顯示號(hào)碼 space=zeros(1,100); %100 個(gè) 0 模擬靜音信號(hào) global NUM phone=NUM,d0; NUM=phone,space; % 存儲(chǔ)連續(xù)的撥號(hào)音信號(hào) wavplay(d0,8192); % 產(chǎn)生撥號(hào)音程序解釋: NUM 為定義的全局變量,用于

8、存儲(chǔ)連續(xù)的撥號(hào)音( DTMF )信號(hào),包括數(shù)字信號(hào)音以及靜音信號(hào)。 d0=sin(0.7217*n)+sin(1.0247*n) 中的行頻與列頻是由表 1 中 0 鍵對應(yīng)的 fL = 941 Hz , fH = 1336 HZ 計(jì)算得出,已知聲音取樣頻率 fs = 8192 HZ,則取樣后對于保留的兩個(gè)功能鍵“ * ”“”,按照現(xiàn)行鍵盤式撥號(hào)電話的習(xí)慣,將“ * ”作為刪除鍵,“”作為確認(rèn)鍵?!?* ”刪除鍵的作用是將前面撥錯(cuò)的號(hào)碼刪除退回,表現(xiàn)為將顯示窗口已經(jīng)顯示的錯(cuò)誤號(hào)碼退回一位數(shù)字,并且將連續(xù)撥號(hào)音信號(hào)的存儲(chǔ)單元 NUM 中退回一位撥號(hào)音信號(hào)和靜音信號(hào)。刪除可以進(jìn)行連續(xù)的操作。“”確認(rèn)鍵

9、的作用是將前面撥過的號(hào)碼進(jìn)行確認(rèn)保留,意味著此時(shí)連續(xù)撥號(hào)音信號(hào)的存儲(chǔ)單元 NUM 中的信號(hào)即為后用于識(shí)別的連續(xù)撥號(hào)音 DTMF 信號(hào),并在顯示窗口中顯示“”號(hào)作為標(biāo)記。 % 刪除鍵的響應(yīng)函數(shù) function varargout = pushbuttonback_Callback(h, eventdata, handles, varargin) n=1:1000; num=get(handles.edit1,'string'); l=length(num); n11=strrep(num,num,num(1:l-1); %去掉末尾號(hào)碼在面板上的顯示 d11=sin(0.7217

10、*n)+sin(0.9273*n); set(handles.edit1,'string',n11); global NUM L=length(NUM); NUM=NUM(1:L-1100); %刪除末尾號(hào)碼在撥號(hào)音信號(hào)中的存儲(chǔ) wavplay(d11,8192); 3. DTMF 信號(hào)的檢測識(shí)別 要實(shí)現(xiàn)電話撥號(hào)音( DTMF )信號(hào)的檢測識(shí)別,可以通過直接計(jì)算付里葉變換得到輸入信號(hào)的組成頻率。這里采用 FFT 算法對信號(hào)進(jìn)行解碼分析。首先對接收到的數(shù)字信號(hào)作 FFT 分析,計(jì)算出其幅度譜,進(jìn)而得到功率譜,組成輸入信號(hào)的頻率必定對應(yīng)功率譜的峰值。對于連續(xù)的雙音多頻( DTMF

11、)信號(hào),需要把有效的數(shù)字撥號(hào)信號(hào)從靜音間隔信號(hào)中分割提取出來,然后再用 FFT 算法對信號(hào)進(jìn)行解碼分析。 MATLAB 實(shí)現(xiàn)信號(hào)音的識(shí)別如下: % 信號(hào)音識(shí)別 - function varargout = pushbuttonNUM_Callback(h, eventdata, handles, varargin) global NUM wavplay(NUM,8192); L=length(NUM); n=L/1100; number='' for i=1:n j=(i-1)*1100+1; d=NUM(j:j+999); % 截取出每個(gè)數(shù)字 f=fft(d,2048); %

12、 以 N=2048 作 FFT 變換 a=abs(f); p=a.*a/10000; % 計(jì)算功率譜 num(1)=find(p(1:250)=max(p(1:250); % 找行頻 num(2)=300+find(p(300:380)=max(p(300:380); % 找列頻 if (num(1) < 180) row=1; % 確定行數(shù) elseif (num(1) < 200) row=2; 64 elseif (num(1) < 220) row=3; else row=4; end if (num(2) < 320) column=1; % 確定列數(shù) els

13、eif (num(2) < 340) column=2; else column=3; end z=row,column; % 確定數(shù)字 if z=4,2 tel=0; elseif z=1,1 tel=1; elseif z=1,2 tel=2; elseif z=1,3 tel=3; elseif z=2,1 tel=4; elseif z=2,2 tel=5; elseif z=2,3 tel=6; elseif z=3,1 tel=7; elseif z=3,2 tel=8; elseif z=3,3 tel=9; end t(i)=tel; c=strcat(number,in

14、t2str(tel); number=c; i=i+1; end set(handles.edit3,'string',number); 程序解釋: 確定行頻和列頻的數(shù)值范圍是通過計(jì)算得出的:已知輸入信號(hào)的取樣頻率 fL = 8192Hz ,而做 FFT 的 N=2048,則頻譜分辨率為,由此可算出頻譜圖上任意點(diǎn)對應(yīng)的頻率。例如,數(shù)字 8 的高、低端頻率為 則在譜圖上對應(yīng)的點(diǎn)。二、思考題1.打印出一個(gè)數(shù)字撥號(hào)音的頻譜圖,加以分析說明,并解釋 DTMF 信號(hào)的檢測識(shí)別的原理。數(shù)字撥號(hào)音1的頻譜圖如圖1,已知輸入信號(hào)的取樣頻率。而做FFT的N=2048,則頻譜分辨率為,由此可算出頻

15、譜圖上任意點(diǎn)對應(yīng)的頻率。數(shù)字1的高、低端頻率為、,則在譜圖上對應(yīng)的點(diǎn),。顯然在頻譜圖中可以觀察到點(diǎn)174和點(diǎn)302處分別出現(xiàn)了一個(gè)峰值。圖1:撥號(hào)音1頻譜圖2.DTMF 信號(hào)的檢測識(shí)別的原理要實(shí)現(xiàn)電話撥號(hào)音(DTMF)信號(hào)的檢測識(shí)別,可以通過直接計(jì)算付里葉變換得到輸入信號(hào)的組成頻率。這里采用FFT算法對信號(hào)進(jìn)行解碼分析。首先對接收到的數(shù)字信號(hào)作 FFT 分析,計(jì)算出其幅度譜,進(jìn)而得到功率譜,組成輸入信號(hào)的頻率必定對應(yīng)功率譜的峰值。對于連續(xù)的雙音多頻(DTMF)信號(hào),需要把有效的數(shù)字撥號(hào)信號(hào)從靜音間隔信號(hào)中分割提取出來,然后再用 FFT 算法對信號(hào)進(jìn)行解碼分析。3.添加功能鍵,實(shí)現(xiàn)號(hào)碼的預(yù)存儲(chǔ)和

16、來電識(shí)別??紤]不同位數(shù)號(hào)碼的存儲(chǔ)實(shí)現(xiàn)。設(shè)計(jì)面板如下圖,程序當(dāng)中預(yù)存儲(chǔ)了3個(gè)號(hào)碼,在#號(hào)確認(rèn)鍵程序中DTMF信號(hào)識(shí)別成功以后,添加如下代碼,將識(shí)別的號(hào)碼與電話本進(jìn)行匹配:圖2 GUI面板預(yù)存儲(chǔ)程序:global BOOK; %定義全局電話薄BOOK1='10086'%預(yù)存號(hào)碼BOOK2='China Mobile'BOOK3='10000'BOOK4='China Telecom'BOOK5='10010'BOOK6='China Union'sum=length(BOOK);temp=number;

17、 %識(shí)別出的號(hào)碼for j=1:sum-1 if(strcmp(BOOKj,number) %與電話本中的號(hào)碼匹配 temp=BOOKj+1; end j=j+2;endset(handles.edit2,'string',temp); %在確認(rèn)欄顯示名稱例如輸入10000,按#確認(rèn)后,運(yùn)行結(jié)果如圖3圖3 來電顯示儲(chǔ)存新聯(lián)系人的步驟是在撥號(hào)欄內(nèi)輸入號(hào)碼,在確認(rèn)欄內(nèi)輸入名稱,點(diǎn)擊儲(chǔ)存即可,儲(chǔ)存鍵的回調(diào)函數(shù)如下:function pushbutton13_Callback(hObject, eventdata, handles)num=get(handles.edit1,'string'); %獲取號(hào)碼name=get(handles.edit2,'string&#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論