




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 密級: 學號:2013248731本科生畢業論文(設計)基于MATLAB的簡單音樂合成仿真設計學 院: 信息工程 年 級: 13級 專 業: 通信工程 學生姓名: 何世欣 指導教師: 魏濤 封面還是錯的,指導老師也是錯的學士學位論文原創性聲明本人鄭重聲明:所呈交的論文(設計)是本人在指導老師的指導下獨立進行研究,所取得的研究成果。除了文中特別加以標注引用的內容外,本論文(設計)不包含任何其他個人或集體已經發表或撰寫的成果作品。對本文的研究做出重要貢獻的個人和集體,均已在文中以明確方式表明。本人完全意識到本申明的法律后果由本人承擔。學位論文作者簽名(手寫): 簽字日期: 年 月 日 學位論文版
2、權使用授權書本學位論文作者完全了解學校有關保留、使用學位論文的規定,同意學校保留并向國家有關部門或機構送交論文的復印件和電子版,允許論文被查閱和借閱。本人授權江西科技學院可以將本論文的全部或部分內容編入有關數據庫進行檢索,可以采用影印、縮印或掃描等復制手段保存和匯編本學位論文。本學位論文屬于保 密 , 在 年解密后適用本授權書。不保密 。(請在以上相應方框內打“” )學位論文作者簽名(手寫): 指導老師簽名(手寫): 簽字日期: 年 月 日 簽字日期: 年 江西科技學院本科生畢業論文(設計)摘要科學技術的發展使得社會生活越來越趨于信息化和數字化,在此基礎上語音信號也可以基于數字信號處理技術和語
3、音學相關知識進行信息化處理,此類技術因應用性廣便捷性高受到社會的廣泛關注,已成為信息科學工程與研究領域的核心技術,被越來越多的高科技產業廣泛使用。計算機合成音樂也在其基礎上得以迅速普及,而且理論上可以創造出任何一種聲音。MATLAB是一種用于數據分析和處理的計算機應用軟件,它可以將語音文件進行信息化處理轉化為離散的數據文件,再通過內置強大的矩陣運算能力如數字濾波、時域和頻域分析、傅里葉變換、時域和頻域分析、聲音合成以及各種圖形的呈現等處理數據。利用MATLAB自帶的功能函數可以快捷而又方便地完成語音信號的處理和分析以及信號的可視化,使人機交互更加便捷。音樂可視為不同頻率與振幅的正弦波疊加并加以
4、不同包絡所形成的信號,它的這個特點使得MATLAB的處理有了可能,通過處理不同的音頻MATLAB可以進行簡單的音樂合成。本文主要是基于MATLAB環境下的音樂合成研究,首先基于相關的處理函數合成簡單的音樂,并且對音樂進行降噪、升降度和加諧波等處理;然后基于傅里葉變換分析處理后的音樂頻譜;最后根據傅里葉級數的原理來再次合成音樂。關鍵詞:音樂合成;MATLAB;傅里葉分析IAbstractIn the current society, information technology and digitization become more and more high. As a new techno
5、logy to process speech signals based on digital signal processing technology and phonetic knowledge, voice signal processing technology is widely used in more and more high-tech industries. Technology has become one of the core technologies in the field of information science engineering and researc
6、h. Computer synthesis of music to the rapid spread, in theory, you can create any kind of sound.MATLAB is a computer application for data analysis and processing that transforms sound files into discrete data files and then processes their data with powerful matrix operations such as digital filteri
7、ng, Fourier transform, time domain and Frequency domain analysis, sound synthesis and a variety of graphics rendering. Using MATLAB's own function function can quickly and easily complete the voice signal processing and analysis and signal visualization, human-computer interaction more convenien
8、t. As the music signal can be seen as a series of different frequency and amplitude of the sine wave superposition and the formation of different envelopes, so you can use this feature based on MATLAB software analysis and processing of different audio signals for simple music synthesis.This paper i
9、s mainly based on the study of music composition under MATLAB environment, using the relevant audio processing functions for simple music synthesis, the music noise reduction, plus harmonic and lifting processing; Fourier transform with the corresponding treatment of the Music spectrum; Finally, re-
10、synthesis the music according to the principle of Fourier series.Key Word:Music synthesis; MATLAB; Fourier analysis目 錄目錄格式全錯第1章緒 論11.1 選題意義及背景11.2 國內外研究現狀11.3 本文主要研究內容21.4 MATLAB音樂合成的原理31.4.1所涉及的樂理知識簡述31.4.2 音調與唱名31.4.3音色與諧波31.4.4十二平均律41.4.5傅里葉變換與頻譜分析41.5 MATLAB的發展史4第2章 音樂合成的相關算法62.1 基于統計聲學模型的合
11、成算法62.2 基于離散變換的合成算法72.3 本文算法7第3章 基于MATLAB的簡單音樂合成設計93.1 MATLAB簡介93.1.1MATLAB的運行113.1.2變量、語句、矩陣與函數123.1.3 繪制三維圖形123.3 核心算法實現133.4 算法設計143.4.1 調用相關的MATLAB函數143.4.2 音樂初步處理143.4.3 音樂合成15第4章 基于MATLAB的簡單音樂合成仿真174.1 合成音樂174.1.1 初始音樂合成174.1.2 消除噪音174.1.3 重新生成音樂194.2 原始聲測試和傅里葉分析204.2.1 原始聲測試204.2.2 傅里葉分析234.2
12、.3 重新合成新音樂25第5章 總結與展望265.1 總結265.2 展望27參考文獻29致 謝30IV第1章緒 論1.1 選題意義及背景半個多世紀以來,音樂家們一直致力于利用當今的科技和新材料來探索新的音樂,在原來的基礎上進行不斷的創新,音樂合成此項技術由于其強大的數據處理能力和創造能力便隨之進入音樂家們的視野。音樂合成技術,不僅可以巧妙模仿現有樂器的音色,還能夠創造新的聲音,極大地豐富了人類的音樂,給我們帶來了無窮無盡的新音樂體驗。隨著科技的發展,計算機合成音樂迅速在音樂界流傳并普及。作曲家和音樂家們為了創新和追求個性,往往選擇在音樂中加入新的聲音,而計算機合成音樂技術即為其提供了可能,因
13、為在理論上它可以創造出任何一種聲音。現在,合成音樂已經逐漸脫離模仿現有樂器音色的道路,轉而向創造音色方面發展。雖然合成音樂在現代音樂領域已有相對廣泛的應用,但是發展仍有所受限,國內在該方面的權威理論著作也很少。這是因為它其涉及音色、聲學、計算機等相關學科,是一門綜合性強且專業性高的學科。通過分析近年來使用合成音樂的現代音樂,可以發現合成音樂相較聲學樂器在層次和音色上都具有顯現的獨特性,這些分析也能為計算機合成音樂在現代音樂制作的應用提供相對有實踐價值的參考。MATLAB是英文MATrix LABoratory(矩陣實驗室)的縮寫。自1984年由美國MathWorks公司推向市場以來,得到了廣泛
14、的關注和發展。在發達國家,MATLAB已經是大學以上學歷者所必須具備的一項技能,是數字信號處理、時間序列分析、線性代數、自動化控制理論、動態系統仿真等諸多課程的基本教學工具。而在設計和工業部門,MATLAB也有廣泛的應用,主要用于解決各種具體的工程和交互問題。根據國外的發展歷史和近幾年MATLAB在中國的發展趨勢,可以預見其在不久的將來,將會在科學研究和工程應用領域發揮越來越大的作用。1.2 國內外研究現狀音樂合成技術是語音合成技術的一個分支。國外對于語音合成的研究已長達200多年,雖然研究時間長但是顯著的研究成果是在計算機技術和數字信號處理技術發展之后才出現的,主要表現為讓計算機能夠輸出高清
15、晰度和自然度的連續音樂。近幾十年,該技術在國內外的研究重點為規則文語轉化,也就是將書面語轉化為口語。在語音合成技術的歷史發展過程中,早期研究主要應用參數合成法。其中最具意義的就是Holmes的并聯共振峰合成器(1973)和Klatt的串/并聯共振峰合成器(1980),這兩個合成器只需要細致的參數調節即可合成自然的語音。美國DEC 公司的DECtalk,是當時最具代表性的文語轉換系統,它就是搭載串/并聯共振峰合成器,從而使得人機交互有了更大的便捷和可能,該系統可以通過計算機聯網或者接入電話網來提供各項語音服務,不僅發音標準清楚,而且還具備7種不同的音色,受到了當時的廣泛追捧。但是后來人們發現,共
16、振峰合成器盡管可以提供逼真的合成語音,但是其音質卻因為提取共振峰參數的困難存在較大的缺陷,并不能滿足當下需求。因此在不斷的研究下,語音合成技術又有了新的發展基音同步疊加(PSOLA)方法(1990)。這項技術基于時域波形的拼接,大大提高了合成音樂的音色和自然度,因此在九十年代初受到了廣泛的關注,包括法語、英語、日語、德語等在內的文語轉換系統都被成功開發研制出來,而且此項技術結構簡單易于實時實現,有著非常美好的商用前景。近年來的研究,也開發出一種基于數據庫的新的語音合成方法。該數據庫為預先錄下的龐大語音數據庫,每個合成語句的語音單元都能從數據庫中進行調取和拼接,因此只要數據庫足夠龐大,那么理論上
17、任何語音都可以被合成出來且具有不同語境下的語氣和音調差別,清晰度和自然度將會有質的提升!1.3 本文主要研究內容在本設計中,MATLAB軟件通過對音樂信號頻率與時長的分析與組合來簡單合成音樂。頻率表現音調,時長體現時長,基于該基礎MATLAB在編程中能夠存儲音樂的頻率和時長,并且通過將正弦波形的不同疊加與包絡設置來仿真實現音樂的音調與節奏的變化。主要特色:1、直觀而集中的顯示各運行參數,能分析音樂合成的運行。2、參數便于修改,從而方便改變音色和音調。論文的主要結構分為五個部分:第一章為緒論,簡單介紹了選題背景和意義,同時介紹了國內外關于語音合成的研究狀況,也描述了本文的主要研究內容和方向;第二
18、章是介紹了一些合成算法,本文的研究算法是從這些算法中綜合而來;第三章是簡單音樂合成的設計思路,同時對基本原理進行了分析;第四章是仿真實驗部分,介紹了本文的實驗成果;第五章是總結;最后部分是致謝。1.4 MATLAB的發展史MATLAB由美國New Mexico大學Cleve Moler教授編寫并命名,起初他是為了方便學生調用EISPACK和LINPACK從而編寫了其接口軟件。MATLAB的便捷性使其之后成為了國內外許多大學的教學輔助軟件。1984年,Cleve Moler和John Little創建了Math Works并推出了第一版MATLAB DOS,核心使用C語言編寫。隨著MATLAB的
19、不斷發展,20世紀90年代末推出了MATLAB5.x版本,功能更加強大,能處理更多的數據結構。2000年,MATLAB6.0出現,操作界面有了三個窗口:程序、歷史信息及變量管理,而FFTW系統的應用使得其計算速度上了一個臺階。一年后(2001),MATLAB6.1及Simulink4.0相繼問世,功能更強大的MATLAB6.5也在2002年推出。2004年,MATLAB7.0版本發行,優化了編程環境、數據可視化、計算和文件I/O等方面的功能。此后幾年,MATLAB7.17.14也不斷更新迭代,性能不斷優化,功能不斷完善。近幾年推出的MATLAB2012b(8.0版)及MATLAB2013a相較
20、之前有了較大的改變,主窗口中工具條替代了菜單和工具欄顯得更加齊整和簡潔,幫助文檔在搜索、瀏覽和篩選功能上也有了大幅度的提升。MATLAB2014a和MATLAB2014b版本也在之后推出。本設計使用的是MATLAB2013a,它功能強大而且方便快捷。1.5 MATLAB音樂合成的原理 在本設計中,MATLAB軟件通過對音樂信號頻率與時長的分析與組合來簡單合成音樂。頻率表現音調,時長體現時長,基于該基礎MATLAB在編程中能夠存儲音樂的頻率和時長,并且通過將正弦波形的不同疊加與包絡設置來仿真實現音樂的音調與節奏的變化。1.4.1所涉及的樂理知識簡述
21、; 音樂合成過程中不可避免需要考慮音樂的三大特性:音調、響度、音色。音調就是音的高低,其主要影響因素為聲波的頻率。響度為音的強弱,其主要影響因素為聲波的振動幅度。音色是聲音的感覺特性,其變化是由音樂波形中諧波的作用產生的。 1.4.2 音調與唱名 音樂曲譜中所對應的的1( do)、2( re)、3(mi)、4(fa).即為唱名,每個唱名代表著各自獨特的基波頻率,但是要確定其基波頻率必須先確定音調。如,樂譜為1=C,代表音調為C調則“1( do)”的基波頻率是261.6Hz,若樂譜為1=
22、E則“1( do)”頻率是239.6Hz,樂譜為1=G則“1( do)”的頻率是392.1Hz。1.4.3音色與諧波 音色是聲音的感覺特性,其變化是由音樂波形中諧波的作用產生的。在專業術語中,“泛音”指諧波,音調確認后可以確定唱名的基波頻率,但是諧波頻率的卻無法確定。樂器不同,所發出聲音的音樂也不同,這是因為不同樂器會產生不同的諧波成分和頻譜結構。不僅如此,不同樂器多產生的音樂包絡波形也迥乎不同,在合成音樂時常將音樂的復雜包絡函數直線化,這是便于用程序來表示波形包絡,因而常呈折線型。1.4.4十二平均律
23、 十二平均律,是指將音樂的八度按照頻率等比例地分成十二份,是一種音樂定律的方法。它被廣泛應用在鍵盤樂器與交響樂隊中,因為它不僅與“五度相生律”發音相似,而且能輕松解決轉調問題。國際標準音的規定顯示,相鄰的半音之間的頻率之比定為2(1/12)1.059,鋼琴就是所有樂器中應用該規律的最常用樂器。其琴鍵a1的頻率規定為440Hz,所以根據國際標準音規定就可以算出鋼琴其他所有琴鍵所對應的頻率。如,與a1左邊相鄰#g1頻率是440/1.059=415.03Hz,與a1右邊相鄰的半音#a1的頻率是466.16Hz,也可以算出不同音調下“1(do)”的對應的基波頻率,即C:261.
24、63Hz ,F:349.23Hz和G:392Hz 等 。 1.4.5傅里葉變換與頻譜分析 音樂合成過程中不可避免需要考慮音樂的三大特性:音調、響度、音色,因此必須了解音樂的基波、諧波頻率成分以及包絡的形狀特征。應用傅里葉變化理論對音樂信號的頻譜結構進行分析處理,有利于提取其頻譜特征。現代信號頻譜的主要分析方法為有限長序列的離散傅氏變換(DFT),它能夠將頻域也離散化。N點DFT實質上是其頻譜的離散頻域采樣,對頻率具有選擇性(k=2k/N),在這些點上反映了信號的頻譜。N點DFT雖然能克服時間域與頻率域之間相互轉換的計算障礙,但是其計算量大計算
25、復雜。因此引用快速傅里葉變化(FFT)算法最簡單、編程最容易的基2FFT,還有基4FFT、基8FFT等快速算法。采樣定律說明,FFT變換相當于對有限長序列進行頻域采樣,計算速度快而且也不會丟失信息,具有雙重作用。所以只要時域序列的長度足夠長,采樣的點數足夠多,頻域采樣也可以很好地反映信號的頻譜趨勢,基于以上優點,在設計中可以用FFT進行語音信號的頻譜分析。第2章 音樂合成的相關算法音樂合成是語音合成的一種,因此語音合成的算法思路可以直接運用于音樂合成中。對于語音合成的研究已經到了一個比較深入的階段,也出現了多種不同的算法,但是歸結起來,主要是兩個大的方向,其中一種是通過統計學建立聲學模型來進行
26、語音合成,另一種是挑選語音的特征參數來識別并合成新的語音。2.1 基于統計聲學模型的合成算法這種算法的思路是在模型訓練階段,首先提取語料庫中語音數據的頻譜、基頻等聲學相關指數,與統計聲學模型可以用于匹配之前和之后的內容,并通過語料庫中音位以及韻律予以注釋。使用的模型結構為隱馬爾柯夫模型。當進入到合成階段時,以使目標合成句對應的聲學模型具有最大的似然值輸出為準則,來進行最佳合成單元的挑選,最后通過平滑連接各備選單元波形來生成合成語音。其核心在于對錄入過程中中,對待合成字符產生的研究數據,需要將匹配的單元從前期進行錄制的語料庫中進行篩選,得到的結果為由波形進行編輯而成的語音成品。這種效果制作的語音
27、成品相比普通算法在自然度上有所超越,原因在于波形自身便具備自然的特性。前期籌劃的語料庫的內容越廣泛,自然度的優勢就越明顯,甚至會影響到語音合成未來的前進發展問題。隨著對語音合成技術的不斷探究,目前以隱馬爾柯夫模型作為主流算法,并且得到快速的推廣。類似統計建模的統計模型,范圍在語音識別方面以獲得廣泛推廣。在這種參數的操作原理中,即是在參數合成的方式以統計模型為主,聲學模型為輔的方式進行模擬,其中參數生成的方式為最大似然,通過對生成語音成品需求的頻譜和韻律進行評估,再通過參數合成的方式轉化語音。以這種方式為原則,將提升系統的應用性,在運算期間,可以無視語種的區別以及進行自動化訓練,最終使綜合的自然
28、度質量提高。通常在自動化訓練環節,在前期籌備的語料庫里,可針對音素聲學參數匹配音段、韻律進行內容注釋,對HMM模型中之前和之后的內容進行信號頻率、基頻和時間長度進行訓練。在最后的合成環節,需要進行錄入文本的解析,才可獲取目標合成句中所有語音最小單位進行上下內容的注釋,測試已優化好的模型與聲學模型的匹配程度。可以參照Kullback-Leibler算法原則進行單元的選擇和MLE算法原則下進行單元值的選擇,生成的最終單元序列可達到合成語音的平滑輸出。詳細訓練算法以及合成算法如圖2.1所示。圖里面的字太大了,說了好幾遍了圖 2.1基于統計聲學模型的合成算法2.2 基于離散變換的合成算法這種算法是在離
29、散變換域中合成語音信號,建立語音線性預測模型,信號經過加窗后隨著信號幀推進逐一展開處理,隨之對語音取樣值的線性組合進行預測以及運行基音檢測算法擇取語音幀,對語音信號進行模擬重建。其主要特質為,通過對樣本進行頻率濾除,進而通過預測器進行預測,以語音線性預測模型進行優化,以達到控制信號的帶寬,加窗后隨著信號幀推進逐一展開處理,音頻的重構合成將在聲道模型中進行。采用此種算法的亮點在于傳輸能力方面要好過模擬信號。通常情況下,信號在轉換過程中需要將模擬變為數字,而語音信號也不例外,作為對語音信號進行重構合成的變換域(即Z域),就是由離散系統轉變而成。2.3 本文算法通過結合實際情況,本文的算法思路是:首
30、先利用相關的語音處理函數進行簡單的音樂合成,對音樂進行降噪、加諧波以及升降度處理;然后用傅里葉變換分析經相應處理后的各音樂頻譜;最后運用傅里葉級數的原理來再次合成音樂針對語音音頻進行對應的優化合成,對音樂頻率中產生的噪音、非正弦電量、音調等參數進行分析優化。采用此種的亮點在于,方便快捷,可以使普通音頻合成的效果顯著。只不過,如果面對非常復雜的音頻,就會出現詬病。在噪音、音調等方面受到阻礙。下文將著重通過博里葉技術變化進行剖析,證明此種方法的合理性。第3章 基于MATLAB的簡單音樂合成設計本章主要簡單音樂合成設計,并對設計的基本原理進行分析,在介紹之前先對MATLAB進行一個簡介。3.1 MA
31、TLAB簡介一個簡介將了這么多你不如單獨列一章來將matlabMatlab為縮寫的英文名,而它中文命名為矩陣實驗室(MATrix LABoratory),(矩陣實驗室)的縮寫。在1979年的時候,克里夫莫勒爾正在為美國新墨西哥大學任教,當他在授課的時候,希望自己的學生可以運用EISPACK和LINPACK進行運算,當時他發現自己的學生在對接口進行編程經常要花費大量精力,給運算帶來極大的不便。為了解決這一問題,方便學生的運算,他便自己編寫出程序庫的接口程序,并且根據程序庫的運算方式命名為矩陣實驗室。雛形時期的Matlab是用FORTRAN語言進行簡編,用途比較單一,因為無償使用又在學生中有良好的
32、口碑,經常被各個大學所應用。工程師John Little敏銳地覺察到Matlab在工程領域的廣闊前景。同年,他和 Cleve Moler、Sieve Bangert一起合作成立了公司。以C語言開發使之成為專業進行數據運算以及圖表顯示功能的專業軟件。在九十年代初期,公司不斷對Matlab進行更新、升級、換代,使之成為多功能化計算軟件,在軟件超凡的數據運算能力為前提,增加了符號運算以及模擬建模等功能。使編程更方便。1999年初推出了的5.3版本在很多方面又進行了進一步改進。2001年7月,MathWorks公司退了Matlab最新版本6.1版,6.1版對計算機配置要求比較高。之后又推出了7.0版本
33、。現在用戶用的最多的是7.0版本。 截止到目前,Mat lab已經逐步成為專業功能更強大的軟件,它所具備的靈活運算能力以及通俗易懂的語言使之更為實用,其中在各個國家知名大學中被普及應用,并受到廣泛的好評。主要運用于數學、機械自動化、自然科學、工程科技、測量測繪等多種學科,是眾多學科專家教授以及學生都需要必備的應用軟件,并在一些更為專業的學術部門被普及運用,進行專業性的科研開發。在國內的科研項目之中,Matlab也被普遍應用,而本文中主要需要Matlab的通訊處理和仿真模式。Matlab的計算功能分兩個方面,一方面是數值計算,一方面則以針對數據中的符號計算進而提供分析數據,對于精度以及解析進行求
34、解。另外它包含的函數內容以及函數算法等兼容性較強,算法公式為經過專業計算專家進行審核認可,并經過精心設計。另外,對于符號計算的分析功能也十分強大,在通過與MAPLE軟件進行強強聯手,并以其明顯的功能優勢成為計算軟件中的主流軟件。Matlab在制圖方面的功能也非常完整,可進行兩種層次的制圖進行操作:首先可以對圖形變量進行低層制圖,再次也可以在此基礎上進行高層制圖。尤其是在高層制圖方面,不僅在制圖的功能上比較豐富,在操作上設計中也合理便捷。圖片的變量在繪制過程中可隨意的進行控制。此外,Matlab的額外亮點還在于它會用戶提供的工具箱,在進行基礎的計算制圖等功能時,可使用基礎款工具,就完全能滿足需求
35、。而在擴展工具箱中,包括功能、學科等多種針對性操作工具,例如:模擬建模、符號處理、系統操作、通訊信號、金融數據等多種專業性工具。Matlab能夠在數據計算軟件中占據主流的位置,在科研單位以及高校各學科中得到如此的普及運用得益于它的可視化圖表、數值運算、算法測試等。其中包含Matlab和Simulink,兩者可以將諸多專業性工具可視化圖表、數值運算、模擬建模等在軟件視圖內進行優化,以達到更高的客戶體驗。主要運用于數學、機械自動化、自然科學、工程科技、測量測繪等多種學科。Mat lab的主要特點分析如下:1.編程語言簡單,應變能力強大;依靠其種類繁多、數量大、涉及范圍較廣的數據庫,可以通過便利的函
36、數應用進行制作測試,對初學者基本無太多要求,而且非常容易上手。2. 用戶體驗良好,在Matlab能將基礎功能進行掌握之后,基本對程序調試也非常熟練,開發人員對程序的編制更加得心應手,而且其具備通俗易懂的操作界面,以人性化和實用化的開發環境滿足開發人員的實際需求,可以盡快對于錯誤進行修復和排除,另外由于學習難度降低,使之成為比VB更為簡單的語言系統。3擴展兼容能力強 , Matlab強大的數據庫使開發人員對程序的編制更加得心應手,并且庫函數兼容能力強,針對可以根據用戶的體驗進行自行改變,調動、翻閱。根據開發人員的實際需求,還可以自行對一些元素進行自定義的建設和擴展,使其具有的多元化的特征跟拓展性
37、的功能。4語句簡單,內容綜合體現 ,Matlab主要依靠函數成為自身重要語言,通常用以下表示:(a,6,c)= fun(d,e ,f,),含義為函數在函數命數之內,輸入變量d,e,f,和輸出變量a,b,c .組成,同一函數名F,不同數目的輸入變量(包括無輸入變量)及不同數據存在的變量。其中每一種變量,有存在針對性的數值,使之將繁雜的運算符轉化更加精簡,從而大量減少字符的數量,提供了良好的編輯和調試的環境。5矩陣和數組運算能力強 Basic、Fortra一樣規定了矩陣的一系列運算符,它不需定義數組的維數,并給出矩陣函數、特殊矩陣專門的庫函數,將其用于在通訊方式、模擬建模、語音識別等角度的應用,可
38、以提高研究的效率,尤其是科研類軟件的開發,它具有的功能性以及可控制性使一些專業范圍內的軟件得到更好的研發及應用。6制圖功能簡單有效,對于制圖的功能性,Matlab的優勢在于簡單,通過輸入制圖函數的指令,就可以對其圖形、顏色、線、點等多重要素進行繪制。而且對于制圖表標題、注釋也僅需要簡單指令就可以達成。3.1.1MATLAB的運行 啟動MATLAB 點擊MATLAB圖標,進入到MATLAB命令窗(MATLAB Command Window).在命令窗內,可以輸入命令、編程、進行計算. 學會使用help命令在命令窗內輸入help命令,再敲回車鍵.在屏幕上出現了在線幫助 總覽.(注意:MATLAB命
39、令被輸入后,必需敲回車鍵才能執行.為行文方便,以后不再每次提醒“敲回車鍵”.)學會使用help命令,是學習MATLAB的有效方法.例如:要想知道MATLAB中的基本數學函數有哪些,可以在總覽的第五行查到:MATLAB中的“基本數學函數”用elfun表示,于是,可進一步鍵入:“help elfun”,屏幕上將出現“基本數學函數”表.(注意:help elfun之間有空格,以后不再每次提醒.)如果想了解sin函數怎樣使用,可進一步鍵入help sin.在工具欄中點擊help按扭,或點擊?號按扭,與上面獲取幫助信息的方法是等效的. 學會使用demo命令 在命令窗內輸入demo命令,再敲回車,鍵屏幕上
40、將出現演示窗口. (MATLAB Demo Window)一共有三個窗口,左邊的窗口顯示欲演示內容的大標題,選定其中一項,右下方的小窗口顯示欲演示的具體內容,選中其中一欄,再點擊run按扭,屏幕上將演示選定的演示程序.右上方的窗口顯示關于大標題的一些說明.在命令窗內輸入type (文 tob_id_4294 2 件名),將顯示演示程序的M文件,仔細研究演示程序的M文件,是學習MATLAB的又一有效方法. 進入演示窗還有另一方法:在工具欄中點擊Help欄,下拉式菜單中點擊examples and demos項,即可進入演示窗口. 退出 在工具欄中點擊File按鈕,在下拉式菜單中單擊Exit MA
41、TLAB項即可3.1.2變量、語句、矩陣與函數 1變量 在MATLAB中,變量由字母、數和下劃線組成.第一個字符必須是字母.一個變量最多由31個字符組成,并區分大小寫.下面是MATLAB中表示特殊量的字符: pi(圓周率)、eps(最小浮點數)、Inf(正無窮大)、NaN(表示0/0或inf-inf等不定值)、i,j(虛數單位) 2語句 MATLAB語句的一般形式為:變量=表達式.當某一語句的輸入完成后,按回車鍵,計算機就執行該命令.如果該語句末沒輸入其它符號或輸入了逗號,將顯示結果;如果句末輸入了分號,將不顯示結果.如果語句中省略了變量和等號,那么計算機將結果賦值給變量ans. 3矩陣 把m
42、×n個數排成m行n列的數表,此數表被稱為m行n列的矩陣,記為 ÷÷÷ ø ö çççèæ=´mnmnnmaaaaALMMML1111 MATLAB中矩陣的輸入方法如下:A=a11,a1n;am1,amn.逗號是數之間的分隔符(也可用空格代替);分號是換行符. 3.1.3 繪制三維圖形 1 空間曲線的繪制 繪制空間曲線的基本命令為: plot3(x,y,z);plot3(x,y,z,'s')或plot3(x1,y1,z1,'s1',x2,y2,z
43、2,'s2',) 其中x,y,z是同維的向量或矩陣.當它們是矩陣時,以它們的列對應元素為空間曲線上點的坐標.s是線形、顏色開關,這一點與二維曲線時的情形相同. 2 曲面的繪制 繪制空間曲面的基本命令為mesh(x,y,z). 如果x、y是向量,則要求x的長度=矩陣z的列維;y的長度=矩陣z的行維.以zij為豎坐標,x的第i個分量為橫坐標,y的第j個分量為縱坐標繪網格圖3 多幅圖形的創建 有時同一曲面或曲線需要從不同的角度去觀察,或用不同的表現方式去表現,這時,為了便于比較,往往在一個窗口內畫多幅圖形.MATLAB用subplot命令實現這一目的.具體格式為: subplot(m
44、,n,p) 使用此命令后,把窗口分為m×n個圖形區域,p表示當前區域號. 例如把sinx,cosx,atanx,sinxcosy畫在一個窗口內,可鍵入: x=0:pi/6:2*pi;y=x; z1=sin(x);z2=cos(x);z3=atan(x); subplot(2,2,1); plot(x,z1,'r',x,z2,'g') subplot(2,2,2);plot(x,z3,'m') subplot(2,2,3);x,y=meshgrid(x,y);z4=sin(x).*cos(y); mesh(x,y,z4);subplot(
45、2,2,4);surfc(x,y,z4) 3.3 核心算法設計這個算法核心就是傅里葉變換,傅里葉變換本來是數學專業的內容,但是在MATLAB中運用的非常廣泛,本文根據福利葉變換創建了信號頻譜的概念。傅里葉分析就是將信號的頻率構成、頻率寬度等特征進行分析。音樂的基波頻率和諧波構成是合成一段音樂的基本。所以,傅里葉變換是在處理時必須要使用到的基本工具。當時間信號是連續時,根據傅里葉變換有如下公式:。因為等式兩邊都是連續性函數,并不能用作計算機來進行計算。需要MATLAB提供的符號函數fourier來進行計算。但是有一個前提要求,就是需要信號解析的表達式。但是在工程實際應用中,并不能得到信號是解析表
46、達式,在這種情況下,就需要傅里葉變換的數值計算的方法。如果f(t)的主要取值區間為t1,t2,那么將T=t2-t1定義為區間長度。在該區間內抽樣N個點,抽樣間隔為t=T/N,那么 通過上述公式那么可以計算出任意頻點的傅里葉變換值。假設F()的主要取值區間是 1,2 ,要計算其間均勻抽樣的k個值,故在上面的式子中有如下表達式其表達的意思為頻域抽樣間隔。3.4 算法實現3.4.1 調用相關的MATLAB函數相關的幾個聲音信號分析與處理的MATLAB函數及其功能,見下表表3.1 函數功能表函數功能wavread讀.wav文件sound將向量轉換成聲音kron矩陣的張量積(叉乘)resample改變信
47、號的采樣率interp上采樣(提高采樣率)decimate下采樣(降低采樣率)3.4.2 音樂初步處理要注意音樂時間的分割。在進行音樂信號處理時,需要考慮樣品數據是否是該軟件接受范圍內的點。假設以8000Hz為取樣樣品,意味著在一秒內就有8000個取樣數據點。需要再進行相當長時間的數學計算。由于時間較長,可能會出現死機的情況。所以,需要對音樂進行分割成若干個小段落后在進行分析計算。并且分割的段落越多,其計算分析的速度越快,效率越高。科學時間段落為0.5秒一個段落。在進行音樂分析工作時,分析的重點應該落在每一小段的最高幅度周圍,其他處當做幅度衰減其頻率不變,可以不用重復分析。能夠減少工作時間。減
48、少無用功。但是為了避免出現漏掉基波頻率,就需要嚴格參考時域波形,確定每個音的起止時間和持續時間。承接上文提及到的音樂的起始時間和持續時間,這二者是合成音樂中的重要環節。音調的持續時間就是音樂的節拍,俗稱的拍子。一個節拍大約有零點五秒。需要準確把我每個音的起始時間和持續時間,這樣才不會在合成音樂時完成失真的現象,才能真正把握住各個基波頻率的順序和節拍。音樂中一個重要的因素就是音樂的波形包絡。為了減小合成過程中造成的誤差,可以通過音樂時域波形判斷音樂在下一個音樂開始時是否會衰減為零。音樂的包絡有兩種形式,一是折線型,二是指數衰減。其重要步驟是如何采取衰減指數。若是采取折線方式,其操作會更繁瑣一點,
49、但是可以通過時域波形來判斷折線斜率。如果采取指數衰減的形式,就要簡單一些,只需要確定衰減系數。本文采用的方式是指數衰減方法,根據工程上電容充放電理論來確定衰減系數,當t大于等于3S以后,可認為電路已趨穩定,其中,S為RC電路的時間常數,S=RC。假設某一個音樂的持續時間為T,并且在持續時間內衰減為零。當包絡采用指數eat時,則衰減因子a=3/T。計算器的計算的容量是有限的,為了提高計算的速度,也應該考慮合成時的頻率分量,并不能將所有的分量都參與到合成中。只需要選擇其中音頻超過0.35倍最大幅度的頻率分量,這樣才能保障計算機穩定高效地工作。同時我們也發現,合成音樂并不是真正的音樂,由于舍棄了一些
50、音樂頻譜中的頻率分量,導致合成音樂的頻率分量比真是音樂中的分量要少,并且采用了指數衰減包絡的形式對音樂進行了波形形狀的篩選。并沒有完全具備真實音樂的波形形狀。從而簡化了程序的編制。3.4.3 音樂合成合成的部分代碼如下:function k= play()rhythm = 5 5 6 2 1 1 6 2;0 0 0 0 0 0 -1 0 ; 0.5 0.25 0.25 1 0.5 0.25 0.25 1;y=generaterhythm(rhythm, 8);sound(y);end用MATALB語言編程實現音樂的分析與合成實驗流程如圖3.1所示。圖3.1 音樂合成流程圖16第4章 基于MAT
51、LAB的簡單音樂合成仿真這章主要是根據之前的程序進行進一步的仿真驗證。充分利用了MATLAB良好的信號處理能力。主要的設計圖如下圖。基于MATLAB 軟件的音樂合成系統簡單合成及處理音樂的模塊音樂的傅里葉頻域分析模塊傅里葉級數合成音樂模塊音樂的字幕動態顯示模塊圖4.1 設計框架4.1 合成音樂4.1.1 初始音樂合成4.1.2 消除噪音在前面的音樂中會聽到雜音,使“啪”音效出的最簡便的方法是,可以通過包絡來消除噪音,為每個音都加上外形相似的包絡,讓其連接響度為零即可。主要是兩個判斷語句:if p/l<0.7y=p/l*exp(-7*p/l);elsey=0.7/0.3*exp(-4.9)
52、*(1-p/l);endend程序運行后,可明顯發現沒有“啪”音的出現,但由于不管音的長短,最終都要衰減到零,這使音樂的真實感大大降低。加過包絡后的波形圖如圖4.1所示。圖4.1 加過包絡后的波形圖在兩個不同音的交界處放大圖如4.2所示,由圖可見,在交響處的響度為0,因此,不會出現大的高頻分量圖4.2 交界處放大圖在試驗程序中發現,當交界處的響度非常小而非零時,“啪”音也不會出現,例如當交界處響度為最大的10%時,“啪”也會消除,波形如圖4.3所示。圖4.3 響度為10%的波形圖4.1.3 重新生成音樂由樂理知識可以知道,八度的頻率差是兩倍,將原頻率升高或者降低成原來的兩倍或者二分之一,就能夠
53、實現將原音樂升高一個八度或者降低一個八度。并且僅需要在頻率標記上乘以二或者除以二就可以了。若要低一個八度,利用resample 函數將上述音樂升高半個音階即可。若要上升半個音階,將其頻率上升為原來的21/12(1.06)倍就可以實現,只需要利用resample函數改變原數據采樣率即可,即y=resample(y,100,106);在上面結果的基礎上加入適量諧波,重新生成音樂,代碼如下:function y = generatetune (freq, time, fs)c=1 0.2 0.3;t = 0:1/fs:(time - 1/fs);y = zeros(1, length(t);for
54、count = 1:3;y=y+c(count)*sin(t*freq*count*2*pi);endfor count1 = 1 : length(y)y(1, count1) = 20*y(1, count1) * amendment(count1, length(y);end僅修改generaterune函數即可。4.2 原始聲測試和傅里葉分析4.2.1 原始聲測試測試原始聲音的命令為:d=wavread('fmt.wav');sound(d)聽到聲音真實。載入文件Guitar.mat,并繪制realwave和wave2proc的圖像,我們得到圖4.4和圖4.5兩張圖。圖
55、4.4 realwave原始聲音波形圖圖4.5 wave2proc原始聲音波形圖根據如下程序,我們可以近似求出一個周期的長度約為25個點。a=zeros(1,length(realwave)-24);for count=1:length(realwave)-24a(count)=sum(realwave(1:25).*realwave(count:count+24);endagain=resample(realwave,250,243);sample=zeros(1,25);for count=1:25for count2=0:9sample(count)=sample(count)+agai
56、n(25*count2+count);endendsample=sample/10;again=repmat(sample,1,10);again=resample(again,243,250);hold on,plot(again,'r'),hold off;hold on,plot(wave2proc);經過處理后,能得到圖4.6和圖4.7。圖4.6 處理后的realwave波形圖圖4.7處理后的wave2proc波形圖對比兩組圖片,在圖片樣式上并沒有發生很明顯的波形差異,由此可以得出結論:兩個經過處理的波形圖可以很好的重合。4.2.2 傅里葉分析離散傅氏變換的快速算法,即離散的快速傅氏變換,設N項的復數序列為x(n),由離散傅式變換知,X(m)的計算需要經過N次復數乘法和N-1次的復數加法,而一次復數乘法相當于四次實數乘法加上兩次實數加法,一次復數加法相當于兩次實數加法。把一次復數乘法和一次復數加法定義成一次“運算”,想要求出N項復數序列的X(m),就需要將近N2次運算。當N=1024點甚至更多的時候,需要N2=1048576次運算,在FFT中,利用WN的周期性
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 繼電保護防跳原理
- 山東省2025年中考二輪復習專題專制主義中央集權的演進課件
- Unit3KeepFitSectionB2a2c課件人教版英語七年級下冊
- Unit5WhatdoeshedoBLet'slearnReadandwrite(課件)-人教PEP版級上冊
- 2025至2030年中國金絲棗泥行業投資前景及策略咨詢報告
- 鄭州市第一人民醫院招聘筆試真題2024
- 制作卷發造型的步驟
- 實施心理護理的技巧
- 施工現場的綠色安全管理
- 二年級數學計算題專項練習
- (二模)烏魯木齊地區2025年高三第二次質量檢測英語試卷(含答案)
- DBJ-T13-483-2025 預拌流態固化土技術標準
- 2025年全國中學生漢字聽寫大會比賽題庫及解析(共八套)
- 洗煤廠安全管理制度
- 國家開放大學《四史通講》形考作業1-7答案
- 琉璃瓦維修專項施工方案
- 計量管理知到智慧樹章節測試課后答案2024年秋中國計量大學
- 河口區域生態規劃-深度研究
- 臨床試驗管理委員會的職責與流程
- 《西安交通大學》課件
- 信息化和工業化融合管理體系 柔性生產指南 征求意見稿
評論
0/150
提交評論