語(yǔ)音信號(hào)處理是數(shù)字信號(hào)處理的一個(gè)重要分支。本書含有許多數(shù)字信號(hào)處理的方法和 MATLAB函數(shù)。 全書共10章。第1~4章介紹語(yǔ)音信號(hào)處理的一些基本分析方法和手段,以及相應(yīng)的MATLAB函數(shù);第5~ 9章介紹語(yǔ)音信號(hào)預(yù)處理和特征的提取,包括消除趨勢(shì)項(xiàng)和基本的減噪方法,以及端點(diǎn)檢測(cè)、基音的提取和共 振峰的提取,并利用語(yǔ)音信號(hào)處理的基本方法,給出了多種提取方法和相應(yīng)的 MATLAB程序;第10章結(jié)合 各種參數(shù)的檢測(cè)介紹了語(yǔ)音信號(hào)的合成、語(yǔ)音信號(hào)的變速和變調(diào)處理,還介紹了時(shí)域基音同步疊加( TD PSOLA)的語(yǔ)音合成,并給出了相應(yīng)的MATLAB程序。附錄A中給出了調(diào)試復(fù)雜程序的方法和思路。
本書可作為從事語(yǔ)音信號(hào)處理的本科高年級(jí)學(xué)生、研究生或科研工程技術(shù)人員的輔助讀物,也可作為從 事信號(hào)處理研究與應(yīng)用的科研工程技術(shù)人員的參考用書。
前 言
我與計(jì)算機(jī)打交道已有40多年。在20世紀(jì)70年代初開始接觸計(jì)算機(jī),最早使用的是晶體管的108乙機(jī),用5孔電報(bào)紙帶上機(jī),用機(jī)器語(yǔ)言編程,調(diào)試一個(gè)小程序可能需要數(shù)周甚至數(shù)月。隨著技術(shù)的發(fā)展,我曾使用過(guò)Nova1200、z80、Intel8086 / 80286 / 80386等,而編程使用的計(jì)算機(jī)語(yǔ)言也從匯編到BASIC、FORTRAN 等。數(shù)字信號(hào)處理最基礎(chǔ)的是快速傅里葉變換和數(shù)字濾波器,但在不同的機(jī)種用不同的編程語(yǔ)言都需要編制相應(yīng)的基礎(chǔ)性處理程序,這些都極其耗費(fèi)時(shí)間和精力。
21世紀(jì)初我偶然接觸到MATLAB語(yǔ)言,立刻被它的功能所吸引。MATLAB除了編程簡(jiǎn)單外,還有強(qiáng)大的工具箱(全世界的精英都為工具箱做貢獻(xiàn))。一些基礎(chǔ)性的處理程序都已包含在工具箱中,不需要用戶去從事這方面的開發(fā)工作,這樣節(jié)省了大量的重復(fù)性的工作。對(duì)于用戶來(lái)說(shuō),只須考慮怎樣利用工具箱來(lái)實(shí)現(xiàn)自己的想法和算法。MATLAB的程序大部分不需要編譯、鏈接等一套煩瑣的過(guò)程,輸入程序后就能運(yùn)行。MATLAB是一種方便、實(shí)用、高效的計(jì)算機(jī)語(yǔ)言。
互聯(lián)網(wǎng)的發(fā)展形成了很多以MATLAB為基礎(chǔ)的科技討論社區(qū)。在這些論壇社區(qū)里集中了來(lái)自社會(huì)各界和高校各學(xué)科各專業(yè)的MATLAB使用者、愛好者。我從2002年開始在國(guó)內(nèi)一些成立較早的論壇社區(qū)如研學(xué)論壇和振動(dòng)論壇等的信號(hào)處理版塊中參與各類問(wèn)題的解答。MATLAB中文論壇成立后,同樣在信號(hào)處理版塊經(jīng)常與各種程度的MATLAB使用者打交道,解答使用者通常會(huì)遇到的一些問(wèn)題。我發(fā)現(xiàn)在對(duì)語(yǔ)音信號(hào)進(jìn)行處理的過(guò)程中,有好多用戶對(duì)于怎么把MATLAB應(yīng)用于語(yǔ)音處理不甚熟悉,這些因素促使我萌生了編寫本書的想法。
運(yùn)用MATLAB處理語(yǔ)音信號(hào)至少需要掌握三方面的知識(shí):語(yǔ)音信號(hào)處理的基礎(chǔ)理論、數(shù)字信號(hào)處理的基礎(chǔ)理論和MATLAB的編程技術(shù)。本書的目的是幫助本科高年級(jí)學(xué)生和碩士研究生盡快掌握怎么把MATALB應(yīng)用于語(yǔ)音信號(hào)的分析和合成中去,因此書中介紹了語(yǔ)音信號(hào)處理的基礎(chǔ)知識(shí),介紹了語(yǔ)音分析和合成的基本方法,以及相應(yīng)的MATLAB函數(shù)和程序,讀者以這些方法、函數(shù)和程序?yàn)榛A(chǔ),進(jìn)一步去解決自己的問(wèn)題,可少走一些彎路。書中介紹的各種方法都還有繼續(xù)改善和拓展的空間,使它們更加完善,取得更好的效果。本書也適合于從事數(shù)字信號(hào)處理的廣大高校師生和科研工作人員作為參考用書。但閱讀本書的讀者應(yīng)掌握數(shù)字信號(hào)處理的基本知識(shí),以及MATLAB編程的基本技能。
本書介紹語(yǔ)音信號(hào)分析和合成處理的基礎(chǔ)、原理、方法和應(yīng)用。全書共10章,具體內(nèi)容如下:
第1章介紹語(yǔ)音信號(hào)處理的基礎(chǔ)知識(shí),如發(fā)音器官與聽覺(jué)器官、語(yǔ)音信號(hào)的數(shù)學(xué)模型和語(yǔ)音信號(hào)感知特性等。
第2章和第3章介紹語(yǔ)音信號(hào)特征分析的基本處理技術(shù),包括時(shí)域分析、頻域分析、同態(tài)分析、DCT和MFCC分析、小波和小波包變換的分析以及EMD分析等方法。
第4章介紹線性預(yù)測(cè)分析方法。介紹了線性預(yù)測(cè)的模型、方程的建立、線性預(yù)測(cè)的自相關(guān)和自協(xié)方差解、線性預(yù)測(cè)的格型法解、由線性預(yù)測(cè)導(dǎo)出的其他參數(shù)和線譜對(duì)分析法等。
第5章介紹了帶噪語(yǔ)音信號(hào)及預(yù)處理。介紹了信噪比的概念和帶噪語(yǔ)音信號(hào)的產(chǎn)生,以及最小二乘法消除趨勢(shì)項(xiàng)和數(shù)字濾波等。
第6章介紹語(yǔ)音端點(diǎn)的檢測(cè)方法。首先從能量和過(guò)零率導(dǎo)出通用的雙門限單參數(shù)和雙參數(shù)的端點(diǎn)檢測(cè),接著介紹相關(guān)法、方差法、譜距離法、譜熵法、能零比和能熵比法、小波變換和EMD分解法等的端點(diǎn)檢測(cè),最后給出在低信噪比下端點(diǎn)檢測(cè)的方法。
第7章介紹語(yǔ)音信號(hào)的減噪。介紹了利用自適應(yīng)濾波器減噪、基本譜減法和改進(jìn)譜減法的減噪,以及維納濾波減噪等方法。
第8章介紹語(yǔ)音信號(hào)的基音檢測(cè)技術(shù)。首先介紹了在基音檢測(cè)中的端點(diǎn)檢測(cè)和預(yù)濾波,接著分別介紹了倒譜法、自相關(guān)法、平均幅度差函數(shù)法和線性預(yù)測(cè)等方法的基音檢測(cè)。這些方法中雖在基音檢測(cè)后都進(jìn)行了平滑處理,但在基音周期中都會(huì)有野點(diǎn)發(fā)生。這里提出了主體延伸的基音檢測(cè)方法,并詳細(xì)說(shuō)明了該方法的原理和處理步驟,改善了基音檢測(cè)的結(jié)果。本章的最后介紹了帶噪語(yǔ)音的基音檢測(cè)技術(shù)。
第9章介紹語(yǔ)音的共振峰檢測(cè)。首先介紹了在共振峰檢測(cè)中的預(yù)加重和端點(diǎn)檢測(cè),接著介紹了倒譜法和線性預(yù)測(cè)法的共振峰檢測(cè),并在線性預(yù)測(cè)的基礎(chǔ)上進(jìn)一步介紹了簡(jiǎn)單LPC和改進(jìn)的LPC對(duì)連續(xù)語(yǔ)音的共振峰檢測(cè)。本章最后介紹了HHT法的共振峰檢測(cè)。
第10章介紹語(yǔ)音信號(hào)的合成算法。首先介紹了數(shù)據(jù)接疊的三種方法,在此基礎(chǔ)上介紹了頻譜參數(shù)的語(yǔ)音合成、線性預(yù)測(cè)系數(shù)和預(yù)測(cè)誤差的語(yǔ)音合成、線性預(yù)測(cè)系數(shù)和基音參數(shù)的語(yǔ)音合成、基音和共振峰的語(yǔ)音合成。通過(guò)合成技術(shù)又介紹了語(yǔ)音信號(hào)的變速和變調(diào)算法,最后介紹了波形拼接合成技術(shù)以及時(shí)域基音同步疊加(TD PSOLA)的合成方法。
在附錄A 中以主體延伸基音檢測(cè)法為例,說(shuō)明了程序的調(diào)試和修改方法,以幫助讀者調(diào)試和修改程序使之成為適合自己的應(yīng)用函數(shù)和程序。
本書中除第1章外的各章均附有函數(shù)和程序。書中經(jīng)常會(huì)調(diào)用的一些函數(shù)(自編函數(shù)或取自其他應(yīng)用工具箱中的函數(shù)),已集中在basic_tbx工具箱中,在運(yùn)行本書的程序前請(qǐng)把該工具箱設(shè)置(用set path設(shè)置)在工作路徑下。當(dāng)要運(yùn)行EMD處理時(shí),要把emd工具箱設(shè)置在工作路徑下;當(dāng)要運(yùn)行主體延伸基音檢測(cè)時(shí),要把Pitch_ztlib工具箱設(shè)置在工作路徑下;當(dāng)要進(jìn)行時(shí)域基音同步疊加語(yǔ)音合成時(shí),要把psola_lib工具箱設(shè)置在工作路徑下;當(dāng)要應(yīng)用本書提供的語(yǔ)音數(shù)據(jù)時(shí),最好把speech_signal設(shè)置在工作路徑下。本書的所有函數(shù)和程序都在MATLAB R2009a版本下調(diào)試通過(guò)。
本書的讀者作者在線交流平臺(tái)為http://www.ilovematlab.cn/forum
173 1.html。本書作者將通過(guò)該平臺(tái)與廣大讀者交流,解決大家在閱讀本書過(guò)程中遇到的問(wèn)題,分享彼此的學(xué)習(xí)經(jīng)驗(yàn),從而達(dá)到共同進(jìn)步的目的。
在編寫本書的過(guò)程中,作者得到了MATLAB中文論壇創(chuàng)始人張延亮(math)博士的指導(dǎo)和幫助,也得到了北京航空航天大學(xué)出版社陳守平編輯的支持與鼓勵(lì),中國(guó)語(yǔ)音學(xué)會(huì)會(huì)長(zhǎng)、中國(guó)社會(huì)科學(xué)院人類學(xué)與民族學(xué)研究所鮑懷翹教授對(duì)本書的編寫提出了不少寶貴意見,在此向他們表示衷心的感謝。
由于編寫時(shí)間倉(cāng)促,加之作者學(xué)識(shí)所限,書中如有錯(cuò)誤和疏漏之處,懇請(qǐng)廣大讀者和各位專家批評(píng)指正。
宋知用 曾在中國(guó)科學(xué)院聲學(xué)研究所工作20多年,長(zhǎng)期從事電聲信號(hào)和數(shù)字信號(hào)處理工作。具有十余年的MATLAB編程經(jīng)驗(yàn),出版的圖書有《MATLAB數(shù)字信號(hào)處理85個(gè)實(shí)用案例精講入門到進(jìn)階》和《MATLAB在語(yǔ)音信號(hào)分析和合成中的應(yīng)用》。過(guò)去十余年中,宋知用一直活躍在MATLAB中文論壇及其他科技平臺(tái)中,至今已回答并解決各種數(shù)字信號(hào)處理問(wèn)題逾4500個(gè)。