課程設計--語音信號變聲處理系統(tǒng)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  數字信號處理</b></p><p><b>  課程設計報告</b></p><p><b>  摘要</b></p><p>  我們每個人的聲音不同,源于我們的每個人的音色和音調不同,我們所說的男中音、男高音,就是音調的不同,而即便音調一致,我們依然能區(qū)分出兩個不同

2、人的聲音,或不同樂器的聲音,這就是音色的不同。變聲器,正是借助對聲音音色和音調的雙重復合改變,實現輸出聲音的改變。</p><p>  在進行性別變聲時,主要考慮基頻和共振峰頻率的變化。當基頻伸展,共振峰頻率也同時伸展時,可由男聲變成女聲,女聲變成童聲;反之,基頻收縮,共振峰頻率也同時收縮時,則由童聲變女聲,女聲變男聲。為了獲得自然度、真實感較好的變聲效果,基頻和共振峰頻率通常必須各自獨立地伸縮變化。 

3、</p><p>  本次課程設計就是運用我們所學到的理論知識,用MATLAB軟件來實現對語音信號的變聲處理,理論聯(lián)系實際,從而更好地掌握以及運用所學習的知識。</p><p><b>  目錄</b></p><p><b>  目錄3</b></p><p>  第一章 課程設計任務4<

4、;/p><p>  第二章 變聲器原理及設計方案5</p><p><b>  2.1基本原理5</b></p><p>  第三章 變聲器的實現及分析7</p><p>  3.1信號變聲器的實現7</p><p><b>  3.2設計過程7</b></p&g

5、t;<p>  3.3仿真結果及分析10</p><p>  第四章 課設總結14</p><p>  4.1小組總結14</p><p>  4.2個人總結15</p><p><b>  參考文獻16</b></p><p><b>  附錄:17</

6、b></p><p>  第一章 課程設計任務</p><p>  電視臺經常針對某些事件的知情者進行采訪,為了保護知情者,經常改變說話人的聲音,利用所學的知識,將其實現。</p><p>  1) 自己錄制一段正常的聲音文件,或者通過菜單選擇的方式選擇一段正常聲音文件; </p><p>  2) 能夠播放該文件; </p>

7、;<p>  3) 對語音信號進行處理,要求處理后的語音信號基本不影響正常收聽與理解;</p><p>  5) 對處理參數能夠通過matlab界面進行調節(jié),以對比不同處理效果; </p><p>  6) 能夠對處理后的聲音文件與原始聲音文件的頻譜進行觀察、分析。</p><p>  7) 編制GUI用戶界面。</p><p>

8、;<b>  任務分配:</b></p><p>  代碼編寫及運行調試:鄭昌棟,杭嘉琪</p><p>  實驗報告整理與編寫:杜天送</p><p>  相關資料查詢及整理:劉 洋</p><p>  實驗方案設計與編寫:周 俊</p><p>  Gui界面設計及制作:顏全穩(wěn)</p

9、><p>  第二章 變聲器原理及設計方案</p><p><b>  2.1基本原理</b></p><p>  語音科學家將人類發(fā)聲過程視作一個由聲門源輸送的氣流經以聲道、口、鼻腔組成的濾波器調制而成的。人類語音可分為有聲語音和無聲語音,前者是由聲帶振動激勵的脈沖信號經聲腔調制變成不同的音,它是人類語言中元音的基礎,聲帶振動的頻率稱為基頻。無聲

10、語音則是聲帶保持開啟狀態(tài),禁止振動引發(fā)的。一般來說,由聲門振動決定的基頻跟說話人的性別特征有關,如下表,而無聲語音則沒有體現這個特征。說話人的個性化音色和語音的另外一個聲學參數——共振峰頻率的分布有關。兒童由于聲道短,其共振峰頻率高于成年人,成年女性的聲道一般短于成年男性,所以女性的共振峰頻率一般高于男性。</p><p>  表2.1 男聲、女聲和童聲基頻、共振峰頻率關系表</p><p&g

11、t;  由上可知,在進行性別變聲時,主要考慮基頻和共振峰頻率的變化。當基頻伸展,共振峰頻率也同時伸展時,可由男聲變成女聲,女聲變成童聲;反之,基頻收縮,共振峰頻率也同時收縮時,則由童聲變女聲,女聲變男聲。為了獲得自然度、真實感較好的變聲效果,基頻和共振峰頻率通常必須各自獨立地伸縮變化。</p><p>  共振峰頻率的改變是基于重采樣實現的,從重采樣原理知道,這也同時引發(fā)了基頻的變化,為保證基頻變化和共振峰頻率變

12、化的獨立、互不相關,在基頻移動時必須考慮抵消重采樣帶來的偏移,理論上只要基頻檢測足夠精確,確實可以保證基頻改變和共振峰頻率改變間的互不相關。</p><p><b>  ·2.2設計方案</b></p><p>  1:選取需要變聲的原始語音信號;</p><p>  2: 得到原始語音信號的基音周期長度;</p>&l

13、t;p>  3: 根據基音周期長度定位整個原始語音信號的每一個基音周期的位置;</p><p>  4: 在原始語音信號中的基音周期之間刪除/插入基音周期,得到縮短/伸長的語音信號;</p><p>  5: 將縮短/伸長的語音信號線性伸長/壓縮至與原始語音信號一致的長度,得到變聲后的語音信號。</p><p>  第三章 變聲器的實現及分析</p>

14、;<p>  3.1信號變聲器的實現</p><p>  圖2.2語音處理實現框圖</p><p><b>  實現步驟:</b></p><p>  1)語音信號的錄制與讀入。</p><p>  2)語音信號的頻譜分析。</p><p>  3)實現慢錄快放和快錄慢放功能<

15、/p><p>  4)設計數字濾波器和畫出其頻率響應。</p><p>  5)用濾波器對信號進行濾波。</p><p>  6)比較濾波前后語音信號的波形及頻譜。</p><p>  7)通過搬移、改變基波頻率實現變聲。</p><p><b>  8)語音信號恢復。</b></p>

16、<p>  9)在MATLAB下繪制出各個部分的輸出波形,前后對比。</p><p><b>  3.2設計過程</b></p><p>  3.2.1 分幀處理</p><p>  對語音信號加Hamming窗處理,方法是用窗序列沿著語音樣點值序列逐幀從左向右移動。</p><p>  Hamming窗的窗函

17、數如下:</p><p><b>  =(4.1)</b></p><p>  確定了窗函數以后,對語音信號的分幀處理,實際上就是對各幀進行某 幀進行某種變換或運算。 </p><p>  3.2.2 計算預測系數</p><p>  3.2.3 計算激勵信號</p><p>  對每幀語音信號

18、s(n),和預測模型系數{ },用filter函數計算激勵信號e(n)。此時應該注意在系數變化的情況下連續(xù)濾波,需要維持濾波器的狀態(tài)不變,要利用filter函數的 和 參數。</p><p>  這里要利用 _pre,利用 _pre作為初始狀態(tài)得到最終狀態(tài),本次循環(huán)得到的最終狀態(tài)作為下次循環(huán)的初始狀態(tài),并把每次循環(huán)得到的激勵保存下來。</p><p>  3.2.4 重建語音</p&

19、gt;<p>  用計算得到的激勵信號e(n)和預測模型系數{ },用fliter函數計算重建語音 。同樣要注意維持濾波器的狀態(tài)不變。</p><p>  這里我們由激勵得到語音,并且要利用 _rec,利用 _rec作為初始狀態(tài)的到最終狀態(tài),本次循環(huán)得到的最終狀態(tài)作為下次循環(huán)的初始狀態(tài),并且把每次循環(huán)得到的重建語音保存下來。</p><p>  3.2.5 基音周期</

20、p><p>  基音周期是表征語音信號本質特征的參數,屬于語音分析的范疇,只有準確分析并且提取出語音信號的特征參數,才能夠利用這些參數進行語音合成處理。</p><p>  如果x(n)是一個周期為P的信號,則其自相關函數也是周期為P的信號,且在信號周期的整數倍處,自相關函數取最大值。語音的濁音信號具有準周期性,其自相關函數在基音周期的整數倍處取最大值。計算兩相鄰最大峰值間的距離,就可以估計出

21、基因周期。MTWE601-003006-FLSC0</p><p>  3.2.6 合成激勵的能量</p><p>  根據線性預測分析的原理可知,求解p個線性預測系數的依據,是預測誤差濾波器的輸出方均值或輸出功率最小??煞Q這一最小方均誤差為正向預測誤差功率 ,即</p><p>  =E{e(n)[s(n)- s(n-1)]}

22、 </p><p>  =E[e(n)s(n)]- E[e(n)s(n-i)] (4.2)</p><p>  由于上式第二項為0,又:</p><p>  e(n)=s(n)-=s(n)- s(n-i) (4.3)</p><p>  將(4.3)代入(4.2)得:

23、</p><p>  =E[e(n)s(n)]=E[s(n)s(n)]- E[s(n)s(n-i)]=R(0)- R(i) (4.4)</p><p>  根據式(4.4)可以求得增益常數G。</p><p>  =R(0)- R(i) (4.5)</p><p><b>  從而

24、可以得到:</b></p><p>  = (4.6)</p><p>  由前面計算預測系數的代碼</p><p>  可以得到 (代碼里用E表示),和計算得到的基音周期聯(lián)立可以得到增益G。</p><p><b>  程序代碼如下:</b></

25、p><p>  3.2.7 變聲處理</p><p>  變聲的過程的實現思路與前面合成語音的思路基本相同,只是在兩個地方有所不同:系統(tǒng)參數b,a不同,這里的b和a是要用經改變后的極點算出來的;生成激勵信號時,用floor(PT/2)作為這里的PT。</p><p>  在變聲的時候我們采用女生,小孩時變調不變速的濾波器:</p><p>  老

26、人采用變速不變調濾波器:</p><p>  3.3仿真結果及分析</p><p>  3.3.1波形及頻譜</p><p>  (1)原始信號波形及頻譜:</p><p>  采集到的男子聲音信號大都分布在較低的頻段上,即男子話音的基頻較低</p><p>  (2)男生信號合成女生信號后波形及頻譜:</p&g

27、t;<p>  變聲前后,音頻信號的時域波形被壓縮,總體形狀無太大變化。</p><p>  改變信號的基頻可以實現語音的變調。零頻和35000附近的信號被削弱,而對應于【10000,25000】頻點部分的信號得到加強</p><p> ?。?)男生信號合成小孩信號后波形及頻譜:</p><p>  變聲前后,音頻信號的時域波形被壓縮,總體形狀無太大變

28、化。</p><p>  改變信號的基頻可以實現語音的變調。零頻附近的信號被削弱,而對應于 【10000,24000】頻點部分的信號得到加強</p><p> ?。?)男生信號合成老人信號后的波形及頻譜:</p><p>  男聲變老人聲前后,音頻的時域波形被展寬,總體形狀變化不大。</p><p>  男聲變老人聲前后【0,15000】頻

29、點對應的信號和【25000,30000】頻點對應的信號則被削弱</p><p><b>  3.3.2調試分析</b></p><p>  1、在對處理后的語音文件獲取預測系數的時候一直為NaN</p><p>  將對語音文件的采樣率改為22KHz后,能正常獲取數據。</p><p>  2、用wavread讀取48M

30、的wav音頻文件時一直讀取不到。</p><p>  改為讀取只有幾十K的文件后就能正常運行,猜測可能是文件太大。</p><p><b>  第四章 課設總結</b></p><p><b>  4.1小組總結</b></p><p>  此次課設題目為數字變聲器設計,要求我們利用所學的信號處理、

31、MATLAB知識完成任務。綜合了過去三年所學的重要專業(yè)知識,可謂是對過去所學知識的一次全面考察。變聲器的原理是通過改變輸入聲音頻率,進而改變聲音的音色、音調,使輸出聲音在感官上與原聲音不同。變聲器是借助對聲音音色和音調的雙重復合改變,實現輸出聲音的改變。通過自己發(fā)聲,共振峰頻率的改變是基于重采樣實現的。接到課題后,我便積極準備,到圖書館查閱相關書籍,上網搜索有關內容,利用MATLAB實現仿真,并及時向指導老師回報進度,聽取老師的意見和建

32、議。最終,順利完成了此次課設任務。</p><p>  采集到的男子聲音信號大都分布在較低的頻段上,而女子的聲音信號大都分布在較高的頻段上。即男子話音的基頻較低,女子的話音基頻較高。信號經過濾波器處理后,保留了有效的頻率成分,一定程度上去除了干擾信號。對于男子的聲音影響較小,原因為男子的話音有用信號大都分布在較低的頻段上,通過低通濾波器后,噪聲等無用信號被濾除。改變信號的基頻可以實現語音的變調。變聲前后,音頻的時

33、域波形基本變化不大,而信號的頻域波形發(fā)生較大變動。男聲變女聲后信號的頻譜被搬到較高的頻帶上,男聲變童音后,信號的頻譜被搬移到更高的地方。女聲變男聲則反過來。通過改變輸出頻率,可以實現聲音的提速或減速播放。將頻率乘以大于一的數后,可以實現減速播放效果。將頻率乘以(0,1)內的數后,可以實現減速播放效果。男聲變老人的聲音可以通過變速實現,變速不變調。改變輸出速度而不用改變聲音頻率。</p><p>  通過這次課設,

34、我對理論知識的掌握更加牢固,而且把理論與實踐聯(lián)系在一起,提高了自己的實踐能力。而且我認識到了同學之間的相互合作的重要性,還提高了自己如何在眾多的資料中找到對自己有用的信息。要想把所學的內容融會貫通,只學好課本知識是不夠的,要把所學習的知識加以利用,這次課設就給了我們很好的機會,讓我們不僅鞏固了課本知識,還從理論上升到了實際。</p><p>  從課題的中心來看,課題是希望將數字信號處理技術應用于某一實際領域,這

35、里就是指對語音的處理。作為存儲于計算機中的語音信號,其本身就是離散化了的向量,我們只需將這些離散的量提取出來,就可以對其進行處理了。</p><p>  在這里,用到了處理數字信號的強有力工具MATLAB,通過MATLAB里幾個命令函數的調用,很輕易的在實際化語音與數字信號的理論之間搭了一座橋。</p><p>  通過這次的課程設計,熟悉并掌握了MATLAB 中有關語音信號的讀取,頻譜分

36、析,頻譜的搬移和基頻、語速的改變來實現變聲,分析其頻譜,并與原始信號頻譜進行比較。</p><p><b>  4.2個人總結</b></p><p>  通過本次課程設計,我在代碼編寫過程中認識到認真,嚴謹的重要性;以及調試過程中需要極大的耐心,最重要的是團隊協(xié)作,也學習到了matlab的基本使用和編程的一些技巧。</p><p><b

37、>  參考文獻</b></p><p>  [1] 高西全、丁玉美編著.數字信號處理.西安:西安電子科技大學出版社,2008.</p><p>  [2] 劉樹棠譯.數字信號處理——使用MATLAB.西安:西安交通大學出版社,2002.</p><p>  [3] 孫卓、岳振軍,一種漢語語音變換技術,電聲技術,2007.</p>&l

38、t;p>  [4] 羅軍輝等編著.MATLAB7.0在數字信號處理中的應用.北京:機械工業(yè)出版社,2005.</p><p>  [5] 陳懷琛等編著.MATLAB及在電子信息課中的應用.北京:電子工業(yè)出版社,2002.</p><p>  [6] 胡廣書編著.數字信號處理――理論、算法與實現.北京:清華大學出版社,2002.</p><p>  [7] 梁虹

39、等編.信號與線性系統(tǒng)分析――基于MATLAB的方法與實現.北京:高等教育出版社,2006.</p><p>  [8] 劉衛(wèi)國主編.MATLAB程序設計與應用(第二版). 北京:高等教育出版社,2006.</p><p><b>  附錄:</b></p><p>  global music;</p><p><

40、b>  music=0;</b></p><p>  [s,fs,nbits] = wavread('錄音.wav'); </p><p>  s = s/max(s);</p><p>  L = length(s); </p><p>  S=fft(s,L);<

41、/p><p>  axes(handles.axes1);</p><p>  plot(s);title('原語音信號波形');</p><p>  axes(handles.axes2);</p><p>  plot(abs(S));title('原語音信號頻譜');</p><p>

42、  music=audioplayer(s,fs);</p><p>  play(music);</p><p>  % --- Executes on button press in pushbutton2.</p><p>  function pushbutton2_Callback(hObject, eventdata, handles)</p>

43、;<p>  % hObject handle to pushbutton2 (see GCBO)</p><p>  % eventdata reserved - to be defined in a future version of MATLAB</p><p>  % handles structure with handles and user dat

44、a (see GUIDATA)</p><p>  global music;</p><p><b>  music=0;</b></p><p>  [s,fs,nbits] = wavread('錄音.wav'); </p><p>  FL = 80; </

45、p><p>  WL = 240; </p><p>  P = 10; </p><p>  s= s/max(s); </p><p>  L = length(s); </p><p>  FN = floor(L/FL)-2; </p&

46、gt;<p>  Ec = zeros(L,1); </p><p>  ZiPre = zeros(P,1); </p><p>  Sre = zeros(L,1); </p><p>  ZiPre = zeros(P,1); </p><p>  EcS= zeros(L,1); </

47、p><p>  Ssn = zeros(L,1); </p><p>  LastSn = 0; </p><p>  ZiSn = zeros(P,1); </p><p>  EcSnT = zeros(L,1); </p><p>  SsnT = zeros(L,1); </p

48、><p>  LastSnT = 0; </p><p>  ZiSn_t = zeros(P,1); </p><p><b>  v=.5;</b></p><p>  EcSnV = zeros(v\L,1); </p><p>  SsnV = zeros(v\L,1); &l

49、t;/p><p>  LastSnV = 0; </p><p>  ZiSnV = zeros(P,1); </p><p>  hw = hamming(WL); </p><p>  for n = 3:FN</p><p>  SW = s(n*FL-WL+1:n*FL).*hw; </p&g

50、t;<p>  [A E] = lpc(SW, P); </p><p>  SF = s((n-1)*FL+1:n*FL); </p><p>  [Ec1,ZiPre] = filter(A,1,SF,ZiPre); </p><p>  Ec((n-1)*FL+1:n*FL) = Ec1; </p

51、><p>  [Sre1,ZiPre] = filter(1,A,Ec1,ZiPre); </p><p>  Sre((n-1)*FL+1:n*FL) = Sre1; </p><p>  s_Pitch = Ec(n*FL-222:n*FL);</p><p>  PT = findpitch(s_Pitch); </

52、p><p>  G = sqrt(E*PT); </p><p>  TempSn = [1:n*FL-LastSn]';</p><p>  EcSn1 = zeros(length(TempSn),1);</p><p>  EcSn1(mod(TempSn,PT)==0) = G; </p&

53、gt;<p>  EcSn1 = EcSn1((n-1)*FL-LastSn+1:n*FL-LastSn);</p><p>  [Ssn1,ZiSn] = filter(1,A,EcSn1,ZiSn);</p><p>  EcSn((n-1)*FL+1:n*FL) = EcSn1; </p><p>  Ssn((n-1)*FL+1:n*FL)

54、 = Ssn1; </p><p>  LastSn = LastSn+PT*floor((n*FL-LastSn)/PT);</p><p>  PT1 =floor(PT/2); </p><p>  poles = roots(A);</p><p>  deltaOMG =150*2*pi/fs; </p&g

55、t;<p>  for p=1:10 </p><p>  if imag(poles(p))>0 poles(p) = poles(p)*exp(j*deltaOMG);</p><p>  elseif imag(poles(p))<0 poles(p) = poles(p)*exp(-j*deltaOMG);</p><p>&l

56、t;b>  end</b></p><p><b>  end</b></p><p>  A1=poly(poles); </p><p>  TempSnT = [1:n*FL-LastSnT]';</p><p>  EcSn1T = zeros(length(TempSnT),1);&

57、lt;/p><p>  EcSn1T(mod(TempSnT,PT1)==0) = G; </p><p>  EcSn1T = EcSn1T((n-1)*FL-LastSnT+1:n*FL-LastSnT);</p><p>  [Ssn1T,ZiSn_t] = filter(1,A1,EcSn1T,ZiSn_t);</p><p>  EcS

58、nT((n-1)*FL+1:n*FL) = EcSn1T; </p><p>  SsnT((n-1)*FL+1:n*FL) = Ssn1T; </p><p>  LastSnT = LastSnT+PT1*floor((n*FL-LastSnT)/PT1); </p><p><b>  end</b></p&g

59、t;<p>  S=fft(SsnT,L);</p><p>  axes(handles.axes3);</p><p>  plot(SsnT),title('合成女生信號波形') ,XLim([0,length(EcSnT)]);</p><p>  axes(handles.axes4);</p><p>

溫馨提示

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

評論

0/150

提交評論