電話按鍵音的識別.doc_第1頁
電話按鍵音的識別.doc_第2頁
電話按鍵音的識別.doc_第3頁
電話按鍵音的識別.doc_第4頁
電話按鍵音的識別.doc_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

.一、 實驗目的1. 本實驗的內容基于對電話通信系統(tǒng)中撥號音的識別仿真實驗。主要涉及到電話撥號音識別的基本原理和識別的主要方法。利用matlab軟件以及fft算法實現對電話通信系統(tǒng)中撥號音的識別。并進一步利用matlab中的圖形用戶界面制作簡單直觀的模擬界面,使其對撥號音的識別有個基本的了解。2. 能夠利用矩陣不同的基頻合成0-9不同按鍵的撥號音,并能夠對不同的撥號音加以正確的識別。進一步畫出簡單的圖形,從而實現對電話撥號音系統(tǒng)的簡單的實驗仿真。3.了解學習DTMF(雙音多頻)相關知識,知道雙音多頻的信號是用兩個特定的單音頻率信號的組合來代表數字或功能。二、實驗儀器安裝有MATLAB軟件的計算機一臺。三、實驗原理1. DTMF(雙音多頻)(1) 基本概念電話撥號有兩種,脈沖和音頻,所謂音頻也成雙音多頻(DTMF)信號的撥號方式即是電話撥號時每按一個鍵,有兩個音頻頻率疊加成一個雙音頻信號,十六個按鍵由八個音頻頻率區(qū)分。(2) 編制規(guī)則具體DTMF編制規(guī)則如表1所示表1 DTMF鍵盤高群/Hz低群/Hz1209133614771633697123A770456B852789C941*0#D雙音多頻的撥號鍵盤是44的矩陣,每一行代表一個低頻,每一列代表一個高頻。用戶每按一個鍵就發(fā)送一個高頻和低頻的正弦信號組合。2. 電話按鍵音識別MATLAB中audioread函數可以實現多種音頻信號的讀取,調用形式為y,fs=audioread(filename)其中y為所讀取的音頻數據;而fs為采樣頻率;調用的filename為指定載入的音頻文件名稱。用fft頻譜分析公式 (1) (2)由公式(1)和(2)可得: (3)四實驗內容本實驗要實現電話撥號音(DTMF)信號的檢測的識別,可以通過直接計算傅里葉變換時的輸入信號組成的頻率。這里采用FFT算法對信號進行解碼分析。首先對接收到的數字信號作FFT分析。計算出其頻幅譜,繼而得到功率譜,組成輸入信號的頻率必定對應功率譜的峰值。對于連續(xù)的雙音多頻(DTMF)信號。需要把有效的數字撥號信號從靜音間隔中分割提取出來,然后再用FFT算法對信號進行解碼分析,得出電話撥號碼。五、實驗過程與分析1. 讀取音頻文件利用MATLAB中audioread讀取x,fs=audioread(電話按鍵音.m4a);2. 聲道提取電話按鍵音是雙聲道,本實驗提取聲道1進行分析:x=x(:,1);3. 端點提取該按鍵音為一段連續(xù)的11位數字撥號音,分析時需要對它們分別進行處理,而這11位數字間的時間間隔一般情況是沒有規(guī)律的,無法直接用for循環(huán)控制截取,而要是手動一段一段地進行截取,換一個音頻信號就得再次重新截取,因此考慮到可能存在噪音的情況,基于短時能量和短時平均過零率來進行端點檢測,實現端點的提取,對于不同的音頻信號,只需要修改部分可變參數便可以適用。4. 分析根據音頻實際情況設置對應參數:framelen= floor(fs*40/1000);%floor向下取整,幀長frameinc= floor(fs*10/1000);%幀移% 進行分幀,每幀長framelength,voice_min_len =15;% 最短語音長度150ms%語音段的最短長度,若語音段長度小于此值(如果語音段中的靜音幀數未超過此值,),則認為其為一段噪音unvoice_min_len = 5;%結束段最小持續(xù)50msn3=0.05;%過零率下限參數0.05檢測結果見圖1結果: 將11個檢測到的號碼音頻左右端點提取出來 對信號進行fft變換后,得到的頻譜是呈現對稱的,在此截取前部分進行觀察,得到頻譜圖如圖2所示。程序運行最終結果為:The telephone number is:圖1 端點檢測結果圖 圖2 電話按鍵音fft頻譜圖5. 可靠性檢驗自己錄制一段撥號音,檢驗程序的可靠性,這里為了為了驗證程序的正確、可靠性,又分別錄制了我自己手機及1234567890兩段不同格式不同號碼,在有噪聲條件下的按鍵音,檢驗過程如下(1.mp3格式)參數設置同上 圖3 端點檢測結果圖 圖4 電話按鍵音的fft頻譜圖程序運行結果:The telephone number is:圖5 端點檢測結果圖 圖6 電話按鍵音的fft頻譜圖(2)1234567890(.ogg格式)該音頻錄制時,有的按鍵音持續(xù)時間較短,需要對檢測初始參數進行修改修改參數:voice_min_len =6;% 最短語音長度60msn3=0.02;%過零率下限參數0.02程序運行結果:The telephone number is: 1234567890經驗證,該程序可行。六、小結1.原本想著,進行端點檢測時考慮了噪聲的影響進行濾波或許就不必要了,但是將濾波器加進程序后發(fā)現,對于不同的音頻信號,程序有更好的適應性,端點檢測結果的精確度居然也有所提高,不用再反復修改設置參數,然后就將濾波器加入程中了。2.實驗過程中,首先是手動截取11段數字音頻驗證號碼可檢測出來后,在進行端點檢測的構思,最后考慮濾波。3.通過本次實驗,發(fā)現自己在MATLAB函數的應用與程序設計中仍有很大的進步空間。4.有效的端點檢測技術不僅能在語音識別系統(tǒng)中減少數據的采集量,節(jié)約處理時間,還能排除無聲段或噪聲段的干擾。對于端點檢測的程序,其原理經查閱資料明白一些,但不多,查閱到語音端點檢測參考程序之后,對其進行了步驟增加、減少等操作,使其適合本實驗,考慮到一些參數對于不同的音頻需要做不同的改變,便將其提取到主程序中,方便修改。5.在引用的端點檢測代碼原理不很了解情況下,結合本實驗對其進行部分修改比較困難。6.對于待檢測信號的第一個數字濾波效果不好,未達到理想的效果。7.先設計濾波器對信號進行濾波,濾去部分噪聲,再設計考慮噪聲的端點檢測函數,相當于信號進行了雙重濾波處理,是結果能夠更加準確。七、實驗程序(1) 主程序:x,fs=audioread(電話按鍵音.m4a);%待檢測數據%x,fs=audioread(10月11日.mp3);%檢驗號x,fs=audioread(11_11_1.ogg);%檢驗號碼1234567890x=x(:,1);%提取聲道1x=lv_bo_1(x,fs);sound(x,fs);%播放濾波后的音頻% 調整各參數framelen= floor(fs*40/1000);%floor向下取整,幀長frameinc= floor(fs*10/1000);%幀移% 進行分幀,每幀長framelength,voice_min_len =15;% 最短語音長度60ms ,150ms%語音段的最短長度,若語音段長度小于此值(如果語音段中的靜音幀數未超過此值,),則認為其為一段噪音unvoice_min_len = 5;%結束段最小持續(xù)50msn3=0.02;%過零率下限參數0.02,0.05% endfan_wei=vad(framelen,frameinc,x,fs,voice_min_len,unvoice_min_len,n3);%引用時注意修改函數vad中的最短語音長度number= ;figurefor i=1:length(fan_wei) y=x(fan_wei(i,1):fan_wei(i,2); n=0:length(y)-1;%建立一個信號等長的序列; %=頻域圖像= N=length(y);%取信號矩陣的長度 FFT=fft(y,N);%N點傅里葉變換 mag=abs(FFT)/(N/2);%還原真實幅值 f=n*fs/N;%頻率序列 % f=f(1:fix(N/2);mag=mag(1:fix(N/2);% subplot(3,4,i)%圖2:頻譜圖 %取l/2作圖 plot(f,mag);axis(600 1700 min(mag) max(mag); title(fft頻譜圖);%標題: xlabel(頻率/Hz);%標注橫坐標 ylabel(幅度);%標注縱坐標 grid on;%打開網格線 %數字判斷 a1=(697+770)/2;a2=(770+852)/2;a3=(852+941)/2; a4=(1209+1336)/2;a5=(1336+1477)/2;a6=(1477+1633)/2; if(f(mag=max(mag(f=1000)1100)1100)1100)a6) tel=3; else tel=A; end elseif(f(mag=max(mag(f=1000)1100)1100)1100)a6) tel=6; else tel=B; end elseif(f(mag=max(mag(f=1000)1100)1100)1100)1100)1100)1100)a6) tel=#; else tel=D; end end number=number,num2str(tel);enddisp(The telephone number is:,number)(2) 濾波器function f1 = lv_bo_1( x,fs )% 雙線性變換法設計Butterworth濾波器t=0:1/fs:(size(x)-1)/fs;Au=0.03;d=(Au*cos(2*pi*10000*t);x2=x+d;%數字濾波器指標fp=3Hz,fr=4Hz,Rp=1db,As=20db,fs=10Hzwp=0.25*pi;%通帶邊界頻率(歸一化):wp=fp*2*pi/fsws=0.3*pi;%阻帶邊界頻率(歸一化):ws=fr*2*pi/fsRp=1;%通帶波紋Rs=15;%將模擬指標轉換成數字指標Fs=fs;Ts=1/Fs;%時域最小間隔,即時域分辨率wp1=2/Ts*tan(wp/2);%模擬低通原型濾波器通帶頻率 ws1=2/Ts*tan(ws/2); %模擬低通原型濾波器阻帶頻率N,Wn=buttord(wp1,ws1,Rp,Rs,s);%選擇濾波器的最小階數Z,P,K=buttap(N); %創(chuàng)建butterworth模擬濾波器Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn); %雙線性變換得到分子和分母的系數向量bz,azbz,az=bilinear(b,a,Fs);%用雙線性變換法實現模擬濾波器到數字濾波器的轉換f1=filter(bz,az,x2);%進行濾波處理(3) 端點檢測function fan_wei=vad(a1,a2,x,fs,n1,n2,n3)%歸一化x=double(x);x=x/max(abs(x);framelen= a1;frameinc= a2;y=enframe(x,hanning(framelen),frameinc);%分幀%計算短時間能量amp=sum(abs(y),2);%amp = sum(abs(enframe(filter(1 -0.9375, 1, x), framelen, frameinc).2, 2);%計算過零率tmp1=enframe(x(1:length(x)-1),framelen,frameinc);tmp2=enframe(x(2:length(x),framelen,frameinc);signs=(tmp1.*tmp2)n3;zcr=sum(signs.*diffs,2);zcr=zcr;zcr(end);zcr_yu=0.2*mean(zcr);yuzhi=0.2*mean(amp);%N=length(amp);for n=1:N if amp(n)yuzhi|(zcr(n)zcr_yu) continue; end kaitou=n; break;endfor n=N:-1:1 if amp(n)yuzhi|(zcr(n)=yuzhi2&zcr(i)=zcr_yu1)&bstart_state) %find start bstart_state=1; % if(st_candicate) st_candicate=i; end segment =segment + 1; elseif(amp(i)=yuzhi2|zcr(i)=zcr_yu1)&bstart_state)% if(unvoice=unvoice_min_len) % st = st; st_candicate; en_candicate = en_candicate + unvoice_min_len - 1; en = en; en_candicate;bstart_state = 0; bend_state = 1; unvoice = 0; segment = 0; st_candicate = 0; else unvoice = 0;bend_state = 0; segment = segment + 1; end elseif(amp(i)yuzhi2&zcr(i)=voice_min_len % unvoice = unvoice + 1; if bend_state % en_candicate = i; end bend_state = 1; % else % bstart_state = 0; segment = 0; bend_state = 0;unvoice = 0; st_candicate = 0;en_candicate = 0; end elseif(amp(i)=yuzhi2|zcr(i)=zcr_yu1)&bstart_state) % if st_candicate st_candicate = i; end else% st_candicate = 0; continue; end endif(unvoice=unvoice_min_len )% st = st; st_candicate; en = en; (en_candicate + unvoice_min_len -1); segment = 0;endif( segment = voice_min_len) % st = st; st_candicate; en = en; N;endfigure(1);subplot(3,1,1),plot(x); %原始語音波形axis(1,length(x),-1,1);ylabel(speech);xlabel(樣本點);for k=1:length(st) line(st(k)*frameinc,st(k)*frameinc,-1,1,linestyle,:,color,blue,LineWidth,2); line(en(k)*frameinc,en(k)*frameinc,-1,1,linestyle,:,color,red,LineWidth,2);endsubplot(3,1,2),plot(amp);%原始語音能量axis(1,length(amp),0,max(a

溫馨提示

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

評論

0/150

提交評論