數(shù)字變聲器原理與算法教學文案_第1頁
數(shù)字變聲器原理與算法教學文案_第2頁
數(shù)字變聲器原理與算法教學文案_第3頁
數(shù)字變聲器原理與算法教學文案_第4頁
數(shù)字變聲器原理與算法教學文案_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精品文檔基于MATLA算法的數(shù)字變聲器【摘要】變聲器的原理是通過改變輸入聲音頻率,進行改變聲音的音色、 音調,使輸出聲音在感官上與原聲音不同。變聲器是借助對聲音音色和音調的 雙重復合改變,實現(xiàn)輸出聲音的改變。通過自己發(fā)聲,共振峰頻率的改變是基 于重采樣實現(xiàn)的。同時用LPC倒譜分析法分析共振峰的范圍,通過 MATLAB!寫 程序并構置GUI界面。實驗中通過MATLA歆件對采集來的語言信號進行頻譜分 析,討論不同人之間的噪音源參數(shù)和共振峰參數(shù),通過對不同人語言信號頻率 和幅度的改變來實現(xiàn)不同人之間的語音轉換?!娟P鍵詞】短時自相關法;LPC倒譜; 語音信號;matlab GUI ;1引言隨著生活水平

2、的提高,科技的不斷進步,很多人為了娛樂,從而希望改變 自己的聲音;還有如今的許多的訪問節(jié)目為了保護被訪問者,都對聲音進行了 相應的處理。本設計通過編寫 matlab程序,借助對聲音音色和音調的雙重復 合改變,實現(xiàn)輸出聲音的改變。共振峰頻率的改變是基于重采樣實現(xiàn)的,從 重采樣原理知道,這也同時印發(fā)了基頻的變化,為保證基頻變化和共振峰頻 率變化的獨立、互不相關,在基頻移動時必須考慮抵消重采樣帶來的偏移, 理論上只要基頻檢測足夠精確,確實可以保證基頻改變和共振峰頻率改變問 的互不相關。保證變聲效果的自然度主要是沒有采用基因檢測將基因移動和 共振峰變化徹底隔離的緣故。本次課程設計就是運用我們所學到的理

3、論知識,用MATLA瞅件來實現(xiàn)對語音信號的變聲處理,理論聯(lián)系實際,從而更好地掌握以及運用所學習的知識。2數(shù)字變聲器的原理與算法2.1 基本原理語音科學家將人類發(fā)聲過程視作一個由聲門源輸送的氣流經(jīng)以聲道、口、 鼻腔組成的濾波器調制而成的。人類語音可分為有聲語音和無聲語音,前者是 由聲帶振動激勵的脈沖信號經(jīng)聲腔調制變成不同的音,它是人類語言中元音的 基礎,聲帶振動的頻率稱為基頻。無聲語音則是聲帶保持開啟狀態(tài),禁止振動 引發(fā)的。一般來說,由聲門振動決定的基頻跟說話人的性別特征有關,如下 表,而無聲語音則沒有體現(xiàn)這個特征。說話人的個性化音色和語音的另外一個 聲學參數(shù)一一共振峰頻率的分布有關。兒童由于聲

4、道短,其共振峰頻率高于成 年人,成年女性的聲道一般短于成年男性,所以女性的共振峰頻率一般高于男 性。在進行性別變聲時,主要考慮基音周期、基頻和共振峰頻率的變化。其中 男生、女生和童聲的基頻、共振峰的關系如圖 1所示;基音周期改變時,基頻、 共振峰同時變化,若伸展既有男變女、女變童,反之亦可。本實驗是基于打開 一種聲音進行相關參數(shù)提取,修改接近于女聲、男聲或童聲,實現(xiàn)聲音的變換。人群八拿分布Ha技振峰頻率分布男聲/50,18 0偏低/女聲V160,3801 -中40。-10001 (扃圖1人群基頻與共振峰的關系2.2 實現(xiàn)過程及算法采用線性預測參數(shù)合成法。線性預測參數(shù)合成法利用 LPC語音分析方

5、法, 通過分析自然語音樣本,計算出LPC系數(shù),就可以建立信號產(chǎn)生模型,從而合 成出語音。大致流程如圖2所示。圖2制作流程收集于網(wǎng)絡,如有侵權請聯(lián)系管理員刪除2.2.1 基于短時自相關法的基音周期估值對語言信號進行低通濾波,然后進行自相關計算。在低通濾波時,采用巴 特沃斯濾波器。根據(jù)人的說話特征設定相應指標參數(shù),對本段語音設計算出巴特沃斯模擬濾波器的階數(shù)N為5, 3dB截止頻率0.175,歸一化低通原型系統(tǒng)函數(shù)為:-ic, c = (100.1ap - 1)2n,算出 c為G (p) =J,p5 + b4P4 + b3P3 + b2P2+ b1P+ b0其中 b0 = 1.0000, & = 3

6、.2361, b2 = 5.2361, b3 = 5.2361, b4=3.2361Q5 c將P = S/ ?箍人Ga(P)中,得到低通濾波器,H_H sua八 Rc八 4八 6s5 + b4 QcS4 + b2 QcS2 + b QcS+ b。c根據(jù)設定的濾波器編寫 matlab程序,當信號經(jīng)過低通濾波器后,對原始信 號濾波產(chǎn)生結果如下圖2所示,低通濾波后,保留基音頻率,然后再用8kHz采樣頻率進行采樣,采樣序列為x(n),然后進行下一步的自相關計算。11 200圖3原始信號低通濾波2.2.2 語音信號的短時自相關函數(shù) 定義語音信號自相關函數(shù)如下:n=k-n-1Rn(k) = E Xn(n)

7、Xn(n + k)n=0其中k為信號延遲點數(shù):Xn(n)為語音信號;N為語音幀長度。經(jīng)過低通濾波之 后,取160個樣點數(shù),幀長取10ms對每幀語音求短時自相關,取得自相關最 大點數(shù),自相關函數(shù)在基音周期處表現(xiàn)為峰值,這些峰值點之間的間隔的平均 值就是基音周期。2.2.3 LPC倒譜法提取共振峰通過線性預測分析得到合成濾波器的系統(tǒng)函數(shù)為1H(Z)=-彳不1 -41 aiz其沖擊響應為h(n), ai為預測系數(shù)。然后求h(n)的倒譜?(n),首先根據(jù) 同態(tài)分析方法,有H?(z)=logH(z),因為H (z)是最小相位的,即在單位圓內是 解析的,所以H?(z)可以展開成級數(shù)形式,即H?(z)=%1

8、 ?(n)z-n ,也就是說 H?(z)的逆變換?(n)是存在的,設?(n)=0 ,將等式兩端分別對z-1求導,得 到:- n?(n) z-n+1 工產(chǎn)三1- J=1 aiz有(1-1 aiz-i )61 n?(n)z-n+1 =1=1 uiz-i+1 ,令式左右兩邊Z的各次 幕前系數(shù)分別相等得到:L 1?(1) = 1Yh?(n)= an+浮1 (1 -:間?(n - i) 1n p在本實驗中,取預測階數(shù)為10,語音的樣點數(shù)為160,按照上式可直接從預測系數(shù)ai求得倒譜?(n),這個倒譜是根據(jù)線性預測模型得到,即稱為LPC倒譜。2.2.4線性預測語音信號合成根據(jù)線性預測的基本思想,用過去 M

9、個樣點值來預測現(xiàn)在或未來的樣點化? (n)=工 aiy(n - i)? (n)是預測信號,a為預測系數(shù),y(n)為取樣信號,預測誤差已(n):2E 2(n) =E y(n) - * aiy(n - i) 為使E 2(n) 最小,對ai求偏導,并令其為零,有:j=1,ME y(n)-潭 qy(n- i) y(n-j) =0上式表明采用最佳預測系數(shù)時,預測誤差與過去的樣點值正交。由于語音信號的短時平穩(wěn)性,要分幀處理,對于每一個樣點值記為1),這段語音記為Yn。對于語音段Yn,并記n(j,i尸Eyn(m- j)ym(m -它的自相關函數(shù)為:Rn (j)=yn(m)yn(m - j)yn(n),yn(

10、n+N-i),對于語音段Yn,n=1,,M根據(jù)Yule-walker方程,可以解出樣值,用這種方法定期地改變激勵參數(shù) u(n)和預測系數(shù)a,并使用修改過后的基因周期和共振峰參數(shù),就能合成出語 音,合成語音樣本如下:S (n)=空1 ais(n- i)+Gu(n)ai為預測系數(shù);G為模型增益;u(n)為激勵;合成樣本s(n) ; p為預測器階 數(shù);2.2.5流程圖數(shù)據(jù)歸一化3數(shù)字變聲器的軟件實現(xiàn)及仿真結果3.1 界面設計在設計數(shù)字變聲器的界面時,使用了 MATLA魄供的可視化的界面環(huán)境Guide。相比通過編寫程序進行GUI的設計,可視化的界面環(huán)境更加方便快捷。見圖 4圖4界面設計1按鈕組:設計中

11、使用了兩個按鈕組,把打開、原聲、男變女、女變男、 童聲三項功能放在一組;另一個把語音的圖像即4個axes放在了一組。2按鈕:最常用的控件,用于相應用戶的鼠標單擊,按鈕上有說明文字說 明其作用。設計中使用了五個按鈕,分別用于打開、原聲、男變女、女變男、 里嚴。3軸:用于顯示圖像。3.2 回調函數(shù)對控件的Callback屬性編程是實現(xiàn)GUI的基本機制,我們下來就要在各函 數(shù)中編寫程序代碼,完成各回調函數(shù)的功能。(1)打開function dakai_Callback(hObject, eventdata, handles)filename,pathname=uigetfile(*.wav, ALL

12、 FILES ,選擇聲音);if isequal(filename pathname/。,。) return ; end str=pathname filename;temp,Fs=audioread(str);temp1=resample(temp,80,441);handles.y=temp1;handles.y1=temp;handles.Fs=Fs;guidata(hObject,handles);(2)原聲function yuansheng_Callback(hObject, eventdata, handles) c=handles.Fs;sound(handles.y1,c);

13、plot(handles.axes1,handles.y1)title(handles.axes1,時域圖);ysize=size(handles.y1);y1=fft(handles.y,length(handles.y1);ysize=size(y1);plot(handles.axes2,abs(y1);xlabel(handles.axes2,頻率);ylabel(handles.axes2,幅度);title(handles.axes2,頻率特性);(3)男變女function nanbiannv_Callback(hObject, eventdata, handles)FL = 8

14、0 ;% 幀移WL = 240 ;% 窗長P = 10 ;%預測系數(shù)個數(shù)s = handles.y; fs = handles.Fs;%定義常數(shù)s = s/max(s);L = length(s);FN = floor(L/FL)-2;%預測和重建濾波器exc = zeros(L,1);zi_pre = zeros(P,1);s_rec = zeros(L,1);zi_rec = zeros(P,1);%變調濾波器exc_syn_t = zeros(L,1);s_syn_t = zeros(L,1);last_syn_t = 0;zi_syn_t = zeros(P,1); hw = hamm

15、ing(WL);%濾波器%歸一化%讀入語音長度%計算幀長,floor ;向負無窮方向%激勵信號,double類零矩陣L行1列%預測濾波器狀態(tài)%重建語音%合成的激勵信號,創(chuàng)建一個L行1列的0脈沖%合成語音%存儲上一個段的最后一個脈沖的下標%合成濾波器%又明窗%依次處理每幀語音for n = 3:FN%從第三個子數(shù)組開始%計算預測系數(shù)s_w = s(n*FL-WL+1:n*FL).*hw;%明窗加權A,E=lpc(s_w,P);%線性預測計算預測系數(shù)% A是預測系數(shù),E會被用來計算合成激勵的能量s_f=s(n-1)*FL+1:n*FL);麻1J用filter函數(shù)重建語音%本幀語音exc1,zi_p

16、re = filter(A,1,s_f,zi_pre);exc(n-1)*FL+1:n*FL) = exc1;%+算激勵麻1J用filter函數(shù)重建語音s_rec1,zi_rec = filter(1,A,exc1,zi_rec);s_rec(n-1)*FL+1:n*FL) = s_rec1;%lt 建語音%下面只有得到exc后才可以 s_Pitch = exc(n*FL-222:n*FL);PT(n) = findpitch(s_Pitch);%#算基音周期 ptG = sqrt(E*PT(n);%計算合成激勵的能量 G% tempn_syn = 1:n*FL-last_syn;% exc_

17、syn1 = zeros(length(tempn_syn),1);% exc_syn1(mod(tempn_syn,PT)=0) = G; %某一段算出的脈沖% exc_syn1 = exc_syn1(n-1)*FL-last_syn+1:n*FL-last_syn);% s_syn1,zi_syn = filter(1,A,exc_syn1,zi_syn);% exc_syn(n-1)*FL+1:n*FL)=exc_syn1; %計算得到合成激勵% s_syn(n-1)*FL+1:n*FL) = s_syn1; %計算得到合成語音% last_syn = last_syn+PT*floor

18、(n*FL-last_syn)/PT);PT1 =floor(PT(n)/2);%M 小基音周期poles = roots(A);deltaOMG =100*2*pi/fs;for p=1:10%曾加共振峰if imag(poles(p)0poles(p) = poles(p)*exp(1j*deltaOMG);elseif imag(poles(p)=0.85*RopRop=R2;Top=T2;endif R30.85*RopRop=R3;Top=T3;endPT=Top;return(3)女變男function nvbiannan_Callback(hObject, eventdata,

19、handles)FL = 80 ;% 幀移WL = 240 ;% 窗長P = 10 ;%預測系數(shù)個數(shù)s = handles.y;fs = handles.Fs;%定義常數(shù)s = s/max(s);%歸一化L = length(s);%讀入語音長度FN = floor(L/FL)-2;%計算幀長,floor ;向負無窮方向%預測和重建濾波器exc = zeros(L,1);%激勵信號,double類零矩陣L行1列zi_pre = zeros(P,1);%預測濾波器狀態(tài)s_rec = zeros(L,1);%重建語音zi_rec = zeros(P,1);%變調濾波器exc_syn_t = zer

20、os(L,1);%合成的激勵信號,創(chuàng)建一個L行1列的0脈沖s_syn_t = zeros(L,1);last_syn_t = 0;zi_syn_t = zeros(P,1);%合成語音%存儲上一個段的最后一個脈沖的下標%合成濾波器hw = hamming(WL);%濾波器%又明窗%依次處理每幀語音for n = 3:FN%計算預測系數(shù)s_w = s(n*FL-WL+1:n*FL).*hw;%從第三個子數(shù)組開始%漢明窗加權A,E=lpc(s_w,P);%線性預測計算預測系數(shù)% A是預測系數(shù),E會被用來計算合成激勵的能量s_f=s(n-1)*FL+1:n*FL);麻1J用filter函數(shù)重建語音%

21、本幀語音exc1,zi_pre = filter(A,1,s_f,zi_pre);exc(n-1)*FL+1:n*FL) = exci;%# 算激勵麻1J用filter函數(shù)重建語音s_rec1,zi_rec = filter(1,A,exc1,zi_rec);s_rec(n-1)*FL+1:n*FL) = s_rec1;%lt 建語音%下面只有得到exc后才可以s_Pitch = exc(n*FL-222:n*FL);PT(n) = findpitch(s_Pitch);%#算基音周期 ptG = sqrt(E*PT(n);%計算合成激勵的能量 G% tempn_syn = 1:n*FL-la

22、st_syn;% exc_syn1 = zeros(length(tempn_syn),1);% exc_syn1(mod(tempn_syn,PT)=0) = G; %某一段算出的脈沖% exc_syn1 = exc_syn1(n-1)*FL-last_syn+1:n*FL-last_syn);% s_syn1,zi_syn = filter(1,A,exc_syn1,zi_syn);% exc_syn(n-1)*FL+1:n*FL)=exc_syn1; %計算得到合成激勵% s_syn(n-1)*FL+1:n*FL) = s_syn1; %計算得到合成語音% last_syn = last

23、_syn+PT*floor(n*FL-last_syn)/PT);PT1 =floor(PT(n)/2);%M 小基音周期poles = roots(A);deltaOMG =100*2*pi/fs;for p=1:10%曾加共振峰if imag(poles(p)0poles(p) = poles(p)*exp(1j*deltaOMG);elseif imag(poles(p)0 ;poles(p) = poles(p)*exp(1i*deltaOMG);elseif imag(poles(p)0 ;poles(p) = poles(p)*exp(-1i*deltaOMG);endendend

24、A1=poly(poles);tempn_syn_t = 1:n*FL-last_syn_t;exc_syn1_t = zeros(length(tempn_syn_t),1);exc_syn1_t(mod(tempn_syn_t,PT1)=0) = G;exc_syn1_t = exc_syn1_t(n-1)*FL-last_syn_t+1:n*FL-last_syn_t);s_syn1_t,zi_syn_t = filter(1,A1,exc_syn1_t,zi_syn_t);exc_syn_t(n-1)*FL+1:n*FL) = exc_syn1_t;s_syn_t(n-1)*FL+1:n*FL) = s_syn1_t;last_syn_t = last_syn_t+PT1*floor(n*FL-last_syn_t)/PT1);endplot(handles.axes4,exc_syn_t)xlabel(handles.axes4,時域圖);ylabel(handles.axes4,頻率);title(handles.axes4,幅

溫馨提示

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

評論

0/150

提交評論