導航:首頁 > 源碼編譯 > dtw語音識別演算法

dtw語音識別演算法

發布時間:2023-01-16 20:58:04

1. matlab中的特定人語音識別演算法DTW演算法的應用常式

語音識別原理

語音識別系統的本質就是一種模式識別系統,它也包括特徵提取、模式匹配、參考模式庫等基本單元。由於語音信號是一種典型的非平穩信號,加之呼吸氣流、外部噪音、電流干擾等使得語音信號不能直接用於提取特徵,而要進行前期的預處理。預處理過程包括預濾波、采樣和量化、分幀、加窗、預加重、端點檢測等。經過預處理的語音數據就可以進行特徵參數提取。在訓練階段,將特徵參數進行一定的處理之後,為每個詞條得到一個模型,保存為模板庫。在識別階段,語音信號經過相同的通道得到語音參數,生成測試模板,與參考模板進行匹配,將匹配分數最高的參考模板作為識別結果。後續的處理過程還可能包括更高層次的詞法、句法和文法處理等,從而最終將輸入的語音信號轉變成文本或命令

DTW演算法原理

DTW是把時間規整和距離測度計算結合起來的一種非線性規整技術,它尋找一個規整函數im=Ф(in),將測試矢量的時間軸n非線性地映射到參考模板的時間軸m上,並使該函數滿足:

D就是處於最優時間規整情況下兩矢量的距離。由於DTW不斷地計算兩矢量的距離以尋找最優的匹配路徑,所以得到的是兩矢量匹配時累積距離最小所對應的規整函數,這就保證了它們之間存在的最大聲學相似性。

DTW演算法的實質就是運用動態規劃的思想,利用局部最佳化的處理來自動尋找一條路徑,沿著這條路徑,兩個特徵矢量之間的累積失真量最小,從而避免由於時長不同而可能引入的誤差。

2. 淺談語音識別技術論文

語音識別技術研究讓人更加方便地享受到更多的社會信息資源和現代化服務,對任何事都能夠通過語音交互的方式。 我整理了淺談語音識別技術論文,歡迎閱讀!

淺談語音識別技術論文篇一

語音識別技術概述

作者:劉鈺 馬艷麗 董蓓蓓

摘要:本文簡要介紹了語音識別技術理論基礎及分類方式,所採用的關鍵技術以及所面臨的困難與挑戰,最後討論了語音識別技術的 發展 前景和應用。

關鍵詞:語音識別;特徵提取;模式匹配;模型訓練

Abstract:This text briefly introces the theoretical basis of the speech-identification technology,its mode of classification,the adopted key technique and the difficulties and challenges it have to face.Then,the developing prospect ion and application of the speech-identification technology are discussed in the last part.

Keywords:Speech identification;Character Pick-up;Mode matching;Model training

一、語音識別技術的理論基礎

語音識別技術:是讓機器通過識別和理解過程把語音信號轉變為相應的文本或命令的高級技術。語音識別以語音為研究對象,它是語音信號處理的一個重要研究方向,是模式識別的一個分支,涉及到生 理學 、心理學、語言學、 計算 機 科學 以及信號處理等諸多領域,甚至還涉及到人的體態語言(如人在說話時的表情、手勢等行為動作可幫助對方理解),其最終目標是實現人與機器進行 自然 語言通信。

不同的語音識別系統,雖然具體實現細節有所不同,但所採用的基本技術相似,一個典型語音識別系統主要包括特徵提取技術、模式匹配准則及模型訓練技術三個方面。此外,還涉及到語音識別單元的選取。

(一) 語音識別單元的選取

選擇識別單元是語音識別研究的第一步。語音識別單元有單詞(句)、音節和音素三種,具體選擇哪一種,由具體的研究任務決定。

單詞(句)單元廣泛應用於中小詞彙語音識別系統,但不適合大詞彙系統,原因在於模型庫太龐大,訓練模型任務繁重,模型匹配演算法復雜,難以滿足實時性要求。

音節單元多見於漢語語音識別,主要因為漢語是單音節結構的語言,而 英語 是多音節,並且漢語雖然有大約1300個音節,但若不考慮聲調,約有408個無調音節,數量相對較少。因此,對於中、大詞彙量漢語語音識別系統來說,以音節為識別單元基本是可行的。

音素單元以前多見於英語語音識別的研究中,但目前中、大詞彙量漢語語音識別系統也在越來越多地採用。原因在於漢語音節僅由聲母(包括零聲母有22個)和韻母(共有28個)構成,且聲韻母聲學特性相差很大。實際應用中常把聲母依後續韻母的不同而構成細化聲母,這樣雖然增加了模型數目,但提高了易混淆音節的區分能力。由於協同發音的影響,音素單元不穩定,所以如何獲得穩定的音素單元,還有待研究。

(二) 特徵參數提取技術

語音信號中含有豐富的信息,但如何從中提取出對語音識別有用的信息呢?特徵提取就是完成這項工作,它對語音信號進行分析處理,去除對語音識別無關緊要的冗餘信息,獲得影響語音識別的重要信息。對於非特定人語音識別來講,希望特徵參數盡可能多的反映語義信息,盡量減少說話人的個人信息(對特定人語音識別來講,則相反)。從資訊理論角度講,這是信息壓縮的過程。

線性預測(LP)分析技術是目前應用廣泛的特徵參數提取技術,許多成功的應用系統都採用基於LP技術提取的倒譜參數。但線性預測模型是純數學模型,沒有考慮人類聽覺系統對語音的處理特點。

Mel參數和基於感知線性預測(PLP)分析提取的感知線性預測倒譜,在一定程度上模擬了人耳對語音的處理特點,應用了人耳聽覺感知方面的一些研究成果。實驗證明,採用這種技術,語音識別系統的性能有一定提高。

也有研究者嘗試把小波分析技術應用於特徵提取,但目前性能難以與上述技術相比,有待進一步研究。

(三)模式匹配及模型訓練技術

模型訓練是指按照一定的准則,從大量已知模式中獲取表徵該模式本質特徵的模型參數,而模式匹配則是根據一定準則,使未知模式與模型庫中的某一個模型獲得最佳匹配。

語音識別所應用的模式匹配和模型訓練技術主要有動態時間歸正技術(DTW)、隱馬爾可夫模型(HMM)和人工神經元 網路 (ANN)。

DTW是較早的一種模式匹配和模型訓練技術,它應用動態規劃方法成功解決了語音信號特徵參數序列比較時時長不等的難題,在孤立詞語音識別中獲得了良好性能。但因其不適合連續語音大詞彙量語音識別系統,目前已被HMM模型和ANN替代。

HMM模型是語音信號時變特徵的有參表示法。它由相互關聯的兩個隨機過程共同描述信號的統計特性,其中一個是隱蔽的(不可觀測的)具有有限狀態的Markor鏈,另一個是與Markor鏈的每一狀態相關聯的觀察矢量的隨機過程(可觀測的)。隱蔽Markor鏈的特徵要靠可觀測到的信號特徵揭示。這樣,語音等時變信號某一段的特徵就由對應狀態觀察符號的隨機過程描述,而信號隨時間的變化由隱蔽Markor鏈的轉移概率描述。模型參數包括HMM拓撲結構、狀態轉移概率及描述觀察符號統計特性的一組隨機函數。按照隨機函數的特點,HMM模型可分為離散隱馬爾可夫模型(採用離散概率密度函數,簡稱DHMM)和連續隱馬爾可夫模型(採用連續概率密度函數,簡稱CHMM)以及半連續隱馬爾可夫模型(SCHMM,集DHMM和CHMM特點)。一般來講,在訓練數據足夠的,CHMM優於DHMM和SCHMM。HMM模型的訓練和識別都已研究出有效的演算法,並不斷被完善,以增強HMM模型的魯棒性。

人工神經元 網路 在語音識別中的 應用是現在研究的又一 熱點。ANN本質上是一個自適應非線性動力學系統,模擬了人類神經元活動的原理,具有自學、聯想、對比、推理和概括能力。這些能力是HMM模型不具備的,但ANN又不個有HMM模型的動態時間歸正性能。因此,現在已有人研究如何把二者的優點有機結合起來,從而提高整個模型的魯棒性。

二、語音識別的困難與對策

目前,語音識別方面的困難主要表現在:

(一)語音識別系統的適應性差,主要體現在對環境依賴性強,即在某種環境下採集到的語音訓練系統只能在這種環境下應用,否則系統性能將急劇下降;另外一個問題是對用戶的錯誤輸入不能正確響應,使用不方便。

(二)高雜訊環境下語音識別進展困難,因為此時人的發音變化很大,像聲音變高,語速變慢,音調及共振峰變化等等,這就是所謂Lombard效應,必須尋找新的信號分析處理方法。

(三)語言學、生 理學 、心理學方面的研究成果已有不少,但如何把這些知識量化、建模並用於語音識別,還需研究。而語言模型、語法及詞法模型在中、大詞彙量連續語音識別中是非常重要的。

(四)我們對人類的聽覺理解、知識積累和學習機制以及大腦神經系統的控制機理等分面的認識還很不清楚;其次,把這方面的現有成果用於語音識別,還有一個艱難的過程。

(五)語音識別系統從實驗室演示系統到商品的轉化過程中還有許多具體問題需要解決,識別速度、拒識問題以及關鍵詞(句)檢測技術等等技術細節要解決。

三、語音識別技術的前景和應用

語音識別技術 發展 到今天,特別是中小詞彙量非特定人語音識別系統識別精度已經大於98%,對特定人語音識別系統的識別精度就更高。這些技術已經能夠滿足通常應用的要求。由於大規模集成電路技術的發展,這些復雜的語音識別系統也已經完全可以製成專用晶元,大量生產。在西方 經濟 發達國家,大量的語音識別產品已經進入市場和服務領域。一些用戶交機、電話機、手機已經包含了語音識別撥號功能,還有語音記事本、語音智能玩具等產品也包括語音識別與語音合成功能。人們可以通過電話網路用語音識別口語對話系統查詢有關的機票、 旅遊 、銀行信息,並且取得很好的結果。

語音識別是一門交叉學科,語音識別正逐步成為信息技術中人機介面的關鍵技術,語音識別技術與語音合成技術結合使人們能夠甩掉鍵盤,通過語音命令進行操作。語音技術的應用已經成為一個具有競爭性的新興高技術產業。

參考 文獻 :

[1]科大訊飛語音識別技術專欄. 語音識別產業的新發展. 企業 專欄.通訊世界,2007.2:(總l12期)

[2]任天平,門茂深.語音識別技術應用的進展.科技廣場.河南科技,2005.2:19-20

[3]俞鐵城.科大訊飛語音識別技術專欄.語音識別的發展現狀.企業專欄.通訊世界,2006.2 (總122期)

[4]陳尚勤等.近代語音識別.西安: 電子 科技大學出版社,1991

[5]王炳錫等.實用語音識別基礎.Practical Fundamentals of Speech Recognition.北京:國防 工業 出版社,2005

[6](美)L.羅賓納.語音識別基本原理.北京:清華大學出版社,1999

點擊下頁還有更多>>>淺談語音識別技術論文

3. 基於單片機的特定語音識別的DTW演算法 怎樣用C語言實現 跪求!

建議,非特定人語音識別晶元 LD3320,
或者索性 思索語音識別模塊V280,已經開發完畢,直接可以用了。

4. EMSR 具體含義是什麼

嵌入式漢語語音識別引擎
(Embedded Mandarin Speech Recognition Engine)

1. 語音識別技術簡介

從20世紀50年代的Bell實驗室的研究開始,語音識別技術經過了半個世紀的發展,科研工作者對此進行了孜孜不倦的研究。語音識別的參數經歷了共振峰分析、線性預測倒譜參數,到現獲得主流應用的MFCC倒譜參數,基本上是以短時譜估計為主的。識別演算法上,經歷了簡單的模版匹配、動態時間彎折,目前的主流方法是隱含馬爾科夫模型(HMM)。盡管也有學者對人工神經網路、支持向量機、遺傳演算法等進行了研究,但是其識別性能始終不能超越HMM。

目前,以HMM為基礎的語音識別理論體系已經基本成熟。換句話說,目前語音識別的理論研究基本上沒有什麼新意了。然而目前各種語音識別系統的性能卻仍然不能滿足自然對話的需要,這與得到廣泛應用和認可的文字識別的現狀形成了鮮明對比。種種證據表明,以倒譜參數和HMM為基礎的理論體系並沒有抓住語音識別技術的核心,這個理論所模仿的是人的嘴巴,而不是耳朵,更不是大腦。

不過,不要因此就把語音識別全盤否定。盡管HMM不是最優的,但它是可用的。在目前的技術條件下,HMM還是可以很好地解決一些語音識別的具體問題的。當然這需要我們把要求降低一點,適當配合,我們將看到,語音識別在有些場合十分適用,尤其是小詞表、短語語音識別系統的性能可以做得很高。

2. 嵌入式語音識別系統

HMM有很多種變形,具體實現時也有很多優化技巧。以個人計算機為平台的語音識別系統的模型以連續混合高斯HMM為主流,模型復雜、參數眾多,需要佔用大量的系統資源,包括硬碟、內存和CPU時間。而以MCU、DSP、SoC晶元為平台的嵌入式系統的資源有限,不可能將PC平台的語音識別系統簡單移植過來,必須要進行大量的模型簡化和演算法優化工作。

嵌入式語音識別主要有下面幾類:

特定人、小詞表:這是最簡單的語音識別演算法,多以DTW及其變形為主。使用前需要使用者對每個命令詞進行訓練,更換使用者需要重新訓練。
非特定人、小詞表:這類系統目前用途比較廣泛,詞表不大且固定,其模型參數是事先訓練好的,使用者不需訓練就可直接使用。優點是識別率很高,缺點是系統開發成本高,周期長,因為更換詞表需要重新訓練。
非特定人、動態詞表:這是一種最有應用前景的語音識別系統,使用前也不用訓練。雖然詞表也不大,但是可以隨時調整,只要輸入拼音串就可以改變詞表,因此適應性很強。
非特定人、大詞表:這種系統類似於PC上的高性能語音識別軟體,對系統資源要求高,即便是在PDA、PPC等資源較大的平台上實現也有難度。
3. EMSR簡介

EMSR就是一個高性能的嵌入式語音識別系統引擎。EMSR分四個子系統,分別對應上述四類應用。其中前三個子系統的核心代碼已經開發完畢,第四類則仍處於開發中。

EMSR的開發始於1996年,最初的EMSR-1為特定人、孤立詞識別系統,實際上是不分語種的。

在2001年,EMSR-2進入實用化。這是一種專用的語音識別演算法,由於對每個詞彙獨立建模和訓練,因此它實際上也是語種無關的。

2002年開始EMSR-3的開發,目前其性能已經可以超過EMSR-2。該引擎可以提供二次開發介面,方便開發各種不同的應用系統。由於EMSR-3採用漢語拼音為基元,用漢語語音庫進行訓練,因此該系統主要面向漢語普通話使用者。

目前正在開發的EMSR-4仍然是孤立詞識別系統,但是它支持超大詞庫,類似於基於鍵盤的漢字輸入法。該系統非常適合手機簡訊的語音輸入。

4. EMSR性能

EMSR引擎的特點是識別率高、資源佔用小、運行速度快。EMSR的演算法以定點DSP運算為基礎進行了優化,模型也在不降低識別率的前提下做了壓縮和定點化,整個代碼短小緊湊、效率極高。

以EMSR-3為例,在ADSP-218x定點DSP晶元上實現,識別部分佔用的程序空間和數據空間合計不到64K位元組;語音參數的提取僅需2MIPS;詞表為100時,平均響應時間<0.8S。

運行EMSR-3的ADSP-218x模塊提供串列口介面,用戶可以方便地通過RS232介面發送命令控制模塊的工作、修改詞表。

5. EMSR移植

目前EMSR已經下面平台上進行了實現:

ADSP-218X:定點16位DSP
ARM7TDMI:無任何加速的ARM7內核
BF53x:ADI的新一代高速定點16位DSP
SPL162002/2003:凌陽增強型16位單片機
Windows Mobile 6.x, 5.0, 2003se的智能手機
Palm OS智能手機
由於EMSR提供完整的定點C代碼,系統可以方便地向其它平台上移植。

6. 其它技術

為了構成一個完整、實用的語音識別系統,還可提供如下技術:
用於語音提示的語音編解碼演算法
一般雜訊環境下的維納濾波語音增強技術
較強雜訊環境下的話筒陣列語音增強技術
超強雜訊環境下的抗雜訊話筒

5. 語音識別技術的基本方法

一般來說,語音識別的方法有三種:基於聲道模型和語音知識的方法、模板匹配的方法以及利用人工神經網路的方法。 該方法起步較早,在語音識別技術提出的開始,就有了這方面的研究,但由於其模型及語音知識過於復雜,現階段沒有達到實用的階段。
通常認為常用語言中有有限個不同的語音基元,而且可以通過其語音信號的頻域或時域特性來區分。這樣該方法分為兩步實現:
第一步,分段和標號
把語音信號按時間分成離散的段,每段對應一個或幾個語音基元的聲學特性。然後根據相應聲學特性對每個分段給出相近的語音標號
第二步,得到詞序列
根據第一步所得語音標號序列得到一個語音基元網格,從詞典得到有效的詞序列,也可結合句子的文法和語義同時進行。 模板匹配的方法發展比較成熟,目前已達到了實用階段。在模板匹配方法中,要經過四個步驟:特徵提取、模板訓練、模板分類、判決。常用的技術有三種:動態時間規整(DTW)、隱馬爾可夫(HMM)理論、矢量量化(VQ)技術。
1、動態時間規整(DTW)
語音信號的端點檢測是進行語音識別中的一個基本步驟,它是特徵訓練和識別的基礎。所謂端點檢測就是在語音信號中的各種段落(如音素、音節、詞素)的始點和終點的位置,從語音信號中排除無聲段。在早期,進行端點檢測的主要依據是能量、振幅和過零率。但效果往往不明顯。60年代日本學者Itakura提出了動態時間規整演算法(DTW:DynamicTimeWarping)。演算法的思想就是把未知量均勻的升長或縮短,直到與參考模式的長度一致。在這一過程中,未知單詞的時間軸要不均勻地扭曲或彎折,以使其特徵與模型特徵對正。
2、隱馬爾可夫法(HMM)
隱馬爾可夫法(HMM)是70年代引入語音識別理論的,它的出現使得自然語音識別系統取得了實質性的突破。HMM方法現已成為語音識別的主流技術,目前大多數大詞彙量、連續語音的非特定人語音識別系統都是基於HMM模型的。HMM是對語音信號的時間序列結構建立統計模型,將之看作一個數學上的雙重隨機過程:一個是用具有有限狀態數的Markov鏈來模擬語音信號統計特性變化的隱含的隨機過程,另一個是與Markov鏈的每一個狀態相關聯的觀測序列的隨機過程。前者通過後者表現出來,但前者的具體參數是不可測的。人的言語過程實際上就是一個雙重隨機過程,語音信號本身是一個可觀測的時變序列,是由大腦根據語法知識和言語需要(不可觀測的狀態)發出的音素的參數流。可見HMM合理地模仿了這一過程,很好地描述了語音信號的整體非平穩性和局部平穩性,是較為理想的一種語音模型。
3、矢量量化(VQ)
矢量量化(VectorQuantization)是一種重要的信號壓縮方法。與HMM相比,矢量量化主要適用於小詞彙量、孤立詞的語音識別中。其過程是:將語音信號波形的k個樣點的每一幀,或有k個參數的每一參數幀,構成k維空間中的一個矢量,然後對矢量進行量化。量化時,將k維無限空間劃分為M個區域邊界,然後將輸入矢量與這些邊界進行比較,並被量化為「距離」最小的區域邊界的中心矢量值。矢量量化器的設計就是從大量信號樣本中訓練出好的碼書,從實際效果出發尋找到好的失真測度定義公式,設計出最佳的矢量量化系統,用最少的搜索和計算失真的運算量,實現最大可能的平均信噪比。
核心思想可以這樣理解:如果一個碼書是為某一特定的信源而優化設計的,那麼由這一信息源產生的信號與該碼書的平均量化失真就應小於其他信息的信號與該碼書的平均量化失真,也就是說編碼器本身存在區分能力。
在實際的應用過程中,人們還研究了多種降低復雜度的方法,這些方法大致可以分為兩類:無記憶的矢量量化和有記憶的矢量量化。無記憶的矢量量化包括樹形搜索的矢量量化和多級矢量量化。 利用人工神經網路的方法是80年代末期提出的一種新的語音識別方法。人工神經網路(ANN)本質上是一個自適應非線性動力學系統,模擬了人類神經活動的原理,具有自適應性、並行性、魯棒性、容錯性和學習特性,其強的分類能力和輸入-輸出映射能力在語音識別中都很有吸引力。但由於存在訓練、識別時間太長的缺點,目前仍處於實驗探索階段。
由於ANN不能很好的描述語音信號的時間動態特性,所以常把ANN與傳統識別方法結合,分別利用各自優點來進行語音識別。

6. 機器人的內部感測器有哪些外部感測器有哪些

內部感測器有:檢測位置和角度的感測器。

外部感測器有:物體識別感測器、物體探傷感測器、接近覺感測器、距離感測器、力覺感測器,聽覺感測器等。

1、內部感測器:用來檢測機器人本身狀態(如手臂間角度)的感測器。

2、外部感測器:用來檢測機器人所處環境(如是什麼物體,離物體的距離有多遠等)及狀況(如抓取的物體是否滑落)的感測器。

(6)dtw語音識別演算法擴展閱讀

主要感測器

1、力覺

檢測內容:機器人有關部件(如手指)所受外力及轉矩。

應用目的:控制手腕移動,伺服控制,正解完成作業。

感測器件:應變片、導電橡膠。

2、接近覺

檢測內容:對象物是否接近,接近距離,對象面的傾斜。

應用目的:控制位置,尋徑,安全保障,異常停止。

感測器件:光感測器、氣壓感測器、超聲波感測器、電渦流感測器、霍爾感測器。

7. 翻譯 。成英文的。。。。

隨著時代的發展,人們越來越注重生活的品質。便捷時尚成為當代人們的追求目標。現在,語音信號處理的技術趨於完善,語音識別技術的應用有兩個發展方向:一個是大詞彙量連續語音識別系統,主要應用於計算機的聽寫輸入等;另一個是小型化﹑攜帶型語音模塊的應用,如手機的撥號﹑汽車設備的語音控制等方面的應用,這些應用大多都需要使用硬體實現。

With the development of The Times, people pay more and more attention to the quality of the life. Convenient fashion become the contemporary people's pursuit of the goal. Now, the speech signal processing technology, perfect speech recognition technology application has two development direction: a large vocabulary continuous speech recognition system, mainly applies in the computer's dictation input, etc.; Another is miniaturization, portable speech mole of applications, such as mobile phone dialer, auto equipment voice control of the application, these applications are mostly need to use hardware implementation.

在此次課程設計中,我們引用現今較為成熟的語音信號處理技術,設計一個簡單的非實時語音信號識別系統。其主要技術指標是識別率和計算量,其關鍵是特徵參數的提取和模式識別方法。測試模板將預先錄制好的0-9的語音文件用按鍵方式輸入,經過A/D轉換晶元0809後轉化為數字信號,在單片機AT89C52中,先用端點檢測將語音中有用的語音部分提取出來(即將頭部和尾部的靜音部分除掉),然後用LPC演算法提取語音信號的特徵參數,進行動態歸整(DTW演算法)後與模板庫裡面的標准語音作比較,最後將識別結果進行D/A轉化後播放出來。 本文將以一個能識別數字0~9的語音識別系統的實現過程為例,闡述了基於DTW演算法的特定人孤立詞語音識別的基本原理和關鍵技術。其中包括對語音端點檢測方法、特徵參數計算方法和DTW演算法實現的詳細討論,最後給出了在Matlab下的編程方法和實驗結果。

In this course design, we quoted today a mature voice signal processing technology, design a simple the real-time speech signal recognition system. The main technical indexes is recognition rate and computational complexity, its key is feature parameters extraction and pattern recognition. Test template will advance the recorded audio file 0-9 with key way input, after A/D conversion chip after 0809 into digital signals, the microcontroller AT89C52 single, use first endpoint detection will be useful in part phonetic pronunciation is extracted from the head and tail (away), then mute the parts of speech signal LPC rules algorithm with extract the dynamic characteristic parameters, DTW algorithm) GuiZheng (after the standard pronunciation and template garage comparison, finally will identify results are D/A transformation broadcast out after. This paper will take a can identify the digits 0 ~ 9 the realization process of speech recognition system as an example, this paper expounds the DTW algorithm based on a person isolated words speech recognition of basic principle and key technology. Including speech endpoint detection methods, characteristics parameters calculation method and a detailed discussion of DTW algorithm, and finally presents the programming method in Matlab and experimental results.

8. 求助語音識別代碼的注釋,要每一句都寫明意思,謝謝

這個是完整的代碼,我自己的賬號發不了這么長,希望好心人幫忙注釋啊,非常感謝!!!

(1)端點檢測部分(vad):
function [x1,x2] = vad(x)

%語音信號x幅度歸一化到[-1,1]
x = double(x);
x = x / max(abs(x));

%常數設置
FrameLen = 240; %幀長度為240
FrameInc = 80; %幀移為80
amp1 = 10; %短時能量高門限10
amp2 = 2; %短時能量低門限為2
zcr1 = 10; %短時過零率高門限為10
zcr2 = 5; %短時過零率低門限為5
maxsilence =3;%靜音時間門限3*10ms= 30ms
minlen= 15;%最小語音時間長度15*10ms = 150ms
status= 0; %
count= 0; %語音時間累計
silence = 0; %靜音時間累計

%計算過零率
tmp1= enframe(x(1:end-1), FrameLen, FrameInc);
tmp2= enframe(x(2:end), FrameLen, FrameInc);
signs =(tmp1.*tmp2)<0;%符號數組,用於存儲相鄰兩個采樣點符號是否相同,即是否穿越0電平
diffs = (tmp1-tmp2)>0.02;%度量相鄰兩個采樣點之間距離,如果大於門限0.02(經驗值),則1,否則0
zcr = sum(signs.*diffs,2);%過零率

%計算短時能量
amp =sum(abs(enframe(filter([1 -0.9375], 1, x), FrameLen, FrameInc)), 2);

%調整能量門限
amp1 = min(amp1,max(amp)/4);
amp2 = min(amp2,max(amp)/8);

%開始端點檢測
x1 = 0;
x2 = 0;
for n=1:length(zcr)
goto = 0;
switch status
case {0,1}% 0 =靜音, 1 =可能開始
if amp(n) > amp1%確信進入語音段
x1 = max(n-count-1,1);
status= 2;
silence = 0;
count= count + 1;
elseif amp(n) > amp2 || ... %可能處於語音段
zcr(n) > zcr2
status = 1;
count= count + 1;
else%靜音狀態
status= 0;
count= 0;
end
case 2,% 2 =語音段
if amp(n) > amp2 || ...%保持在語音段
zcr(n) > zcr2
count = count + 1;
else%語音將結束
silence = silence+1;
if silence < maxsilence %靜音還不夠長,尚未結束
count= count + 1;
elseif count < minlen%語音長度太短,認為是雜訊
status= 0;
silence = 0;
count= 0;
else%語音結束
status= 3;
end
end
case 3,
break;
end
end

count = count-silence/2;
x2 = x1 + count -1;

subplot(311)
plot(x)
axis([1 length(x) -1 1])
xlabel('語音信號');
line([x1*FrameIncx1*FrameInc ],[-1,1],'Color','red');
line([x2*FrameIncx2*FrameInc ],[-1,1],'Color','red');

subplot(312)
plot(amp);
axis([1 length(amp) 0max(amp)])
xlabel('短時能量');
line([x1,x1],[min(amp),max(amp)],'Color','red');
line([x2,x2],[min(amp),max(amp)],'Color','red');

subplot(313)
plot(zcr);
axis([1 length(zcr) 0max(zcr)])
xlabel('過零率');
line([x1,x1],[min(zcr),max(zcr)],'Color','red');
line([x2,x2],[min(zcr),max(zcr)],'Color','red');

(2)MFCC部分:
function ccc = mfcc(x)
%歸一化mel濾波器組系數
bank=melbankm(24,256,8000,0,0.5,'m');%24濾波器個數,8000采樣頻率
bank=full(bank);
bank=bank/max(bank(:));

% DCT系數,12*24
for k=1:12
n=0:23;
dctcoef(k,:)=cos((2*n+1)*k*pi/(2*24));
end

%歸一化倒譜提升窗口
w = 1 + 6 * sin(pi *(1:12) ./ 12);
w = w/max(w);

%預加重濾波器
xx=double(x);
xx=filter([1-0.9375],1,xx);

%語音信號分幀,xx是輸入語音信號;256是幀長;80是幀移
xx=enframe(xx,256,80);

%計算每幀的MFCC參數
for i=1:size(xx,1)
y = xx(i,:);
s = y' .* hamming(256);%加漢明窗
t = abs(fft(s));%fft變換
t = t.^2;
c1=dctcoef * log(bank * t(1:129));
c2 = c1.*w';
m(i,:)=c2';
end

%差分系數
dtm = zeros(size(m));
for i=3:size(m,1)-2
dtm(i,:) = -2*m(i-2,:) - m(i-1,:) + m(i+1,:)+ 2*m(i+2,:);
end
dtm = dtm / 3;

%合並mfcc參數和一階差分mfcc參數
ccc = [m dtm];
%去除首尾兩幀,因為這兩幀的一階差分參數為0
ccc =ccc(3:size(m,1)-2,:);

(3)dtw計算部分:
function dist = dtw2(test, ref)
global x y_min y_max
global t r
global D d
global m n

t = test;
r = ref;
n = size(t,1);
m = size(r,1);

d = zeros(m,1);
D =ones(m,1) *realmax;
D(1) = 0;

%如果兩個模板長度相差過多,匹配失敗
if (2*m-n<3) || (2*n-m<2)
dist =realmax;
return
end

%計算匹配區域
xa = round((2*m-n)/3);
xb = round((2*n-m)*2/3);

if xb>xa
%xb>xa,按下面三個區域匹配
%1:xa
%xa+1:xb
%xb+1:N
for x =1:xa
y_max= 2*x;
y_min= round(0.5*x);
warp
end
for x =(xa+1):xb
y_max= round(0.5*(x-n)+m);
y_min= round(0.5*x);
warp
end
for x =(xb+1):n
y_max= round(0.5*(x-n)+m);
y_min= round(2*(x-n)+m);
warp
end
elseif xa>xb
%xa>xb,按下面三個區域匹配
%0:xb
%xb+1:xa
%xa+1:N
for x =1:xb
y_max= 2*x;
y_min= round(0.5*x);
warp
end
for x =(xb+1):xa
y_max= 2*x;
y_min= round(2*(x-n)+m);
warp
end
for x =(xa+1):n
y_max= round(0.5*(x-n)+m);
y_min= round(2*(x-n)+m);
warp
end
elseif xa==xb
%xa=xb,按下面兩個區域匹配
%0:xa
%xa+1:N
for x =1:xa
y_max= 2*x;
y_min= round(0.5*x);
warp
end
for x =(xa+1):n
y_max= round(0.5*(x-n)+m);
y_min= round(2*(x-n)+m);
warp
end
end

%返回匹配分數
dist = D(m);

function warp
global x y_min y_max
global t r
global D d
global m n

d = D;
for y = y_min:y_max
D1 = D(y);
if y>1
D2= D(y-1);
else
D2 =realmax;
end
if y>2
D3= D(y-2);
else
D3 = realmax;
end
d(y) =sum((t(x,:)-r(y,:)).^2) + min([D1,D2,D3]);
end

D = d;

(4)測試函數testdtw部分;
disp('正在計算參考模板的參數...')
for i=1:10
fname = sprintf('G:\\石東東\\語音\\%da.wav',i-1);
x = wavread(fname);
[x1 x2] = vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
ref(i).mfcc = m;
end

disp('正在計算測試模板的參數...')
for i=1:10
fname = sprintf('G:\\石東東\\語音\\%db.wav',i-1);
x = wavread(fname);
[x1 x2] = vad(x);
m = mfcc(x);
m = m(x1-2:x2-2,:);
test(i).mfcc = m;
end

disp('正在進行模板匹配...')
dist = zeros(10,10);
for i=1:10
for j=1:10
dist(i,j) = dtw2(test(i).mfcc, ref(j).mfcc);
end
end

disp('正在計算匹配結果...')
for i=1:10
[d,j] = min(dist(i,:));
fprintf('測試模板%d的識別結果為:%d\n', i-1, j-1);
end

9. 時間序列分析——DTW演算法詳解

DTW(dynamic time warping)是時間序列分析中一個很早(1994年,論文的年紀比我都大)也很經典的演算法了。它其實借用的是經典演算法的「動態規劃」的思想。一般來說,時間序列數據如果要做分類,那麼大體可以將實驗步驟分為:數據預處理(去噪或數據增強),數據表徵,選取分類器(機器學習演算法還需要選取合適的距離計算方法)。雖然DTW演算法也給出了路徑,但我實在想不出如何利用path,因此我更傾向於將DTW演算法歸為距離計算方法。

第一部分Introction不再介紹。直接介紹第二部分:Dynamic Time Warping

作者首先提到,dtw演算法成功應用在了語音識別領域——研究者將現實中一個單詞的發音(其實就是一條時間序列)與模板庫中單詞的發音去一個個匹配。怎麼衡量匹配程度的大小呢?

閱讀全文

與dtw語音識別演算法相關的資料

熱點內容
壓縮文件怎麼設置打開加密 瀏覽:756
tracert命令結果詳解 瀏覽:350
唯賽思通用什麼APP 瀏覽:371
古玩哪個app好賣 瀏覽:146
u盤內容全部顯示為壓縮包 瀏覽:517
編譯固件時使用00優化 瀏覽:356
速借白條app怎麼樣 瀏覽:756
用紙張做的解壓東西教程 瀏覽:12
求圓的周長最快演算法 瀏覽:190
安卓熱點怎麼減少流量 瀏覽:270
北京代交社保用什麼app 瀏覽:855
第一眼解壓視頻 瀏覽:726
文件夾err是什麼 瀏覽:97
qt4編程pdf 瀏覽:572
區域網伺服器下如何連續看照片 瀏覽:254
經過加密的數字摘要 瀏覽:646
加密鎖9000變列印機 瀏覽:694
程序員的職業發展前途 瀏覽:639
安卓是世界上多少個程序員開發 瀏覽:45
解壓器官方免費 瀏覽:85