孤立詞語音識別的并行編程實現(xiàn) 畢業(yè)設(shè)計_第1頁
孤立詞語音識別的并行編程實現(xiàn) 畢業(yè)設(shè)計_第2頁
孤立詞語音識別的并行編程實現(xiàn) 畢業(yè)設(shè)計_第3頁
孤立詞語音識別的并行編程實現(xiàn) 畢業(yè)設(shè)計_第4頁
孤立詞語音識別的并行編程實現(xiàn) 畢業(yè)設(shè)計_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、本科畢業(yè)論文(設(shè)計)題 目: 孤立詞語音識別的并行編程實現(xiàn) 2010年 6 月 5 日Parallel Programming of Isolated Words Speech Recognition摘 要語音識別是解決機器“聽懂”人類語言的一項技術(shù)。首先介紹了目前國內(nèi)外語音識別系統(tǒng)的現(xiàn)狀、發(fā)展及研究方向,并對語音識別系統(tǒng)的原理、并行化的實現(xiàn)做了詳細分析,在此基礎(chǔ)上進行語音識別系統(tǒng)的設(shè)計,主要內(nèi)容有:提取語音、端點檢測、特征值提取、訓(xùn)練數(shù)據(jù)、語音識別。選用HMM隱馬爾科夫模型,基于VC2005編譯環(huán)境下的的多線程編程,實現(xiàn)算法的并行運算,提升了語音識別的效率。設(shè)計完成后在實驗室進行了模擬調(diào)試,

2、實驗結(jié)果表明:所設(shè)計的程序滿足語音識別系統(tǒng)的基本要求。關(guān)鍵詞 語音識別 孤立詞 多線程 并行 特征值 斷點檢測AbstractSpeech recognition is a technique to solve the machine "understand" human language. First introduces the current status of speech recognition system at home and abroad, development and research, and the principle of speech reco

3、gnition systems, parallel implementation of a detailed explanation to do in this speech recognition system based on the design of main contents are: Extract voice, endpoint detection, feature extraction, training data, voice recognition. HMM hidden Markov model selection, based on VC2005 compiler en

4、vironment of multi-threaded programming, parallel computing algorithms to improve the efficiency of speech recognition. Upon completion of the design was simulated in the lab debugging, experimental results show that: the design process to meet the basic requirements of speech recognition systems. K

5、eywords Speech Recognition Isolated Words Multi-Threads Parallel Eigenvalue Breakpoint Detection目 錄前 言1第1章 語音識別技術(shù)概述21.1 語音識別的歷史背景21.1.1 國外研究歷史及現(xiàn)狀31.1.2 國內(nèi)研究歷史及現(xiàn)狀41.2 語音識別技術(shù)應(yīng)用51.3 語音識別技術(shù)的發(fā)展61.4 語音識別技術(shù)的研究方向7第二章 主要研究內(nèi)容和方法92.1 語音識別的研究內(nèi)容92.2 語音識別系統(tǒng)的分類92.3 語音識別的研究方法102.4 并行計算技術(shù)112.5 OpenMP編程模型132.5.1 Open

6、MP介紹132.5.2 OpenMP指導(dǎo)命令流程15第三章 基于VC2005孤立詞語音識別編程的實現(xiàn)183.1 語音識別系統(tǒng)原理及設(shè)計方法183.1.1 語音識別系統(tǒng)的基本原理183.1.2 語音識別的幾種基本設(shè)計方法193.2 孤立詞語音識別系統(tǒng)203.2.1 孤立詞語音識別系統(tǒng)的構(gòu)成203.2.2 孤立詞語音識別系統(tǒng)的技術(shù)主要項目213.2.3 基于語音軌跡特征的匹配技術(shù)223.3 語音識別設(shè)計流程223.3.1 樣本語音采集223.3.2 語音信號預(yù)處理223.3.3 Mel倒譜系數(shù)特征表示233.3.4 HMM隱馬爾科夫模式匹配253.3.7 OpenMP編程實現(xiàn)多核并行運算26結(jié)束語

7、31謝 辭32參考文獻33附 錄34前 言語音識別是解決機器“聽懂”人類語言的一項技術(shù)。作為智能計算機研究的主導(dǎo)方向和人機語音通信的關(guān)鍵技術(shù),語音識別技術(shù)一直受到各國科學(xué)界的廣泛關(guān)注。如今,隨著語音識別技術(shù)研究的突破,其對計算機發(fā)展和社會生活的重要性日益凸現(xiàn)出來。以語音識別技術(shù)開發(fā)出的產(chǎn)品應(yīng)用領(lǐng)域非常廣泛,如聲控電話交換、信息網(wǎng)絡(luò)查詢、家庭服務(wù)、賓館服務(wù)、醫(yī)療服務(wù)、銀行服務(wù)、工業(yè)控制、語音通信系統(tǒng)等,幾乎深入到社會的每個行業(yè)和每個方面。廣泛意義上的語音識別按照任務(wù)的不同可以分為4個方向:說話人識別、關(guān)鍵詞檢出、語言辨識和語音識別。說話人識別技術(shù)是以話音對說話人進行區(qū)別,從而進行身份鑒別和認證的

8、技術(shù)。關(guān)鍵詞檢出技術(shù)應(yīng)用于一些具有特定要求的場合,只關(guān)注那些包含特定詞的句子。語言辨識技術(shù)是通過分析處理一個語音片斷以判別其所屬語言種類的技術(shù),本質(zhì)上也是語音識別技術(shù)的一個方面。語音識別就是通常人們所說的以說話的內(nèi)容作為識別對象的技術(shù),它是4個方面中最重要和研究最廣泛的一個方向,也是本文討論的主要內(nèi)容。語音識別技術(shù),也被稱為自動語音識別Automatic Speech Recognition,(ASR),其目標是將人類的語音中的詞匯內(nèi)容轉(zhuǎn)換為計算機可讀的輸入,例如按鍵、二進制編碼或者字符序列。與說話人識別及說話人確認不同,后者嘗試識別或確認發(fā)出語音的說話人而非其中所包含的詞匯內(nèi)容。語音識別技術(shù)

9、的應(yīng)用包括語音撥號、語音導(dǎo)航、室內(nèi)設(shè)備控制、語音文檔檢索、簡單的聽寫數(shù)據(jù)錄入等。語音識別技術(shù)與其他自然語言處理技術(shù)如機器翻譯及語音合成技術(shù)相結(jié)合,可以構(gòu)建出更加復(fù)雜的應(yīng)用,例如語音到語音的翻譯。語音識別技術(shù)所涉及的領(lǐng)域包括:信號處理、模式識別、概率論和信息論、發(fā)聲機理和聽覺機理、人工智能等等。第1章 語音識別技術(shù)概述語音識別是解決機器“聽懂”人類語言的一項技術(shù)。作為智能計算機研究的主導(dǎo)方向和人機語音通信的關(guān)鍵技術(shù),語音識別技術(shù)一直受到各國科學(xué)界的廣泛關(guān)注。如今,隨著語音識別技術(shù)研究的突破,其對計算機發(fā)展和社會生活的重要性日益凸現(xiàn)出來。以語音識別技術(shù)開發(fā)出的產(chǎn)品應(yīng)用領(lǐng)域非常廣泛,如聲控電話交換、

10、信息網(wǎng)絡(luò)查詢、家庭服務(wù)、賓館服務(wù)、醫(yī)療服務(wù)、銀行服務(wù)、工業(yè)控制、語音通信系統(tǒng)等,幾乎深入到社會的每個行業(yè)和每個方面。廣泛意義上的語音識別按照任務(wù)的不同可以分為4個方向:說話人識別、關(guān)鍵詞檢出、語言辨識和語音識別。說話人識別技術(shù)是以話音對說話人進行區(qū)別,從而進行身份鑒別和認證的技術(shù)。關(guān)鍵詞檢出技術(shù)應(yīng)用于一些具有特定要求的場合,只關(guān)注那些包含特定詞的句子。語言辨識技術(shù)是通過分析處理一個語音片斷以判別其所屬語言種類的技術(shù),本質(zhì)上也是語音識別技術(shù)的一個方面。語音識別就是通常人們所說的以說話的內(nèi)容作為識別對象的技術(shù),它是4個方面中最重要和研究最廣泛的一個方向,也是本文討論的主要內(nèi)容。語音識別技術(shù),也被稱

11、為自動語音識別Automatic Speech Recognition,(ASR),其目標是將人類的語音中的詞匯內(nèi)容轉(zhuǎn)換為計算機可讀的輸入,例如按鍵、二進制編碼或者字符序列。與說話人識別及說話人確認不同,后者嘗試識別或確認發(fā)出語音的說話人而非其中所包含的詞匯內(nèi)容。語音識別技術(shù)的應(yīng)用包括語音撥號、語音導(dǎo)航、室內(nèi)設(shè)備控制、語音文檔檢索、簡單的聽寫數(shù)據(jù)錄入等。語音識別技術(shù)與其他自然語言處理技術(shù)如機器翻譯及語音合成技術(shù)相結(jié)合,可以構(gòu)建出更加復(fù)雜的應(yīng)用,例如語音到語音的翻譯。語音識別技術(shù)所涉及的領(lǐng)域包括:信號處理、模式識別、概率論和信息論、發(fā)聲機理和聽覺機理、人工智能等等。1.1 語音識別的歷史背景早在

12、計算機發(fā)明之前,自動語音識別的設(shè)想就已經(jīng)被提上了議事日程,早期的聲碼器可被視作語音識別及合成的雛形。而1920年代生產(chǎn)的"Radio Rex"玩具狗可能是最早的語音識別器,當這只狗的名字被呼喚的時候,它能夠從底座上彈出來。最早的基于電子計算機的語音識別系統(tǒng)是由AT&T貝爾實驗室開發(fā)的Audrey語音識別系統(tǒng),它能夠識別10個英文數(shù)字。其識別方法是跟蹤語音中的共振峰。該系統(tǒng)得到了98%的正確率。到1950年代末,倫敦學(xué)院(Colledge of London)的Denes已經(jīng)將語法概率加入語音識別中。1960年代,人工神經(jīng)網(wǎng)絡(luò)被引入了語音識別。這一時代的兩大突破是線性

13、預(yù)測編碼Linear Predictive Coding (LPC), 及動態(tài)時間彎折Dynamic Time Warp技術(shù)。語音識別技術(shù)的最重大突破是隱含馬爾科夫模型Hidden Markov Model的應(yīng)用。從Baum提出相關(guān)數(shù)學(xué)推理,經(jīng)過Labiner等人的研究,卡內(nèi)基梅隆大學(xué)的李開復(fù)最終實現(xiàn)了第一個基于隱馬爾科夫模型的大詞匯量語音識別系統(tǒng)Sphinx。此后嚴格來說語音識別技術(shù)并沒有脫離HMM框架。盡管多年來研究人員一直嘗試將“聽寫機”推廣,語音識別技術(shù)在目前還無法支持無限領(lǐng)域,無限說話人的聽寫機應(yīng)用。 國外研究歷史及現(xiàn)狀語音識別的研究工作可以追溯到20世紀50年代AT&T貝爾

14、實驗室的Audry系統(tǒng),它是第一個可以識別十個英文數(shù)字的語音識別系統(tǒng)。 但真正取得實質(zhì)性進展,并將其作為一個重要的課題開展研究則是在60年代末70年代初。這首先是因為計算機技術(shù)的發(fā)展為語音識別的實現(xiàn)提供了硬件和軟件的可能,更重要的是語音信號線性預(yù)測編碼(LPC)技術(shù)和動態(tài)時間規(guī)整(DTW)技術(shù)的提出,有效的解決了語音信號的特征提取和不等長匹配問題。這一時期的語音識別主要基于模板匹配原理,研究的領(lǐng)域局限在特定人,小詞匯表的孤立詞識別,實現(xiàn)了基于線性預(yù)測倒譜和DTW技術(shù)的特定人孤立詞語音識別系統(tǒng);同時提出了矢量量化(VQ)和隱馬爾可夫模型(HMM)理論。 隨著應(yīng)用領(lǐng)域的擴大,小詞匯表、特定人、孤立

15、詞等這些對語音識別的約束條件需要放寬,與此同時也帶來了許多新的問題:第一,詞匯表的擴大使得模板的選取和建立發(fā)生困難;第二,連續(xù)語音中,各個音素、音節(jié)以及詞之間沒有明顯的邊界,各個發(fā)音單位存在受上下文強烈影響的協(xié)同發(fā)音(Co-articulation)現(xiàn)象;第三,非特定人識別時,不同的人說相同的話相應(yīng)的聲學(xué)特征有很大的差異,即使相同的人在不同的時間、生理、心理狀態(tài)下,說同樣內(nèi)容的話也會有很大的差異;第四,識別的語音中有背景噪聲或其他干擾。因此原有的模板匹配方法已不再適用。 實驗室語音識別研究的巨大突破產(chǎn)生于20世紀80年代末:人們終于在實驗室突破了大詞匯量、連續(xù)語音和非特定人這三大障礙,第一次把

16、這三個特性都集成在一個系統(tǒng)中,比較典型的是卡耐基梅隆大學(xué)(CarnegieMellonUniversity)的Sphinx系統(tǒng),它是第一個高性能的非特定人、大詞匯量連續(xù)語音識別系統(tǒng)。 這一時期,語音識別研究進一步走向深入,其顯著特征是HMM模型和人工神經(jīng)元網(wǎng)絡(luò)(ANN)在語音識別中的成功應(yīng)用。HMM模型的廣泛應(yīng)用應(yīng)歸功于AT&TBell實驗室Rabiner等科學(xué)家的努力,他們把原本艱澀的HMM純數(shù)學(xué)模型工程化,從而為更多研究者了解和認識,從而使統(tǒng)計方法成為了語音識別技術(shù)的主流。 統(tǒng)計方法將研究者的視線從微觀轉(zhuǎn)向宏觀,不再刻意追求語音特征的細化,而是更多地從整體平均(統(tǒng)計)的角度來建立最

17、佳的語音識別系統(tǒng)。在聲學(xué)模型方面,以Markov鏈為基礎(chǔ)的語音序列建模方法HMM(隱式Markov鏈)比較有效地解決了語音信號短時穩(wěn)定、長時時變的特性,并且能根據(jù)一些基本建模單元構(gòu)造成連續(xù)語音的句子模型,達到了比較高的建模精度和建模靈活性。在語言層面上,通過統(tǒng)計真實大規(guī)模語料的詞之間同現(xiàn)概率即N元統(tǒng)計模型來區(qū)分識別帶來的模糊音和同音詞。另外,人工神經(jīng)網(wǎng)絡(luò)方法、基于文法規(guī)則的語言處理機制等也在語音識別中得到了應(yīng)用。 20世紀90年代前期,許多著名的大公司如IBM、蘋果、ATT和NTT都對語音識別系統(tǒng)的實用化研究投以巨資。語音識別技術(shù)有一個很好的評估機制,那就是識別的準確率,而這項指標在20世紀9

18、0年代中后期實驗室研究中得到了不斷的提高。比較有代表性的系統(tǒng)有:IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeaking,Nuance公司的NuanceVoicePlatform語音平臺,Microsoft的Whisper,Sun的VoiceTone等。 其中IBM公司于1997年開發(fā)出漢語ViaVoice語音識別系統(tǒng),次年又開發(fā)出可以識別上海話、廣東話和四川話等地方口音的語音識別系統(tǒng)ViaVoice'98。它帶有一個32,000詞的基本詞匯表,可以擴展到65,000詞,還包括辦公常用詞條,具有“糾錯機制”,其平均識別率可以達到95%。該系統(tǒng)對

19、新聞?wù)Z音識別具有較高的精度,是目前具有代表性的漢語連續(xù)語音識別系統(tǒng)。 國內(nèi)研究歷史及現(xiàn)狀我國語音識別研究工作起步于五十年代,但近年來發(fā)展很快。研究水平也從實驗室逐步走向?qū)嵱谩?987年開始執(zhí)行國家863計劃后,國家863智能計算機專家組為語音識別技術(shù)研究專門立項,每兩年滾動一次。我國語音識別技術(shù)的研究水平已經(jīng)基本上與國外同步,在漢語語音識別技術(shù)上還有自己的特點與優(yōu)勢,并達到國際先進水平。中科院自動化所、聲學(xué)所、清華大學(xué)、北京大學(xué)、哈爾濱工業(yè)大學(xué)、上海交通大學(xué)、中國科技大學(xué)、北京郵電大學(xué)、華中科技大學(xué)等科研機構(gòu)都有實驗室進行過語音識別方面的研究,其中具有代表性的研究單位為清華大學(xué)電子工程系與中

20、科院自動化研究所模式識別國家重點實驗室。 清華大學(xué)電子工程系語音技術(shù)與專用芯片設(shè)計課題組,研發(fā)的非特定人漢語數(shù)碼串連續(xù)語音識別系統(tǒng)的識別精度,達到94.8%(不定長數(shù)字串)和96.8%(定長數(shù)字串)。在有5%的拒識率情況下,系統(tǒng)識別率可以達到96.9%(不定長數(shù)字串)和98.7%(定長數(shù)字串),這是目前國際最好的識別結(jié)果之一,其性能已經(jīng)接近實用水平。研發(fā)的5000詞郵包校核非特定人連續(xù)語音識別系統(tǒng)的識別率達到98.73%,前三選識別率達99.96%;并且可以識別普通話與四川話兩種語言,達到實用要求。中科院自動化所及其所屬模式科技(Pattek)公司2002年發(fā)布了他們共同推出的面向不同計算平臺

21、和應(yīng)用的“天語”中文語音系列產(chǎn)品PattekASR,結(jié)束了中文語音識別產(chǎn)品自1998年以來一直由國外公司壟斷的歷史。如果從識別系統(tǒng)的詞匯量大小考慮,也可以將識別系統(tǒng)分為3類:(1)小詞匯量語音識別系統(tǒng)。通常包括幾十個詞的語音識別系統(tǒng)。(2)中等詞匯量的語音識別系統(tǒng)。通常包括幾百個詞到上千個詞的識別系統(tǒng)。(3)大詞匯量語音識別系統(tǒng)。通常包括幾千到幾萬個詞的語音識別系統(tǒng)。隨著計算機與數(shù)字信號處理器運算能力以及識別系統(tǒng)精度的提高,識別系統(tǒng)根據(jù)詞匯量大小進行分類也不斷進行變化。目前是中等詞匯量的識別系統(tǒng)到將來可能就是小詞匯量的語音識別系統(tǒng)。這些不同的限制也確定了語音識別系統(tǒng)的困難度。1.2 語音識別技

22、術(shù)應(yīng)用1、語音識別獲得應(yīng)用伴隨著語音識別技術(shù)的不斷發(fā)展,誕生了全球首套多語種交談式語音識別系統(tǒng)E-talk。這是全球惟一擁有中英混合語言的識別系統(tǒng),能聽能講普通話、廣東話和英語,還可以高度適應(yīng)不同的口音,因而可以廣泛適用于不同文化背景的使用者,尤其是中國地區(qū)語言差別較大的廣大用戶。由于E-talk可以大大提高工作效率,降低運營成本,并為用戶提供更便捷的增值服務(wù),我們相信它必將成為電信、證券、金融、旅游等重視客戶服務(wù)的行業(yè)爭相引用的電子商務(wù)應(yīng)用系統(tǒng),并成為電子商務(wù)發(fā)展的新趨勢,為整個信息產(chǎn)業(yè)帶來無限商機。目前,飛利浦推出的語音識別自然會話平臺SpeechPearl和SpeechMania已成功地

23、應(yīng)用于國內(nèi)呼叫中心,SpeechPearl中的每個識別引擎可提供高達20萬字的超大容量詞庫,尤其在具有大詞匯量、識別準確性和靈活性等要求的各種電信增值服務(wù)中有著廣泛的應(yīng)用。2、語音合成信息服務(wù)被用戶接受語音合成技術(shù)把可視的文本信息轉(zhuǎn)化為可聽的聲音信息,其應(yīng)用的經(jīng)濟效益和社會效益前景良好。尤其對漢語語音合成技術(shù)的應(yīng)用而言,全球有十幾億人使用中文,其市場需求、應(yīng)用前景和經(jīng)濟效益等可見一斑。語音技術(shù)已逐漸在電信聲訊信息服務(wù)領(lǐng)域智能電話查詢系統(tǒng)中展開應(yīng)用,并迅速推廣。在電話高度普及的今天,如果打電話就能查詢到所需信息,無疑將給人們的日常生活帶來極大方便。漢語語音合成技術(shù)應(yīng)用到聲訊服務(wù)領(lǐng)域內(nèi),對現(xiàn)有的電

24、話查詢系統(tǒng)將產(chǎn)生革命性的影響。語音技術(shù)與互聯(lián)網(wǎng)已成功地結(jié)合。電話Internet網(wǎng)關(guān)是一種用于實現(xiàn)電話網(wǎng)和Internet網(wǎng)之間信息互訪的系統(tǒng)。簡而言之,就是讓電話用戶能夠輕松地通過電話網(wǎng)訪問Internet網(wǎng)。利用語音合成技術(shù)的信息服務(wù)得到了用戶的廣泛接納,給用戶生活提供了極大的方便。3、面向?qū)ο蟮恼Z音編碼長期以來,在通信網(wǎng)的發(fā)展中,解決信息傳輸效率是一個關(guān)鍵問題,極其重要。目前科研人員已通過兩個途徑研究這一課題,其一是研究新的調(diào)制方法與技術(shù),來提高信道傳輸信息的比特率,指標是每赫茲帶寬所傳送的比特數(shù);其二是壓縮信源編碼的比特率,例如標準PCB編碼,對3.4KHz頻帶信號需用64KHz編碼比

25、特率傳送,而壓縮這一比特率,顯然可以提高信道傳送的話路數(shù)。這對任何頻率資源有限的傳輸環(huán)境來說,無疑是極為重要的,尤其是在無線通信技術(shù)決定今后通信發(fā)展命運的今天更顯得重要。實際上,壓縮語音編碼比特率與話音存儲、語音識別及語音合成等技術(shù)都直接相關(guān)。語音編碼技術(shù)的進展對通信新業(yè)務(wù)的發(fā)展有極為明顯的影響,例如IP電話業(yè)務(wù)、實時長途翻譯業(yè)務(wù)、交換機的人工智能接口等。因此,國際電報電話咨詢委員會(CCITT)第15組提出了許多急需制訂的話音編碼標準建議,以推動通信網(wǎng)的發(fā)展。由于VLDSI的發(fā)展,實現(xiàn)這一技術(shù)的代價已從在昂貴的信道中采用,發(fā)展到一般信道中都可接受的水平,因此,編碼技術(shù)日益受到重視。當前,數(shù)字

26、移動通信和個人通信(PCN)是深受人們重視的通信手段,其重要問題之一是壓縮語音編碼速率,形成面向?qū)ο蟮恼Z音編碼技術(shù)。 數(shù)字語音編碼技術(shù)從1938年提出PCM開始,其編碼方法已有了很大的發(fā)展,如1968年提出的線性預(yù)測編碼技術(shù)(LPC)、20世紀70年代末出現(xiàn)的隱馬爾科夫技術(shù)(HMM)以及矢量量化(VQ)等。4、口語機器翻譯受到重視口語翻譯的一個重要目的就是幫助聾啞人與正常人交流,近來越來越受到人們的重視。首先,聾啞人要戴上一副特制的手套,計算機根據(jù)他打出的手語進行識別,然后,通過語音合成系統(tǒng)就可以把圖像信息翻譯成語言信息。同時,系統(tǒng)還能夠完成將正常人的語言翻譯成聾啞人的手語,只要將正常人說的話

27、鍵入計算機,經(jīng)程序分析處理之后,翻譯成有表情、有動作的三維圖像,從而最終達到聾啞人與正常人之間通過翻譯機進行交流的目的。口語翻譯的研究在其他很多方面都有重要價值,如用手勢控制計算機,甚至用手勢導(dǎo)航等。1.3 語音識別技術(shù)的發(fā)展 1、神經(jīng)網(wǎng)絡(luò)用于訓(xùn)練韻律模型由于人工神經(jīng)網(wǎng)絡(luò)具備良好的自學(xué)習(xí)和自適應(yīng)能力,將其應(yīng)用于語音合成系統(tǒng)中的韻律模型研究具有很重要的意義。將神經(jīng)網(wǎng)絡(luò)模型與已有的文語轉(zhuǎn)換系統(tǒng)有機結(jié)合,可以改變傳統(tǒng)的文語轉(zhuǎn)換系統(tǒng)的韻律模型,具有更強的適應(yīng)性和可訓(xùn)練性,使合成語音的自然度得到顯著提高,增加了系統(tǒng)的靈活性和風(fēng)格的多樣性。2、數(shù)據(jù)挖掘用于發(fā)現(xiàn)語音知識數(shù)據(jù)挖掘作為一種在大量數(shù)據(jù)庫中發(fā)現(xiàn)隱藏

28、新知識的計算技術(shù)方法,通過語音定性模型的建立,將數(shù)據(jù)分析和挖掘結(jié)果轉(zhuǎn)化為邏輯規(guī)則或用可視化的形式進行表達。因此,將數(shù)據(jù)挖掘和人機交互接口緊密地聯(lián)系在一起,將對計算機語音信號處理的研究工作產(chǎn)生巨大的推動力,為語音信號處理提供了一條嶄新的研究途徑。3、文本-可視語音轉(zhuǎn)換系統(tǒng)研制成功文本-可視語音轉(zhuǎn)換技術(shù)的出現(xiàn)是多媒體技術(shù)迅速發(fā)展的產(chǎn)物 也迎合了社會發(fā)展的需求。它給人們的生活增添了新的色彩,使計算機更加人性化,人們與計算機的交流變得更為簡單。相信在不久的將來,它會在眾多的技術(shù)、商業(yè)和娛樂領(lǐng)域得到廣泛的應(yīng)用,并逐步進入我們每個人的生活。1.4 語音識別技術(shù)的研究方向1、連續(xù)自然語音的識別與理解自然語音

29、識別與理解研究的是計算機如何理解人類的語言 其目的就是讓計算機能夠理解人說的話,當我們使用計算機時,要告訴它應(yīng)該做什么,它就能按照所理解的去執(zhí)行。雖然現(xiàn)在自然語音識別與理解的理論研究得到了進一步完善,同時,計算機的功能、容量和速度都有了很大的提高,但研究仍局限在對孤立音節(jié)的識別與理解上。人類流暢的自然發(fā)音不是孤立音節(jié)發(fā)音的簡單組合,它是在一定時間范圍內(nèi)輸出的一種連續(xù)語流,因此,需要對連續(xù)語音進行處理。連續(xù)語音識別與理解技術(shù)中需要解決的難點很多,對它的研究是語音技術(shù)今后的目標之一。2、高自然度、具有表現(xiàn)力的合成語音提高合成語音的自然度仍然是高性能文語轉(zhuǎn)換的當務(wù)之急。就漢語語音合成來說,目前在單字

30、和詞組級上,合成語音的可懂度和自然度已基本解決,但是對于句子乃至篇章級,其自然度問題就比較大。未來的文語轉(zhuǎn)換系統(tǒng)的發(fā)展趨勢是采用基于語境相關(guān)的合成思想進行設(shè)計,能夠?qū)l(fā)音人的原始發(fā)音特征最大限度地保留下來,輔助以先進的層次化語言韻律模型,通過分散統(tǒng)計的模型方法來涵蓋語義語音之間的內(nèi)在聯(lián)系,使系統(tǒng)能夠輸出具有高自然度和表現(xiàn)力的合成語音。但是,在目前的合成系統(tǒng)中,普遍存在合成輸出語音的機器味比較濃、語境的知識層次模型研究不完善等問題。因此,獲得高自然度、具有表現(xiàn)力的合成語音,也是今后語音技術(shù)的研究目標之一 。3、語音技術(shù)與多媒體技術(shù)的結(jié)合伴隨著現(xiàn)代語音技術(shù)的不斷發(fā)展,人類對語音信號的需要已經(jīng)不僅僅

31、停留在可懂性和正確性上,語音合成技術(shù)的研究方向已是合成語音的美感并同時輸出輔助的視頻特征,實現(xiàn)虛擬主持人的效果,通過將視覺效果包括人的頭部建模、唇形同步技術(shù)和表情因素等視頻信息的加入,可以更好地體現(xiàn)語音合成系統(tǒng)的表現(xiàn)力和感染力。因此,我們完全有理由相信,語音技術(shù)和多媒體技術(shù)的有機結(jié)合將使合成系統(tǒng)展現(xiàn)出廣闊的應(yīng)用前景。4、語音技術(shù)與網(wǎng)絡(luò)技術(shù)的結(jié)合目前,語音技術(shù)已逐漸應(yīng)用于電信的聲訊信息服務(wù)領(lǐng)域和互聯(lián)網(wǎng)消息收發(fā)方面。隨著電話網(wǎng)與互聯(lián)網(wǎng)的融合、網(wǎng)絡(luò)信息項目的增多和時效性要求逐步提高,建立適合于股票交易、航班動態(tài)查詢、電話自動報稅等業(yè)務(wù)的語音系統(tǒng)成為可能,電話用戶可以通過傳統(tǒng)的語音、傳真獲取互聯(lián)網(wǎng)上無

32、窮無盡的信息。這些業(yè)務(wù)將徹底解決傳統(tǒng)數(shù)字錄音回放技術(shù)所無法解決的海量信息庫和動態(tài)變化信息的實時生成與存儲的難題。因此,將語音技術(shù)與網(wǎng)絡(luò)進行完美的結(jié)合具有強大的生命力。5、多語種語言是人們交流的工具,不同民族有自己不同的語言,不同語言之間的交流在今天開放的信息社會和網(wǎng)絡(luò)時代顯得十分重要,因此,多語種的文語合成有著獨特的應(yīng)用價值。例如,在自動電話翻譯、有聲電子郵件等應(yīng)用中都提出了多語種語音合成的需求,即使是對漢語合成也有多方言文語轉(zhuǎn)換問題。理想的多語種合成系統(tǒng)最好是各種語言共用一種合成算法或語音合成器,但現(xiàn)有的語音合成系統(tǒng)大多是針對某一種語言或若干種語言開發(fā)出來的,所采用的算法及規(guī)則都是與某種語言

33、密切相關(guān)的,因此很難推廣到其他語種。如漢語和西方語言之間存在著很大的差異,而目前國內(nèi)的系統(tǒng)都是做漢語文語轉(zhuǎn)換的 其韻律控制規(guī)則完全不適合于英語,而且它們主要是合成漢語普通話的,即使推廣到廣東話和上海話都有相當?shù)碾y度。可見要真正解決多語種的文語合成,從文本處理到語音合成都必須有新的思路,因此,研制多語種語音合成轉(zhuǎn)換系統(tǒng)具有重要的理論和現(xiàn)實意義。第二章 主要研究內(nèi)容和方法2.1 語音識別的研究內(nèi)容語音識別技術(shù)是利用計算機對語音進行特征提取,獲取最能表征語音特征的有用信息,根據(jù)這些信息來對語音所代表的內(nèi)容或說話人身份判斷的技術(shù)。因此需要對語音波形的幅值、頻率等特點進行研究,我們把語音識別的研究內(nèi)容大

34、致可以分為語音提取、特征提取、語音識別、內(nèi)容分析、內(nèi)容匹配。語音識別是一門交叉學(xué)科,語音識別正逐步成為信息技術(shù)中人機接口的關(guān)鍵技術(shù),語音識別技術(shù)與語音合成技術(shù)結(jié)合使人們能夠甩掉鍵盤,通過語音命令進行操作。語音技術(shù)的應(yīng)用已經(jīng)成為一個具有競爭性的新興高技術(shù)產(chǎn)業(yè)。與機器進行語音交流,讓機器明白你說什么,這是人們長期以來夢寐以求的事情。語音識別技術(shù)就是讓機器通過識別和理解過程把語音信號轉(zhuǎn)變?yōu)橄鄳?yīng)的文本或命令的高技術(shù)。語音識別是一門交叉學(xué)科。近二十年來,語音識別技術(shù)取得顯著進步,開始從實驗室走向市場。人們預(yù)計,未來10年內(nèi),語音識別技術(shù)將進入工業(yè)、家電、通信、汽車電子、醫(yī)療、家庭服務(wù)、消費電子產(chǎn)品等各個

35、領(lǐng)域。語音識別聽寫機在一些領(lǐng)域的應(yīng)用被美國新聞界評為1997年計算機發(fā)展十件大事之一。很多專家都認為語音識別技術(shù)是2000年至2010年間信息技術(shù)領(lǐng)域十大重要的科技發(fā)展技術(shù)之一。2.2 語音識別系統(tǒng)的分類語音識別系統(tǒng)可以根據(jù)對輸入語音的限制加以分類。如果從說話者與識別系統(tǒng)的相關(guān)性考慮,可以將識別系統(tǒng)分為3類:(1)特定人語音識別系統(tǒng):僅考慮對于專人的話音進行識別;(2)非特定人語音系統(tǒng):識別的語音與人無關(guān),通常要用大量不同人的語音數(shù)據(jù)庫對識別系統(tǒng)進行學(xué)習(xí);(3)多人的識別系統(tǒng):通常能識別一組人的語音,或者成為特定組語音識別系統(tǒng),該系統(tǒng)僅要求對要識別的那組人的語音進行訓(xùn)練。如果從說話的方式考慮,

36、也可以將識別系統(tǒng)分為3類:(1)孤立詞語音識別系統(tǒng):孤立詞識別系統(tǒng)要求輸入每個詞后要停頓;(2)連接詞語音識別系統(tǒng):連接詞輸入系統(tǒng)要求對每個詞都清楚發(fā)音,一些連音現(xiàn)象開始出現(xiàn);(3)連續(xù)語音識別系統(tǒng):連續(xù)語音輸入是自然流利的連續(xù)語音輸入,大量連音和變音會出現(xiàn)。如果從識別系統(tǒng)的詞匯量大小考慮,也可以將識別系統(tǒng)分為3類:(1)小詞匯量語音識別系統(tǒng)。通常包括幾十個詞的語音識別系統(tǒng)。(2)中等詞匯量的語音識別系統(tǒng)。通常包括幾百個詞到上千個詞的識別系統(tǒng)。(3)大詞匯量語音識別系統(tǒng)。通常包括幾千到幾萬個詞的語音識別系統(tǒng)。隨著計算機與數(shù)字信號處理器運算能力以及識別系統(tǒng)精度的提高,識別系統(tǒng)根據(jù)詞匯量大小進行分

37、類也不斷進行變化。目前是中等詞匯量的識別系統(tǒng)到將來可能就是小詞匯量的語音識別系統(tǒng)。這些不同的限制也確定了語音識別系統(tǒng)的困難度。2.3 語音識別的研究方法根據(jù)語音識別技術(shù)的發(fā)展歷史,語音識別方法大致可分為基于說話人的語音識別方法、基于說話內(nèi)容的語音識別方法、基于統(tǒng)計的語音識別方法和基于網(wǎng)絡(luò)的語音識別方法。目前,主流的大詞匯量語音識別系統(tǒng)多采用統(tǒng)計模式識別技術(shù)。典型的基于統(tǒng)計模式識別方法的語音識別系統(tǒng)由以下幾個基本模塊所構(gòu)成:信號處理及特征提取模塊。該模塊的主要任務(wù)是從輸入信號中提取特征,供聲學(xué)模型處理。同時,它一般也包括了一些信號處理技術(shù),以盡可能降低環(huán)境噪聲、信道、說話人等因素對特征造成的影響

38、。統(tǒng)計聲學(xué)模型。典型系統(tǒng)多采用基于一階隱馬爾科夫模型進行建模。 發(fā)音詞典。發(fā)音詞典包含系統(tǒng)所能處理的詞匯集及其發(fā)音。發(fā)音詞典實際提供了聲學(xué)模型建模單元與語言模型建模單元間的映射。語言模型對系統(tǒng)所針對的語言進行建模。理論上,包括正則語言,上下文無關(guān)文法在內(nèi)的各種語言模型都可以作為語言模型,但目前各種系統(tǒng)普遍采用的還是基于統(tǒng)計的N元文法及其變體。 解碼器,解碼器是語音識別系統(tǒng)的核心之一,其任務(wù)是對輸入的信號,根據(jù)聲學(xué)、語言模型及詞典,尋找能夠以最大概率輸出該信號的詞串。 從數(shù)學(xué)角度可以更加清楚的了解上述模塊之間的關(guān)系。首先,統(tǒng)計語音識別的最基本問題是,給定輸入信號或特征序列,符號集(詞典),求解符

39、號串使得:W = argmaxP(W | O) 通過貝葉斯公式,上式可以改寫為:由于對于確定的輸入串O,P(O)是確定的,因此省略它并不會影響上式的最終結(jié)果,因此,一般來說語音識別所討論的問題可以用下面的公式來表示,可以將它稱為語音識別的基本公式。從這個角度來看,信號處理模塊提供了對輸入信號的預(yù)處理,也就是說,提供了從采集的語音信號(記為S)到 特征序列O的映射。而聲學(xué)模型本身定義了一些更具推廣性的聲學(xué)建模單元,并且提供了在給定輸入特征下,估計P(O | uk)的方法。為了將聲學(xué)模型建模單元串映射到符號集,就需要發(fā)音詞典發(fā)揮作用。它實際上定義了映射的映射。為了表示方便,也可以定義一個由到U的全

40、集的笛卡爾積,而發(fā)音詞典則是這個笛卡爾積的一個子集。并且有:最后,語言模型則提供了P(W)。這樣,基本公式就可以更加具體的寫成:對于解碼器來所,就是要在由ui以及時間標度t張成的搜索空間中,找到上式所指明的W。2.4 并行計算技術(shù)多任務(wù)在32位的Windows系統(tǒng)中,采用的是搶先式多任務(wù),這意味著程序?qū)PU的占用時間是由系統(tǒng)決定的。系統(tǒng)為每個程序分配一定的CPU時間,當程序的運行超過規(guī)定時間后,系統(tǒng)就會中斷該程序并把CPU控制權(quán)轉(zhuǎn)交給別的程序。與協(xié)同式多任務(wù)不同,這種中斷是匯編語言級的。程序不必調(diào)用像PeekMessage這樣的函數(shù)來放棄對CPU的控制權(quán),就可以進行費時的工作,而且不會導(dǎo)致系

41、統(tǒng)的掛起。例如,在Windows 3x中,如果某一個應(yīng)用程序陷入了死循環(huán),那么整個系統(tǒng)都會癱瘓,這時惟一的解決辦法就是重新啟動機器。而在Windows 95NT中,一個程序的崩潰一般不會造成死機,其他程序仍然可以運行,用戶可以按Ctrl+Alt+Del鍵來打開任務(wù)列表并關(guān)閉沒有響應(yīng)的程序。 1、進程與線程 在32位的Windows系統(tǒng)中,多任務(wù)指系統(tǒng)可同時運行多個進程,而每個進程也可同時執(zhí)行多個線程。 進程就是應(yīng)用程序的運行實例。每個進程都有自己私有的虛擬地址空間,都有一個主線程但可以建立另外的線程。進程中的線程是并行執(zhí)行的,每個線程占用CPU的時間由系統(tǒng)來劃分。 可以把線程看成是操作系統(tǒng)分配

42、CPU時間的基本實體。系統(tǒng)不停地在各個線程之間切換,他對線程的中斷是匯編語言級的。系統(tǒng)為每一個線程分配一個CPU時間片,某個線程只有在分配的時間片內(nèi)才有對CPU的控制權(quán)。實際上,在PC機中,同一時間只有一個線程在運行。由于系統(tǒng)為每個線程劃分的時間片很小(20ms左右),所以看上去好像是多個線程在同時運行。進程中的所有線程共享進程的虛擬地址空間,這意味著所有線程都可以訪問進程的全局變量和資源。這一方面為編程帶來了方便,但另一方面也容易造成沖突。雖然在進程中進行費時的工作不會導(dǎo)致系統(tǒng)的掛起,但這會導(dǎo)致進程本身的掛起。所以,如果進程既要進行長期的工作,又要響應(yīng)用戶的輸入,那么他可以啟動一個線程來專門

43、負責(zé)費時的工作,而主線程仍然可以與用戶進行交互。2、基于Win 32基礎(chǔ)上進行多線程編程的過程線程分用戶界面線程和工作者線程2種。用戶界面線程擁有自己的消息泵來處理界面消息,可以與用戶進行交互。工作者線程沒有消息泵,一般用來完成后臺工作。(1)用Win 32函數(shù)創(chuàng)建和中止線程 win32函數(shù)庫中提供了多線程控制的操作函數(shù),包括創(chuàng)建線程、中止線程、建立互斥區(qū)等。首先,在應(yīng)用程序的主線程或者其他活動線程的適當?shù)胤絼?chuàng)建新的線程。創(chuàng)建線程的函數(shù)如下: HANDLE CreateThread(LPSECURITYATTRIBUTES lpThreadAttributes DWORD dwStackSiz

44、e;LPTHREADSTARTROUTINE lpStartAddress。 LPVOID IpParameter DWORD dwCreationFlags; LPDW0RDIpThreadId); 其中:lpThreadAttributes指定了線程的安全屬性,在Windows 95中被忽略;dwStackSize指定了線程的堆棧深度;lpStartAddress指定了線程的起始地址,一般情況為原型函數(shù)DW0RDWINAPI ThreadFunc (I PVOID);lpParameter指定了線程執(zhí)行時傳送給線程的32位參數(shù),即上面函數(shù)的參數(shù);dwCreationFlags指定了線程創(chuàng)建

45、的特性;lpThreadld指向一個DWORD變量,可返回線程ID值。如果創(chuàng)建成功則返回線程的句柄,否則返回NUII。創(chuàng)建了新的線程后,則該線程就開始啟動執(zhí)行了。如果在dwCreationFlags中用了CREATESUSPENDED特性,那么線程并不馬上執(zhí)行,而是先掛起,等到調(diào)用ResumeThread后才開始啟動線程,在這個過程中可以調(diào)用函數(shù):BOOI SetThread Priority (HANDI E hThread,int nPriority)來設(shè)置線程的優(yōu)先權(quán)。當線程的函數(shù)返回后,線程自動中止。如果在線程的執(zhí)行過程中中止的話,則可調(diào)用函數(shù):VOID Exit Thread(DWO

46、RD dwExit Code);如果在線程的外面中止線程的話,則可調(diào)用下面的函數(shù):BOoI TerminateThread (HANDI E hThread,DWORD dwExitCode)。但應(yīng)注意:該函數(shù)可能會引起系統(tǒng)不穩(wěn)定,而且線程所占用的資源也不釋放。因此,一般情況下,建議不要使用該函數(shù)。如果要中止的線程是進程內(nèi)的最后一個線程,則在線程被中止后相應(yīng)的進程也應(yīng)中止。3、用Win 32函數(shù)控制線程對共享資源的訪問在線程體內(nèi),如果該線程完全獨立,與其他的線程沒有數(shù)據(jù)存取等資源操作上的沖突,則可按照通常單線程的方法進行編程。但是,在多線程處理時情況常常不是這樣,線程之間經(jīng)常要同時訪問一些資源

47、。例如,一個線程負責(zé)公式計算,另一個線程負責(zé)結(jié)果的顯示,兩個線程都要訪問同一個結(jié)果變量。這時如果不進行沖突控制的話,則很可能顯示的是不正確的結(jié)果。對共享資源進行訪問引起沖突是不可避免的,但可用以下辦法來進行操作控制:(1)通過設(shè)置線程的互斥體對象,在可能沖突的地方進行同步控制;首先,建立互斥體對象,得到句柄:HANDLE CreateMutex();然后,在線程可能沖突區(qū)域的開始 (即訪問共享資源之前),調(diào)用WaitForSingleObject將句柄傳給函數(shù),請求占用互斥體對象:dwWaitResult =WaitForSingleObject(hMutex,5000L);共享資源訪問完后,

48、釋放對互斥體對象的占用:ReleaseMutex (hMutex);互斥體對象在同一時刻只能被一個線程占用。當互斥體對象被一個線程占用時,若有另一線程想占用他,則必須等到前一線程釋放后才能成功。 (2)設(shè)置信號 在操作共享資源前,打開信號;完成操作后,關(guān)閉信號。這類似于互斥體對象的處理。首先,創(chuàng)建信號對象:HANDLE CreateSemaphore();或者打開一個信號對象:HANDI E OpenSemaphore();然后,在線程的訪問共享資源之前調(diào)用WaitForSingleObject。共享資源訪問完后,釋放對信號對象的占用:ReleaseSemaphore();信號對象允許同時對多

49、個線程共享資源的訪問,在創(chuàng)建對象時指定最大可同時訪問的線程數(shù)。當一個線程申請訪問成功后,信號對象中的計數(shù)器減1;調(diào)用ReleaseSemaphore函數(shù)后,信號對象中的計數(shù)器加1。其中,計數(shù)器值創(chuàng)建時指定的最大值。利用信號對象,不僅可以控制共享資源的訪問,還可以在應(yīng)用的初始化時候使用。假定一個應(yīng)用在創(chuàng)建一個信號對象時,將其計數(shù)器的初始值設(shè)為0,這樣就阻塞了其他線程,保護了資源。待初始化完成后,調(diào)用ReleaseSemaphore函數(shù)將其計數(shù)器增加至最大值,進行正常的存取訪問。 (3)利用事件對象的狀態(tài),進行線程對共享資源的訪問用ResetEvent函數(shù)設(shè)置事件對象狀態(tài)為不允許線程通過;用Set

50、Event函數(shù)設(shè)置事件對象狀態(tài)為可以允許線程通過。事件分為手工釋放和自動釋放。如果是手工釋放,則按照上述2個函數(shù)處理事件的狀態(tài);如果是自動釋放,則在一個線程結(jié)束后,自動清除事件狀態(tài),允許其他線程通過。(4)設(shè)置排斥區(qū) 在排斥區(qū)中異步執(zhí)行時,他只能在同一進程的線程之間共享資源處理。雖然此時上面介紹的3種方法均可使用,但是,使用排斥區(qū)的方法則使同步管理的效率更高;先定義一個CRITICAl 一SECTlON結(jié)構(gòu)的排斥區(qū)對象,在進程使用之前先對對象進行初始化,調(diào)用如下函數(shù):VO1D Initialize Critical Section(LPCRlTlCALSECTlON);當一個線程使用排斥區(qū)時,

51、調(diào)用函數(shù):EnterCriticalSection或者TryEnterCriticalSection;當要求占用、退出排斥區(qū)時,調(diào)用函數(shù):LeaveCriticalSection。釋放對排斥區(qū)對象的占用,供其他線程使用。互斥體對象、信號對象和事件對象也可以用于進程間的線程同步操作。在用win32函數(shù)創(chuàng)建了對象時,可以指定對象的名字,還可以設(shè)置同步對象在子進程的繼承性。創(chuàng)建返回的是HANDLE句柄,可以用函數(shù)DuplicateHandle來復(fù)制對象句柄,這樣每個進程都可以擁有同一對象的句柄,實現(xiàn)進程之間的線程同步操作。另外,在同一進程內(nèi),可以用OpenMutex,OpenSemaphore和Op

52、enEvent來獲得指定名字的同步對象的句柄。排斥區(qū)異步執(zhí)行的線程同步方法只能用于同一進程的線程之問共享資源處理,但是這種方法的使用效率較高,而且編程也相對簡單一些。在Visual C+中,除了利用Win32函數(shù)進行多線程同步控制外,如果用到了MFC類庫,則可利用已經(jīng)封裝成C+類結(jié)構(gòu)的同步對象,使編程更加簡捷。2.5 OpenMP編程模型 OpenMP介紹OpenMP使用fork-join(見圖2-1)并行機制,程序開始串行執(zhí)行,此時只有一個主線程,然后在遇到用戶定義的并行區(qū)域時創(chuàng)建出一組線程。在并行區(qū)域之內(nèi),多個線程可以執(zhí)行相同的代碼塊,或使用工作共享結(jié)構(gòu)體并行執(zhí)行不同的任務(wù)。主線程并行區(qū)域

53、圖2-1 fork-join并行機制OpenMP由指導(dǎo)命令、環(huán)境變量和運行庫組成,見圖2-2#1/bin/ksh# Shell-Scriptf90 openmp test_f90export OMP_THREADS*4a.outEnvironment variables! Source file test_f90Program mainIntager omp_get_thread_num! $omp parallel print *, me: omp_get_num()! $omp and parallelend programdirectives(special comment lines)

54、runtime libraryme:0me:3me:2me:1圖2-2 OpenMP組成通過在串行程序里加入適當?shù)闹笇?dǎo)命令和運行庫函數(shù),就可以把串行并行化,這種增量并行的模式使得開發(fā)并行程序變得很容易。OpenMP結(jié)構(gòu)如圖2-3所示圖2-3 OpenMP體系結(jié)構(gòu)userdirectivesenvronment variablesOpenMP runtime systemoperating system-theadsruntime functionsOpenMP programshell OpenMP指導(dǎo)命令流程OpenMP主要包含如圖所示的指導(dǎo)命令圖2-4 OpenMP指導(dǎo)命令流程圖paral

55、lel beginparallel endloop endloop beginsingle beginsingle endcritical beginmaster endmaster begincritical endordered beginorderd endsection beginsection endsection beginsection endsections beginsections endbarrierflush我們用流程圖的形式把OpenMP指導(dǎo)指令的特點描繪出來,對于parallel指導(dǎo)命令包含的代碼段,線程組中所有的線程都要執(zhí)行,對于loop指導(dǎo)命令包含的代碼段,可能

56、只有部分線程執(zhí)行,右側(cè)的方向線表示有的線程沒有執(zhí)行完這段代碼,左側(cè)的方向線刻畫出循環(huán)的特點,執(zhí)行完一次迭代后,如果還有任務(wù),從循環(huán)開始處執(zhí)行下一次迭代;barrier指導(dǎo)命令表示所有線程在此處同步,然后再執(zhí)行接下來的語句,barrier指導(dǎo)命令沒有包含代碼段;flush指導(dǎo)命令后面加上需刷新的共享變量,所以在圖中沒有畫出中間的箭頭,即表示不包含代碼段;single指導(dǎo)命令所包含的代碼段只由一個線程組執(zhí)行,別的線程跳過這段代碼,如果single指導(dǎo)命令由nowait從句,則所有線程在single指導(dǎo)命令結(jié)束處隱式同步點同步;master指導(dǎo)命令和single指導(dǎo)命令類似,區(qū)別在于master指導(dǎo)

57、命令包含的代碼段由主線程執(zhí)行, single指導(dǎo)命令包含的代碼段可以由任一線程執(zhí)行,并且master指導(dǎo)命令在結(jié)束處沒有隱式同步,也不能指定nowait從句;critical指導(dǎo)命令包含的代碼段稱為臨界段,同時只能有一個線程訪問;ordered指導(dǎo)命令表示循環(huán)的迭代次序和串行程序一樣;sections指導(dǎo)命令包含一些section,根據(jù)section的數(shù)量和線程的數(shù)量不同,可能有時一個線程執(zhí)行多個section;也可能有的線程沒有執(zhí)行任何section,右邊的方向線即標識出后面這種情況。通過流圖的形式來對OpenMP指導(dǎo)命令進行描繪,可以很清晰的觀察出OpenMP指導(dǎo)命令的特點。OpenMP是面向共享主存結(jié)構(gòu)的標準,程序員在開發(fā)的過程中不用考慮數(shù)據(jù)分布,因此使用OpenMP開發(fā)并行程序比較容易,一般OpenMP程序是從串行程序出發(fā),通過在適當位置加入編譯指導(dǎo)命令和運行庫函數(shù)來并行化串行程序,通常OpenMP并行程序有幾種不同的開發(fā)形式,本文列出最常見的兩種開發(fā)形式:一是通過簡單的fork-join形式對串行程序并行化;二是采用單程序多數(shù)據(jù)SPMD形式對串行程序并行化。1、fork-join形式的程序。這種形式的OpenMP程

溫馨提示

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

評論

0/150

提交評論