使用動態時間校正演算法於國語數字語者...

67
使用動態時間校正演算法於國語數字語者 辨識系統之研究 Using the Method of Dynamic Time Warping to Speaker Identification of Mandarin Digits 研究生:張恆誌 指導教授:陳昭宏博士 義守大學 電子工程學系 碩士班碩士論文 A Thesis Submitted to Department of Electronic Engineering I-Shou University in Partial Fulfillment of the Requirements for the Master degree with a Major in Electronic Engineering June,2011 Kaohsiung, Taiwan Republic of China 中華民國 一百

Upload: others

Post on 12-Oct-2019

8 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

使用動態時間校正演算法於國語數字語者

辨識系統之研究

Using the Method of Dynamic Time Warping to Speaker

Identification of Mandarin Digits

研究生張恆誌

指導教授陳昭宏博士

義守大學

電子工程學系

碩士班碩士論文

A Thesis Submitted to

Department of Electronic Engineering I-Shou University

in Partial Fulfillment of the Requirements

for the Master degree with a

Major in Electronic Engineering June2011

Kaohsiung Taiwan Republic of China

中華民國 一百 年 六 月

I

使用動態時間校正演算法於國語數字語者

辨識系統之研究

研究生張恆誌 指導教授陳昭宏 博士

義守大學電子工程研究所

摘要

本文是探討如何以 MATLAB 為平台建立一套中文數字的語者辨識系統藉此系統辨

識出語者的身分以及所說密碼是否正確目前的語音辨識可分為語者辨識(Speech

Identify)和語意辨識(Speech Recognition)兩種顧名思義前者是辨識輸入者的身分

後者則是語音的內容本研究期盼建立一套辨識系統不但具有語者辨識的功能並且

能辨識所說的數字

在本論文中我們將錄製好的語音資料庫進行前置處理並且求得能代表語音的特

徵參數本文使用梅爾倒頻譜參數以及頻譜的共振峰參數來做為特徵並且在後續進行

比較將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完

成最後採用 DTW ( Dynamic Time Warping)「動態時間校正」演算法進行語音模型的

比對得到辨識結果

在實驗中我們設計了各種不同狀況的實驗有類似門禁系統的語者辨識實驗針

對語意辨識的辨識數字實驗及探討連音與斷字對辨識率影響的實驗過程中加入了不同

的特徵值來做交叉比較我們由實驗結果發現本系統對於語者的辨識效果極佳但是針

對語意的辨識僅能達到八成而在語音資料庫方面使用單音字(Isolated Word)的語音資

料其辨識效果比連續的語音(Continuous Speech)資料要高出 10的正確率其中使

用梅爾倒頻譜為特徵值來進行語者辨識其辨識準確度達到 942

關鍵字語者辨識梅爾倒頻譜共振峰語音模型

II

Using the Method of Dynamic Time Warping to Speaker

Identification of Mandarin Digits

StudentHeng-Chih Chang AdvisorChao-Hung Chen

Department of Electronic Engineering I-Shou University

ABSTRSCT

This thesis is to study how to establish a Mandarin numeral speech identification system

using MATLAB as a portal by which the system users would be able to identify speakersrsquo

identity and the accuracy of their spoken codes

The current human speech voice identification systems are as follows Speech

Identification and Speech Recognition the former dealing with the identity of the voice

processed the latter dealing with the voice itself

We pre-processed some recorded acoustic data bank then obtain featured parameters

This thesis used Mel-Frequency Cepstrum parameters and formants as its featured ones Then

a comparison is made

Those processed featured parameters would undergo a hidden Marcov Model Training

assisting completing the set up of a sample data bank Finally we adopted DTW(Dynamic

Time Warping)calculation to map those acoustic models to obtain identification or

recognition results

During the process of this experiment we design various situations where we conducted

a speaker identification device similar to ldquothe entrance guardrdquo And one experiment focused on

recognizing

Numerals and another on how linking sounds and cutting short words influenced

recognition rates

We added various featured parameters to cross-compare the results and found adopting

this system we had had a better speaker identification while we came to eighty percent when

we come to speech recognition

Examining the voice data bank our research shows the recognition rate when using

isolated words is ten percent higher than that using continuous speech Among all those

calculations the device adopting Mel-Frequency Cepstrum as its featured parameters comes

to a recognition rate of 942

Keyword Speaker Recognition Mel-Frequency Cepstrum Formant Model

III

致謝

看著手中的論文逐漸完成這才發現原來研究生的生涯即將劃下美麗的句點回首

初來義守時的不安雖然已有六年之久卻感恍如昨日在撰寫致謝時這四年大學及兩

年來研究所的點點滴滴如同電影情節般歷歷在目頓時五味雜陳久久不能自己那份

悸動除了感謝難以言喻

論文能夠順利完成非常感謝恩師陳昭宏教授兩年來的春風化雨讓曾經桀傲不訓的

我有著脫胎換骨的轉變古有云「師者傳道授業解惑也」在研究上無論是程式編

寫的討論又或理論知識的傳授老師都能毫不保留的傾囊相授哪怕只是很基礎的問

題老師也會不厭其煩的悉心教導不會讓我有覺得害怕被罵而不敢去問老師問題的狀

況發生這也讓許多同儕稱羨

使我受盛良深的不僅僅只在研究上對於一個成長於「萬般皆下品惟有讀書高」家

庭的我來說就像瞎子吃湯圓冷暖自知也因此對於唸書是很排斥的在研究所的兩年

間很幸運的碰到陳昭宏老師讓我不再渾渾噩噩的過日子也真正學到了很多東西

無論是做人的道理工作的態度或是遇到問題的處理能力也讓我找到許多失去的東

西其中最重要的我想應該是-自信

非常感謝同窗的好友伯丞勇全在這段日子裡陪伴我成長並且進行語音資料庫

的建立時能兩肋插刀這段革命感情不是三言兩語可以形容以及感謝學弟哲豪鴻軒

的幫助無論是搭便車去研討會又或是實驗室的管理等不勝枚舉也非常感謝豐御能常

常與我討論研究上的問題感謝 3921 研究室的全體同仁在這段日子裡的陪伴

感謝電算中心的惠文振益妙姿良睿李大哥金鳳姐以及工程師因為有

你們讓我學到很多工作上應有的態度並感謝你們的照顧無論是活動的規劃電腦

教室的管理遇到故障如何處理等等讓我受益良多

感謝我的父母默默的付出給我衣食無缺能專心唸書的環境讓我能順利完成學

業最後感謝口試委員陳金塔教授及蘇義明教授撥空親臨惠予寶貴意見與匡正使

本論文能更臻完善

要感謝的人限於篇幅無法逐一列出但是恆誌對你們的感謝銘感五內最後僅

將本篇論文獻給所有一起成長的大家

張恆誌 謹致

中華民國一年六月

義守大學電子研究所

IV

目錄

摘要 I

ABSTRSCT II

致謝 III

目錄 IV

表目錄 VI

圖目錄 VII

第 1章 緒論 1

11 研究背景與文獻回顧 1

12 研究動機與目的 2

13 語音辨識的研究種類 3

14 論文架構 3

第 2章 語音辨識的基礎原理 4

21 前言 4

22 前置處理理論 5

23 訓練語音模型 11

24 比對樣本 12

241 維特比演算法 12

242 DTW 演算法 13

第 3章 辨識系統理論 14

31 前言 14

32 前置處理及求取語音特徵參數 16

321 端點偵測器的設計 16

322 特徵參數- MFCC 20

323 特徵參數- Formant 22

33 語音模型的建立 25

331 K-means Clustering 分群演算法 25

332 隱藏式馬可夫模型 26

34 語音模型的比對 28

341 DTW 28

第 4章 辨識系統的建立 30

41 前言 30

42 前置處理系統 31

421 前置處理系統架構 31

422 端點偵測器架構 32

423 特徵參數求取 34

43 演算法系統 37

V

431 訓練語料 37

432 建立語音模型 39

433 比對語音模型 41

第 5章 實驗結果與比較分析 43

51 實驗系統介紹 43

52 類似門禁系統的語者辨識實驗 43

521 語音資料庫 44

522 使用不同特徵值的辨識結果 44

523 辨識結果分析 44

53 不特定語者的數字辨識實驗 47

531 語音資料庫 47

532 使用不同特徵值的辨識結果 48

531 辨識結果分析 48

54 連音和斷字的語音辨識實驗 49

541 語音資料庫 49

542 使用不同特徵值的辨識結果 50

543 辨識結果分析 50

55 語音辨識實驗結果統計 52

第 6章 結論與未來展望 54

61 結論 54

62 未來展望 55

參考文獻 56

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 2: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

I

使用動態時間校正演算法於國語數字語者

辨識系統之研究

研究生張恆誌 指導教授陳昭宏 博士

義守大學電子工程研究所

摘要

本文是探討如何以 MATLAB 為平台建立一套中文數字的語者辨識系統藉此系統辨

識出語者的身分以及所說密碼是否正確目前的語音辨識可分為語者辨識(Speech

Identify)和語意辨識(Speech Recognition)兩種顧名思義前者是辨識輸入者的身分

後者則是語音的內容本研究期盼建立一套辨識系統不但具有語者辨識的功能並且

能辨識所說的數字

在本論文中我們將錄製好的語音資料庫進行前置處理並且求得能代表語音的特

徵參數本文使用梅爾倒頻譜參數以及頻譜的共振峰參數來做為特徵並且在後續進行

比較將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完

成最後採用 DTW ( Dynamic Time Warping)「動態時間校正」演算法進行語音模型的

比對得到辨識結果

在實驗中我們設計了各種不同狀況的實驗有類似門禁系統的語者辨識實驗針

對語意辨識的辨識數字實驗及探討連音與斷字對辨識率影響的實驗過程中加入了不同

的特徵值來做交叉比較我們由實驗結果發現本系統對於語者的辨識效果極佳但是針

對語意的辨識僅能達到八成而在語音資料庫方面使用單音字(Isolated Word)的語音資

料其辨識效果比連續的語音(Continuous Speech)資料要高出 10的正確率其中使

用梅爾倒頻譜為特徵值來進行語者辨識其辨識準確度達到 942

關鍵字語者辨識梅爾倒頻譜共振峰語音模型

II

Using the Method of Dynamic Time Warping to Speaker

Identification of Mandarin Digits

StudentHeng-Chih Chang AdvisorChao-Hung Chen

Department of Electronic Engineering I-Shou University

ABSTRSCT

This thesis is to study how to establish a Mandarin numeral speech identification system

using MATLAB as a portal by which the system users would be able to identify speakersrsquo

identity and the accuracy of their spoken codes

The current human speech voice identification systems are as follows Speech

Identification and Speech Recognition the former dealing with the identity of the voice

processed the latter dealing with the voice itself

We pre-processed some recorded acoustic data bank then obtain featured parameters

This thesis used Mel-Frequency Cepstrum parameters and formants as its featured ones Then

a comparison is made

Those processed featured parameters would undergo a hidden Marcov Model Training

assisting completing the set up of a sample data bank Finally we adopted DTW(Dynamic

Time Warping)calculation to map those acoustic models to obtain identification or

recognition results

During the process of this experiment we design various situations where we conducted

a speaker identification device similar to ldquothe entrance guardrdquo And one experiment focused on

recognizing

Numerals and another on how linking sounds and cutting short words influenced

recognition rates

We added various featured parameters to cross-compare the results and found adopting

this system we had had a better speaker identification while we came to eighty percent when

we come to speech recognition

Examining the voice data bank our research shows the recognition rate when using

isolated words is ten percent higher than that using continuous speech Among all those

calculations the device adopting Mel-Frequency Cepstrum as its featured parameters comes

to a recognition rate of 942

Keyword Speaker Recognition Mel-Frequency Cepstrum Formant Model

III

致謝

看著手中的論文逐漸完成這才發現原來研究生的生涯即將劃下美麗的句點回首

初來義守時的不安雖然已有六年之久卻感恍如昨日在撰寫致謝時這四年大學及兩

年來研究所的點點滴滴如同電影情節般歷歷在目頓時五味雜陳久久不能自己那份

悸動除了感謝難以言喻

論文能夠順利完成非常感謝恩師陳昭宏教授兩年來的春風化雨讓曾經桀傲不訓的

我有著脫胎換骨的轉變古有云「師者傳道授業解惑也」在研究上無論是程式編

寫的討論又或理論知識的傳授老師都能毫不保留的傾囊相授哪怕只是很基礎的問

題老師也會不厭其煩的悉心教導不會讓我有覺得害怕被罵而不敢去問老師問題的狀

況發生這也讓許多同儕稱羨

使我受盛良深的不僅僅只在研究上對於一個成長於「萬般皆下品惟有讀書高」家

庭的我來說就像瞎子吃湯圓冷暖自知也因此對於唸書是很排斥的在研究所的兩年

間很幸運的碰到陳昭宏老師讓我不再渾渾噩噩的過日子也真正學到了很多東西

無論是做人的道理工作的態度或是遇到問題的處理能力也讓我找到許多失去的東

西其中最重要的我想應該是-自信

非常感謝同窗的好友伯丞勇全在這段日子裡陪伴我成長並且進行語音資料庫

的建立時能兩肋插刀這段革命感情不是三言兩語可以形容以及感謝學弟哲豪鴻軒

的幫助無論是搭便車去研討會又或是實驗室的管理等不勝枚舉也非常感謝豐御能常

常與我討論研究上的問題感謝 3921 研究室的全體同仁在這段日子裡的陪伴

感謝電算中心的惠文振益妙姿良睿李大哥金鳳姐以及工程師因為有

你們讓我學到很多工作上應有的態度並感謝你們的照顧無論是活動的規劃電腦

教室的管理遇到故障如何處理等等讓我受益良多

感謝我的父母默默的付出給我衣食無缺能專心唸書的環境讓我能順利完成學

業最後感謝口試委員陳金塔教授及蘇義明教授撥空親臨惠予寶貴意見與匡正使

本論文能更臻完善

要感謝的人限於篇幅無法逐一列出但是恆誌對你們的感謝銘感五內最後僅

將本篇論文獻給所有一起成長的大家

張恆誌 謹致

中華民國一年六月

義守大學電子研究所

IV

目錄

摘要 I

ABSTRSCT II

致謝 III

目錄 IV

表目錄 VI

圖目錄 VII

第 1章 緒論 1

11 研究背景與文獻回顧 1

12 研究動機與目的 2

13 語音辨識的研究種類 3

14 論文架構 3

第 2章 語音辨識的基礎原理 4

21 前言 4

22 前置處理理論 5

23 訓練語音模型 11

24 比對樣本 12

241 維特比演算法 12

242 DTW 演算法 13

第 3章 辨識系統理論 14

31 前言 14

32 前置處理及求取語音特徵參數 16

321 端點偵測器的設計 16

322 特徵參數- MFCC 20

323 特徵參數- Formant 22

33 語音模型的建立 25

331 K-means Clustering 分群演算法 25

332 隱藏式馬可夫模型 26

34 語音模型的比對 28

341 DTW 28

第 4章 辨識系統的建立 30

41 前言 30

42 前置處理系統 31

421 前置處理系統架構 31

422 端點偵測器架構 32

423 特徵參數求取 34

43 演算法系統 37

V

431 訓練語料 37

432 建立語音模型 39

433 比對語音模型 41

第 5章 實驗結果與比較分析 43

51 實驗系統介紹 43

52 類似門禁系統的語者辨識實驗 43

521 語音資料庫 44

522 使用不同特徵值的辨識結果 44

523 辨識結果分析 44

53 不特定語者的數字辨識實驗 47

531 語音資料庫 47

532 使用不同特徵值的辨識結果 48

531 辨識結果分析 48

54 連音和斷字的語音辨識實驗 49

541 語音資料庫 49

542 使用不同特徵值的辨識結果 50

543 辨識結果分析 50

55 語音辨識實驗結果統計 52

第 6章 結論與未來展望 54

61 結論 54

62 未來展望 55

參考文獻 56

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 3: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

II

Using the Method of Dynamic Time Warping to Speaker

Identification of Mandarin Digits

StudentHeng-Chih Chang AdvisorChao-Hung Chen

Department of Electronic Engineering I-Shou University

ABSTRSCT

This thesis is to study how to establish a Mandarin numeral speech identification system

using MATLAB as a portal by which the system users would be able to identify speakersrsquo

identity and the accuracy of their spoken codes

The current human speech voice identification systems are as follows Speech

Identification and Speech Recognition the former dealing with the identity of the voice

processed the latter dealing with the voice itself

We pre-processed some recorded acoustic data bank then obtain featured parameters

This thesis used Mel-Frequency Cepstrum parameters and formants as its featured ones Then

a comparison is made

Those processed featured parameters would undergo a hidden Marcov Model Training

assisting completing the set up of a sample data bank Finally we adopted DTW(Dynamic

Time Warping)calculation to map those acoustic models to obtain identification or

recognition results

During the process of this experiment we design various situations where we conducted

a speaker identification device similar to ldquothe entrance guardrdquo And one experiment focused on

recognizing

Numerals and another on how linking sounds and cutting short words influenced

recognition rates

We added various featured parameters to cross-compare the results and found adopting

this system we had had a better speaker identification while we came to eighty percent when

we come to speech recognition

Examining the voice data bank our research shows the recognition rate when using

isolated words is ten percent higher than that using continuous speech Among all those

calculations the device adopting Mel-Frequency Cepstrum as its featured parameters comes

to a recognition rate of 942

Keyword Speaker Recognition Mel-Frequency Cepstrum Formant Model

III

致謝

看著手中的論文逐漸完成這才發現原來研究生的生涯即將劃下美麗的句點回首

初來義守時的不安雖然已有六年之久卻感恍如昨日在撰寫致謝時這四年大學及兩

年來研究所的點點滴滴如同電影情節般歷歷在目頓時五味雜陳久久不能自己那份

悸動除了感謝難以言喻

論文能夠順利完成非常感謝恩師陳昭宏教授兩年來的春風化雨讓曾經桀傲不訓的

我有著脫胎換骨的轉變古有云「師者傳道授業解惑也」在研究上無論是程式編

寫的討論又或理論知識的傳授老師都能毫不保留的傾囊相授哪怕只是很基礎的問

題老師也會不厭其煩的悉心教導不會讓我有覺得害怕被罵而不敢去問老師問題的狀

況發生這也讓許多同儕稱羨

使我受盛良深的不僅僅只在研究上對於一個成長於「萬般皆下品惟有讀書高」家

庭的我來說就像瞎子吃湯圓冷暖自知也因此對於唸書是很排斥的在研究所的兩年

間很幸運的碰到陳昭宏老師讓我不再渾渾噩噩的過日子也真正學到了很多東西

無論是做人的道理工作的態度或是遇到問題的處理能力也讓我找到許多失去的東

西其中最重要的我想應該是-自信

非常感謝同窗的好友伯丞勇全在這段日子裡陪伴我成長並且進行語音資料庫

的建立時能兩肋插刀這段革命感情不是三言兩語可以形容以及感謝學弟哲豪鴻軒

的幫助無論是搭便車去研討會又或是實驗室的管理等不勝枚舉也非常感謝豐御能常

常與我討論研究上的問題感謝 3921 研究室的全體同仁在這段日子裡的陪伴

感謝電算中心的惠文振益妙姿良睿李大哥金鳳姐以及工程師因為有

你們讓我學到很多工作上應有的態度並感謝你們的照顧無論是活動的規劃電腦

教室的管理遇到故障如何處理等等讓我受益良多

感謝我的父母默默的付出給我衣食無缺能專心唸書的環境讓我能順利完成學

業最後感謝口試委員陳金塔教授及蘇義明教授撥空親臨惠予寶貴意見與匡正使

本論文能更臻完善

要感謝的人限於篇幅無法逐一列出但是恆誌對你們的感謝銘感五內最後僅

將本篇論文獻給所有一起成長的大家

張恆誌 謹致

中華民國一年六月

義守大學電子研究所

IV

目錄

摘要 I

ABSTRSCT II

致謝 III

目錄 IV

表目錄 VI

圖目錄 VII

第 1章 緒論 1

11 研究背景與文獻回顧 1

12 研究動機與目的 2

13 語音辨識的研究種類 3

14 論文架構 3

第 2章 語音辨識的基礎原理 4

21 前言 4

22 前置處理理論 5

23 訓練語音模型 11

24 比對樣本 12

241 維特比演算法 12

242 DTW 演算法 13

第 3章 辨識系統理論 14

31 前言 14

32 前置處理及求取語音特徵參數 16

321 端點偵測器的設計 16

322 特徵參數- MFCC 20

323 特徵參數- Formant 22

33 語音模型的建立 25

331 K-means Clustering 分群演算法 25

332 隱藏式馬可夫模型 26

34 語音模型的比對 28

341 DTW 28

第 4章 辨識系統的建立 30

41 前言 30

42 前置處理系統 31

421 前置處理系統架構 31

422 端點偵測器架構 32

423 特徵參數求取 34

43 演算法系統 37

V

431 訓練語料 37

432 建立語音模型 39

433 比對語音模型 41

第 5章 實驗結果與比較分析 43

51 實驗系統介紹 43

52 類似門禁系統的語者辨識實驗 43

521 語音資料庫 44

522 使用不同特徵值的辨識結果 44

523 辨識結果分析 44

53 不特定語者的數字辨識實驗 47

531 語音資料庫 47

532 使用不同特徵值的辨識結果 48

531 辨識結果分析 48

54 連音和斷字的語音辨識實驗 49

541 語音資料庫 49

542 使用不同特徵值的辨識結果 50

543 辨識結果分析 50

55 語音辨識實驗結果統計 52

第 6章 結論與未來展望 54

61 結論 54

62 未來展望 55

參考文獻 56

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 4: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

III

致謝

看著手中的論文逐漸完成這才發現原來研究生的生涯即將劃下美麗的句點回首

初來義守時的不安雖然已有六年之久卻感恍如昨日在撰寫致謝時這四年大學及兩

年來研究所的點點滴滴如同電影情節般歷歷在目頓時五味雜陳久久不能自己那份

悸動除了感謝難以言喻

論文能夠順利完成非常感謝恩師陳昭宏教授兩年來的春風化雨讓曾經桀傲不訓的

我有著脫胎換骨的轉變古有云「師者傳道授業解惑也」在研究上無論是程式編

寫的討論又或理論知識的傳授老師都能毫不保留的傾囊相授哪怕只是很基礎的問

題老師也會不厭其煩的悉心教導不會讓我有覺得害怕被罵而不敢去問老師問題的狀

況發生這也讓許多同儕稱羨

使我受盛良深的不僅僅只在研究上對於一個成長於「萬般皆下品惟有讀書高」家

庭的我來說就像瞎子吃湯圓冷暖自知也因此對於唸書是很排斥的在研究所的兩年

間很幸運的碰到陳昭宏老師讓我不再渾渾噩噩的過日子也真正學到了很多東西

無論是做人的道理工作的態度或是遇到問題的處理能力也讓我找到許多失去的東

西其中最重要的我想應該是-自信

非常感謝同窗的好友伯丞勇全在這段日子裡陪伴我成長並且進行語音資料庫

的建立時能兩肋插刀這段革命感情不是三言兩語可以形容以及感謝學弟哲豪鴻軒

的幫助無論是搭便車去研討會又或是實驗室的管理等不勝枚舉也非常感謝豐御能常

常與我討論研究上的問題感謝 3921 研究室的全體同仁在這段日子裡的陪伴

感謝電算中心的惠文振益妙姿良睿李大哥金鳳姐以及工程師因為有

你們讓我學到很多工作上應有的態度並感謝你們的照顧無論是活動的規劃電腦

教室的管理遇到故障如何處理等等讓我受益良多

感謝我的父母默默的付出給我衣食無缺能專心唸書的環境讓我能順利完成學

業最後感謝口試委員陳金塔教授及蘇義明教授撥空親臨惠予寶貴意見與匡正使

本論文能更臻完善

要感謝的人限於篇幅無法逐一列出但是恆誌對你們的感謝銘感五內最後僅

將本篇論文獻給所有一起成長的大家

張恆誌 謹致

中華民國一年六月

義守大學電子研究所

IV

目錄

摘要 I

ABSTRSCT II

致謝 III

目錄 IV

表目錄 VI

圖目錄 VII

第 1章 緒論 1

11 研究背景與文獻回顧 1

12 研究動機與目的 2

13 語音辨識的研究種類 3

14 論文架構 3

第 2章 語音辨識的基礎原理 4

21 前言 4

22 前置處理理論 5

23 訓練語音模型 11

24 比對樣本 12

241 維特比演算法 12

242 DTW 演算法 13

第 3章 辨識系統理論 14

31 前言 14

32 前置處理及求取語音特徵參數 16

321 端點偵測器的設計 16

322 特徵參數- MFCC 20

323 特徵參數- Formant 22

33 語音模型的建立 25

331 K-means Clustering 分群演算法 25

332 隱藏式馬可夫模型 26

34 語音模型的比對 28

341 DTW 28

第 4章 辨識系統的建立 30

41 前言 30

42 前置處理系統 31

421 前置處理系統架構 31

422 端點偵測器架構 32

423 特徵參數求取 34

43 演算法系統 37

V

431 訓練語料 37

432 建立語音模型 39

433 比對語音模型 41

第 5章 實驗結果與比較分析 43

51 實驗系統介紹 43

52 類似門禁系統的語者辨識實驗 43

521 語音資料庫 44

522 使用不同特徵值的辨識結果 44

523 辨識結果分析 44

53 不特定語者的數字辨識實驗 47

531 語音資料庫 47

532 使用不同特徵值的辨識結果 48

531 辨識結果分析 48

54 連音和斷字的語音辨識實驗 49

541 語音資料庫 49

542 使用不同特徵值的辨識結果 50

543 辨識結果分析 50

55 語音辨識實驗結果統計 52

第 6章 結論與未來展望 54

61 結論 54

62 未來展望 55

參考文獻 56

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 5: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

IV

目錄

摘要 I

ABSTRSCT II

致謝 III

目錄 IV

表目錄 VI

圖目錄 VII

第 1章 緒論 1

11 研究背景與文獻回顧 1

12 研究動機與目的 2

13 語音辨識的研究種類 3

14 論文架構 3

第 2章 語音辨識的基礎原理 4

21 前言 4

22 前置處理理論 5

23 訓練語音模型 11

24 比對樣本 12

241 維特比演算法 12

242 DTW 演算法 13

第 3章 辨識系統理論 14

31 前言 14

32 前置處理及求取語音特徵參數 16

321 端點偵測器的設計 16

322 特徵參數- MFCC 20

323 特徵參數- Formant 22

33 語音模型的建立 25

331 K-means Clustering 分群演算法 25

332 隱藏式馬可夫模型 26

34 語音模型的比對 28

341 DTW 28

第 4章 辨識系統的建立 30

41 前言 30

42 前置處理系統 31

421 前置處理系統架構 31

422 端點偵測器架構 32

423 特徵參數求取 34

43 演算法系統 37

V

431 訓練語料 37

432 建立語音模型 39

433 比對語音模型 41

第 5章 實驗結果與比較分析 43

51 實驗系統介紹 43

52 類似門禁系統的語者辨識實驗 43

521 語音資料庫 44

522 使用不同特徵值的辨識結果 44

523 辨識結果分析 44

53 不特定語者的數字辨識實驗 47

531 語音資料庫 47

532 使用不同特徵值的辨識結果 48

531 辨識結果分析 48

54 連音和斷字的語音辨識實驗 49

541 語音資料庫 49

542 使用不同特徵值的辨識結果 50

543 辨識結果分析 50

55 語音辨識實驗結果統計 52

第 6章 結論與未來展望 54

61 結論 54

62 未來展望 55

參考文獻 56

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 6: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

V

431 訓練語料 37

432 建立語音模型 39

433 比對語音模型 41

第 5章 實驗結果與比較分析 43

51 實驗系統介紹 43

52 類似門禁系統的語者辨識實驗 43

521 語音資料庫 44

522 使用不同特徵值的辨識結果 44

523 辨識結果分析 44

53 不特定語者的數字辨識實驗 47

531 語音資料庫 47

532 使用不同特徵值的辨識結果 48

531 辨識結果分析 48

54 連音和斷字的語音辨識實驗 49

541 語音資料庫 49

542 使用不同特徵值的辨識結果 50

543 辨識結果分析 50

55 語音辨識實驗結果統計 52

第 6章 結論與未來展望 54

61 結論 54

62 未來展望 55

參考文獻 56

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 7: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

VI

表目錄

表 1實驗設計 43

表 2語音資料庫內容 44

表 3辨識結果 44

表 4辨識結果分析 45

表 5實驗設計 47

表 6語音資料庫內容 47

表 7辨識結果 48

表 8辨識結果 48

表 9實驗設計 49

表 10語音資料庫內容 49

表 11辨識結果 50

表 12辨識結果分析 50

表 13實驗結果統計 52

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 8: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

VII

圖目錄

圖 1 切取音框示意圖 5

圖 2原始聲音訊號 6

圖 3MATLABSimulink 方塊圖 6

圖 4越零率=8 6

圖 5MATLABSimulink 方塊圖 7

圖 6前置處理流程圖 8

圖 7LPCC 模擬方塊圖 9

圖 9原始波形圖 14

圖 10將原始波形轉換成三種特徵值 15

圖 11將特徵值進行訓練成語音模型 15

圖 12能量偵測區的設計概念 16

圖 13能量偵測區 17

圖 14越零率偵測區的設計概念 17

圖 15越零率偵測區 18

圖 16端點偵測器示意圖 19

圖 17加權示意圖 20

圖 18梅爾濾波器示意圖 21

圖 19找出的共振峰頻段位置 22

圖 20紀錄共振峰的能量 22

圖 21共振峰頻段位置 23

圖 22共振峰能量分布 23

圖 23分群結果 26

圖 24三個狀態的隱藏式馬可夫模型 27

圖 25語音模型 27

圖 26 DTW 示意圖 29

圖 27前置處理系統 31

圖 28能量偵測區方塊圖 32

圖 29越零率偵測區方塊圖 33

圖 30特徵參數擷取區塊 34

圖 34語音訊號經過本系統分成若干狀態組成的序列 39

圖 35語音模型示意圖 39

圖 39共振峰誤判情形分析圖 45

圖 40梅爾誤判情形分析圖 46

圖 41使用斷字為語料的誤判情形 51

圖 42使用連訊音為語料的誤判情形 51

圖 43辨識結果 53

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 9: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

VIII

圖 44辨識結果 53

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 10: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

1

第1章 緒論

11 研究背景與文獻回顧

『聲音』是人與人之間最佳的溝通橋樑而用聲音和電腦溝通一直是人類不斷在努

力的目標隨著科技日新月異使得許多工作可以輕易的藉由電腦來完成但是對於資

料的輸入除了傳統的鍵盤滑鼠『語音輸入』將會是另外一種人性化的選擇從小孩

的聲控玩具甚至是手機所使用的聲控撥號甚至於最近的智慧型手機擁有的 Google Map

語音搜尋這一切的呈現都需要依賴『語音辨識』語音訊號處理用的越來越廣泛無

論是語音辨識語意辨識或是語音壓縮處理都很常出現在我們的生活中

而人們對於語音辨識最早的認識來自 1952 年一篇來自貝爾實驗室的論文[7]內

容描述一套數字辨識器自那時開始人們對於語音辨識的研究才漸漸開始當我們要辨

識語音之前必須先將語音訊號進行『辨識前處理』[13][28][27]藉由前置處理求取能

代表此語音訊號之『特徵值』若是特徵值取的好辨識效果將提高不少近年來有關

特徵值的研究很多包含了線性預估編碼(LPC)[5]線性預估編碼導出的倒頻譜參數

(LPCC)[10]梅爾倒頻譜參數(Mel-Frequency Cepstrum Coefficient - MFCC)[8]和共

振峰特徵參數(Formant)[1][11]其中關於共振峰的特徵是屬於最直接且較易分析的而

在辨識的技術上國內最常使用 HMM(Hidden Markov Model)[4][2][12][6][22][15]

類神經網路[20]等辨識方法而本次研究採用語音模型比對將語音的特徵訓練(Training)

成一串可以代表其特色的數學機率模型訓練的方法有高斯混合模型(GMM)[19]分群

(Clustering)[9]等至於模型的比對已經有許多方法包含維特比(Viterbi)演算法[23]

動態時間校正(Dynamic Time Warping -DTW)[24]和向量量化(Vector Quantization ndashVQ)

[3]因為有這些前人的研究相信不久的將來語音辨識將會更加成熟

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 11: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

2

12 研究動機與目的

『語音辨識』帶給人們最大的好處莫過於人性化不但可以節省大量的時間及人

力也可以幫助許多作業自動化透過語音資料的輸入對於不習慣使用鍵盤或是正在

執行手工操作的人(例如開車)來說可以免去手忙腳亂的情形銀行或信用卡中心使

用語音辨識則可提供效益最佳 24 小時的服務情治單位根據嫌犯的電話錄音從資料

庫挑出聲紋檔案以進行聲紋比對行動不便的或是不識字的爺爺奶奶也可利用聲控

的方式寫 e-mail無論是電腦電話家電門禁汽車玩具都可以跟語音辨識相結

合上述說明了語音辨識在未來的展望

本論文期盼藉由 MatlabSimulink 的平台來建立具高辨識率且能辨識數字的辨識環

境目前的語音辨識可分為語者辨識(Speech Identify)和語意辨識(Speech Recognition)

兩種顧名思義前者是辨識輸入者的身分後者則是語音的內容在語者辨識系統中雖

有高辨識率但各特定語者需花費大量語者訓練成本語意辨識則相對成本較少但辨

識率不高要如何做出「辨識數字」的平台且能提高辨識率則是本研究的目標最後我

們也設計了針對語者及數字的辨識來驗證本系統並且探討語音資料的類型對辨識率

的影響

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 12: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

3

13 語音辨識的研究種類

顧名思義「語音辨識」也就是將口語的信號經過處理來進行辨識但是根據功能

的不同在實現上有不同的難度我們將辨識的種類介紹如下

字數方面字數越多在辨認方面難度越高根據字數多寡大致可分為

1 特定字彙特定的字詞或是數字可用於密碼門禁系統

2 少量字彙如特定的 100 個左右的單字與詞彙

3 大量字彙沒有特定字彙

對於使用者的限制

1 特定語者(Speaker Dependence)辨識前需要針對特定人進行訓練

2 非特定語者(Speaker Independence)難度較高必須收集大量且具代表性的語音

參數來建立語音資料庫

語音資料是否連續

1 單字音(Isolated Word)所要辨識的字都得分開

2 連續語音辨識(Continuous Speech)以依班人平常說話的方式去發音且進行辨

識但是要考慮到語音的混因說話時的速度與習慣以及相連音的問題固難

度比單音要高

有關語音的發展領域以下述三種為主

1 語音合成使電腦發出人聲

2 語音辨識辨識說話的內容

3 語者辨識辨識說話者的身分

14 論文架構

本篇論文的架構如下

第一章緒論包含研究背景及動機語音辨識研究種類介紹

第二章語音訊號處理的基礎理論介紹詳細介紹語音辨識上的理論

第三章本篇論文所使用的理論介紹和程式設計概念介紹

第四章平台的建立和介紹

第五章實驗結果與分析

第六章結論與未來展望

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 13: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

4

第2章 語音辨識的基礎原理

21 前言

據研究中文的字音共有 1300 多種若不記四個聲調所造成的變化則有 408 種不

同的發音聲調則是由音頻變動所形成

本研究首先將語音訊號經由麥克風輸入利用類比數位將聲音轉存為電腦能讀取的

PCM 編碼再對其訊號做『辨識前處理』對於一段語音訊號前處理的方法大同小異

但是說穿了只是為了求取此語音訊號之『特徵』假設在一個短時間的音訊是穩定的

對此求取特徵如音量音高LPC 參數MFCC 參數共振峰參數等 根據過零率

音量等條件進行「端點偵測」並保留端點內的特徵資訊以便進行分析或辨識在

特徵值萃取方面我們將使用 LPCCMFCCFormant 等三種特徵值來進行後續的辨識

並且比較辨識度

再利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具將處理過

後之特徵參數依序進行隱藏式馬可夫模型之訓練訓練的過程使用 K-means 分群法

(k-means clustering)來建立狀態利用此狀態得出各語音訊號的隱藏式馬可夫模型

同樣方法將樣本庫建立完成後採用維特比(Viterbi)演算法找出一條最佳的狀態序列

用來得出狀態和音框的關係成為語音參考的『樣本』

語音辨識最後的工作就是『比對』在比對時將待測語音輸入電腦同樣的必須

對語音做前處理並且找出特徵值最後再與之前所訓練好的模型比對比對的時候使用

維特比演算法來計算語音的相似度並且找出最相似的語音藉以完成整個辨識的工作

語音辨識的整個過程主要分為以下三個部份

1 語音訊號的前置處理以及求取語音的特徵參數

2 訓練語音模型

3 比對語音模型

以下章節我們將對這三部份逐一介紹

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 14: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

5

22 前置處理理論

語音訊號的前置處理並求取語音的參數將聲音做『數位信號處理(Digit Signal

ProcessingDSP)』將類比訊號轉為數位方便電腦的讀取

因為每個人輸入的聲音大小不同為了使聲音大小都在同一範圍內做比較所以將聲音

做『標準化(Normalize)』使信號的取樣值都落在同一範圍內

切『音框』因為聲音屬於時變的訊號不過在『短時間』內的變化是緩慢的 所以若

將整段語音做切割的動作使語音變成一小段一小段那麼就可以擷取到語音的所有

特性這種每一小段稱為『音框(frame)』取音框時音框彼此可以重疉取樣點數

也可自訂我們這邊取 10ms 為一音框長度

聲音輸入的過程中因為種種因素造成語音的前後會有靜音出現這些靜音對於語音的

辨識不但沒有幫助而且也會增加許多不需要的計算使得辨識速度變慢所以我們使

用『能量偵測法』來切除靜音的部份藉以得到有效的資料值

圖 1 切取音框示意圖

『端點偵測』(End-Point Detection)聲音輸入的過程中因為種種因素造成語音的

前後會有靜音出現這些靜音對於語音的辨識不但沒有幫助而且也會增加許多不需要

的計算使得辨識速度變慢所以我們必須要切除不需要的部分藉以得到有效的資料

值我捫利用語音的特性來做端點的偵測的模擬由「音量」與「音高」著手使用「能

量偵測法」為主「越零率」為輔的方法來切除靜音的部份藉以得到有效的資料值

以下是我們的分析比較

音量代表聲音的強度能量(Energy)可以由音框內的訊號振幅大小來表示如圖 2

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 15: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

6

圖 2原始聲音訊號

一般而言語音的特性有聲音的音量大於氣音的音量而氣音的音量又大於雜訊

的音量我們就是利用這個語音特性來設計「能量偵測分析器」的端點偵測訂「門檻」

來做有聲和無聲的區隔當一音框能量大於門檻值為「有聲訊號」反之則為「氣音」

或「雜訊」

圖 3MATLABSimulink 方塊圖

越零率(Zero Crossing Rate)指在每個音框中音訊通過零點的次數可以代表聲

音的頻率如下圖越零率=8

圖 4越零率=8

一般而言語音的特性雜訊及氣音的越零率均大於有聲語音我捫利用這個語音

特性來設計「越零率」的端點偵測也是利用門檻值的方法來做有聲無聲的區隔當一

音框的越零率低於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」而在模擬軟體

matlabsimulink 中我捫利用這個概念設計門檻值=3 的越零率之偵測器如下圖 5

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 16: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

7

圖 5MATLABSimulink 方塊圖

『預強調(pre-emphasis)』因為根據研究聲音從嘴巴說出來後會有高頻的損失

所以使用遇強調來還原語音

『加窗』將切出來的全部音框做加窗動作也就是每個音框都乘上一個視窗函數

乘上函數後每一個音框在頻譜上的能量會更集中語音的特徵也能更明顯我們使用

的是『漢明視窗』下圖 6 為語音訊號前處理的流程圖

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 17: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

8

圖 6前置處理流程圖

完成上述 1~6 處理的工作後就可以開始求取『特徵參數』 我們將對四種求取的

方法(線性預估編碼(LPC)線性預估編碼導出的倒頻譜參數(LPCC)梅爾倒頻譜

參數(MFCC)和共振峰(Formant)做比較選出較好的參數來進行後續辯識的工作

倒頻譜(cepstrum)顧名思義就是將頻譜(spectrum)的英文前四個字母反過來

寫倒頻譜是為了某些時候為了計算方便將原來信號的頻譜先轉成類似分貝的單位

再作傅立葉變換把它視為一種新的訊號做處理倒頻譜有複數倒頻譜及實數倒頻譜

倒頻譜被定義在 1963 的論文(Bogert 等)定義如下

字義倒頻譜(信號)是信號頻譜取對數的傅立葉轉換後的新頻譜(信號)有時候會

稱頻譜的倒頻譜

數學上信號的倒頻譜 = )(2log 為實數訊號 mmjFFTFFT

演算法信號 傅立葉變換 取絕對值 取對數 相位展開 傅立葉轉換

倒頻譜

線性預估編碼(linear predictive coding-LPC)

「線性預估編碼」在語音辨識上已經被研究多年從人的發聲構造入手認為聲道模

型就如同濾波器而第 n 時刻的信號可以用前若干時刻的信號線性組合來估計通過實

1語音訊號輸入

2數位取樣

3取音框

4端點偵測

5特徵參數求取 LPC 線性預估編碼 梅爾倒頻譜參數 共振峰參數

6特徵參數輸出 到演算法系統進行後續處理

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 18: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

9

際語音的採樣值和線性預測採樣值之間達到均方差(LMS)最小即可得到線性預估係

數 LPC這種 LPC 的計算方法採自相關法(杜賓 Durbin 演算法)

我捫利用這個原理在語音訊號經過前面訊號前處理的步驟後將這些語音訊號的音框

一一做自相關(auto-correlation)演算求得 P 階的自相關係數(auto-correlation

coefficients)根據這些係數算出 P 階的線性預估係數不同的語音所得到的係數會不同

計算快速是 LPC 這種語音參數最大的優點

線性預估編碼導出的倒頻譜參數(LPCC)

利用 LPC 相同的處理方法再由倒頻譜公式求得線性預估導出的倒頻譜參數也就是

對 LPC 求取傅立葉轉換後取對數再求反傅立葉轉換就可得到 LPC 倒頻譜參數研究

發現使用倒頻譜可以提高特徵參數的穩定性

圖 7LPCC 模擬方塊圖

梅爾倒頻譜參數(mel-frequency cepstrum coefficient - MFCC)

梅爾頻率倒頻譜是倒頻譜的一種應用梅爾頻率倒頻譜常應用在聲音訊號處理對於聲

音訊號處理比倒頻譜更接近人耳對聲音的分析特性而梅爾頻率倒頻譜與倒頻譜的差別

在於

梅爾頻率倒頻譜的頻帶分析是根據人耳聽覺特性所設計人耳對於頻率的分辨能力是

由頻率的比值決定也就是說人耳對 200 赫茲和 300 赫茲之間的差別與 2000 赫茲

和 3000 赫茲之間的差別是相同的

梅爾頻率倒頻譜是針對訊號的能量取對數而倒頻譜是針對訊號原始在頻譜上的值取對

梅爾頻率倒頻譜是使用離散餘旋轉換倒頻譜是用離散傅立葉轉換

梅爾頻率倒頻譜係數足夠描述語音的特徵

下式(3)為梅爾刻度與頻率的轉換關係

頻率

f

ffmel )3(

7001log2592)(

我捫利用這種人耳的特性使用程式來模擬(低頻多取高頻少取)的梅爾濾波器如圖

11

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 19: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

10

圖 11MFCC 模擬方塊圖

共振峰參數(Formant)

「共振峰」一般語音訊號的母音部分都會出現重複性很高的基本週期在一個基本週

期內的波形就是代表語音的內容或音色一般來說頻譜能量的個數仍然太多因此

一個簡單的方式是採用頻譜能量圖的局部最大點稱為共振峰(Formants)來作為語

音特徵下圖 12 為本人念數字「一」之共振峰的 f1 f2 f3 頻段分佈情形

圖 12本人單音「1」共振峰的頻段 f1 f2 f3 分布圖

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 20: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

11

23 訓練語音模型

做語音辨識時由於無法拿所有的特徵參數直接來做比對所以必須建立語音模

型來當成比對時的樣本模型在各種不同的方法中如 HMM(Hidden Markov Model)

類神經網路Common Vector)我們選用隱藏式馬可夫模型的方法來訓練語音模型在

訓練模型時採用分群(Clustering)的方法來確定 HMM 裡面的狀態數分群時我們使

用 K-means 分群法(k-means clustering)其設計概念如下

1 先假設 27 個資料點將之分別視為群聚的群中心這就是 Y

2 由固定的 Y(群中心)產生最佳的 U(分群方式)換句話說對每一個資料點 x尋

找與之最接近的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以可以

結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

經由此分群演算法得到模型中狀態和音框間的關係這樣一來每段語音都可成為一串由

數個狀態組成的數學模型

圖 13語音分群示意圖

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 21: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

12

24 比對樣本

241 維特比演算法

有了語音的模型之後就可以進行比對了比對時利用待測語音輸入後同樣的將語

音進行前處理並找出每個音框的特徵值最後再和之前所訓練好的樣本模型做比對

在比對時也是使用維特比演算法來計算語音之間的相似度藉以找出最相似的語音

在訓練模型時求取總機率最大值的路徑是為了要確定因框和狀態的關係如下圖 14

所示不過在比對上此最大機率變成了待測與音和該模型的相似程度在這次的研究

中主要探討數字單音 0-9 的辨識故先將 0-9 的語音模型訓練出來後再拿欲辨識的

語音和模型使用維特比演算法比對找出機率最大的音便可以辨識出待測語音屬於哪個

語音了下圖為維特比演算法示意圖會找到一條最佳的路徑如紅色線段所示及為所

P11 P12 P13 P14 P15 P16 P17 P18 P19 P110 P111 P112 P113 hellip

狀態

音框 1 2 3 4 5 6 7 8 9 10 11 12 13 hellip i

P21 P22 P23 P24 P25 P26 P27 P28 P29 P210 P211 P212 P213 hellipP2i

P31 P32 P33 P34 P35 P36 P37 P38 P39 P310 P311 P312 P313 hellipP3i

P41 P42 P43 P44 P45 P46 P47 P48 P49 P410 P411 P412 P413 hellipP4i

P51 P52 P53 P54 P55 P56 P57 P58 P59 P510 P511 P512 P513 hellip

P61 P62 P63 P64 P65 P66 P67 P68 P69 P610 P611 P612 P613 hellipP6i

Pj1 Pj2 Pj3 Pj4 Pj5 Pj6 Pj7 Pj8 Pj9 Pj10 Pj11 Pj12

圖 8維特比示意圖

helliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphelliphellip

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 22: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

13

242 DTW 演算法

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離一般而言對於兩個 n 維空間中的向量 x 和 y它們之間的距離可以定義為兩

點之間的直線距離稱為歐基里得距離(Euclidean Distance) dist(x y) = |x - y|2

但是如果向量的長度不同那它們之間的距離就無法使用上述的數學式來計算一般

而言假設這兩個向量的元素位置都是代表時間由於我們必須容忍在時間軸的偏差

因此我們並不知道兩個向量的元素對應關係因此我們必須靠著一套有效的運算方法

才可以找到最佳的對應關係

假設有兩個向量 t 和 r長度分別是 m 和 n那麼 DTW 的目標就是要找到一組路

徑 (p1 q1) (p2 q2) (pk qk) 使得經由上述路徑的「點對點」對應距離和 Si=1k

t(pi) ∣ - r(qi) ∣ 為最小而且此路徑必須滿足下列條件

端點關係(p1 q1) = (1 1) (pk qk) = (m n)此端點關係代表這是「頭對頭尾對尾」

的比對

局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可能

(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的任一個元

素至少對應一個 r 的元素反之亦然

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 23: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

14

第3章 辨識系統理論

31 前言

在前面第二章已經將語音辨識的基礎理論做過介紹接下來在本章將著墨於本篇論

文使用的方法以及程式上設計的概念語音辨識上面方法眾多本論文中將取 MFCC

和 Formant 為特徵進行後續的比對初步使用 DTW 進行比對接著進行 HMM 建模

使用 Viterbi 找出音框與狀態的關係兩者比較分析辨識結果整個辨識的流程概念如下

本章將針對以下語音辨識的三個部份的方法與設計概念作介紹

32節 語音訊號的前置處理及求取語音特徵參數

33節 語音模型的建立

34節 語音模型的比對

圖 9原始波形圖

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 24: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

15

圖 10將原始波形轉換成三種特徵值

圖 11將特徵值進行訓練成語音模型

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 25: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

16

32 前置處理及求取語音特徵參數

321 端點偵測器的設計

在語音辨識中「端點偵測」往往是影響成功率的關鍵因素之一除了把無效的資

料處理掉更重要的是能夠找到字與字的位置若是不連續的字詞則能讓「同樣的字」

能互相比對以此提高辨識率

在這次的研究中我們利用 MATLABSimulink 軟體設計一個「端點偵測器」來進行端

點偵測端點偵測器包含「能量(Energy)偵測區」以及「越零率(Zero Crossing Rate)偵測

區」兩個部份聲音有三要素音色音量與音高我們掌握音量與音高的特性來設計

這個端點偵測器

1 音量根據能量的大小來判斷是否為需要的資料語音的特性有聲音的音量大於

氣音的音量而氣音的音量又大於雜訊的音量我們就是利用這個語音特性來設計

「能量偵測區」的端點偵測如下圖所示訂「門檻」來做有聲和無聲的區隔當

一音框能量大於門檻值為「有聲訊號」反之則為「氣音」或「雜訊」在模擬軟體

matlabsimulink 中我捫利用這個概念利用式(1)先將每個音框的能量算出

volume =

n

iS

1 i   (1)

其中 Si 是一個音框中的第 i 個取樣點

n 是每個音框的點數

我們利用觸發器的概念設計「門檻」門檻值=01從圖可以明顯的看出大於門檻

值的音框被觸發

圖 12能量偵測區的設計概念

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 26: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

17

圖 13能量偵測區

2 音高根據第二章介紹的越零率來判斷是否為需要的資料語音的特性有聲音的

越零率小於氣音的越零率而氣音的越零率又小於雜訊的越零率我們就是利用這

個語音特性來設計「越零率偵測區」的端點偵測如下圖我們使用計數器來計算每

段音框的越零次數同樣利用「門檻」將次數低的觸發出來雜訊的越零率gt資料

段的越零率特性來設計越零率偵測區下圖觸發結果

圖 14越零率偵測區的設計概念

門檻

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 27: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

18

圖 15越零率偵測區

我們利用 Energy 為主ZCR 回輔的「端點偵測器」來進行端點偵測同時達到兩項觸

發則為所求之有效語料整個端點偵測器設計概念如下圖 19有了此「端點偵測」

(End-point DetectionEPD)就可以決定音訊開始和結束的位置且在斷字的語料辨識

方面更是扮演重要的腳色

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 28: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

19

圖 16端點偵測器示意圖

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 29: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

20

322 特徵參數- MFCC

在語音辨識(Speech Recognition)和語者辨識(Speaker Recognition)方面最常

用到的語音特徵就是「梅爾倒頻譜係數」(Mel-scale Frequency Cepstral Coefficients簡

稱 MFCC)此參數考慮到人耳對不同頻率的感受程度在低頻部分人耳感受是比較

敏銳在高頻部分人耳的感受就會越來越粗糙因此近幾年來很常使用在語音辨識上

梅爾頻率倒頻譜係數(MFCCs)的推導步驟

1 將信號做傅立葉轉換

2 頻譜上的值取絕對值平方成為能量在乘上頻譜上對應的梅爾頻率倒頻譜三角重疊

窗(window)的係數

3 對每個梅爾頻率取對數

4 作離散餘弦轉換

5 求得梅爾頻率倒頻譜係數

以下將說明 MFCC 的設計概念

一言以蔽之我捫利用人耳的特性設計一種「特殊的帶通濾波器組」讓低頻部分

能夠加強而高頻的部分受到壓抑使用 MATLAB 程式來模擬(低頻多取高頻少取)

的梅爾濾波器我們使用權重的方法來設計此濾波器將最低頻的點給予最高的權重

依序遞減而點數則是使用對數的方法來取點程式概念如下圖 17最後根據 MFCC

的推導步驟編寫程式此帶通濾波器概念如下圖 18

圖 17加權示意圖

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 30: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

21

圖 18梅爾濾波器示意圖

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 31: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

22

323 特徵參數- Formant

共振峰(formant)是用來描述聲學現象的一種概念在語言學中描述的是人類聲道

中的共振情形常用的量測方法是由頻譜分析尋找頻譜中的峰值頻率最低的共振峰

頻率稱為 f1第二低的是 f2而第三低的是 f3絕大多部分的情形是前兩個共振峰

f1 和 f2 就足以劃分不同元音

以下說明程式的設計概念

1 將每個音框都做快速傅立葉轉換(FFT)轉成頻譜

2 尋找最低頻率的三個峰值 f1f2f3 為共振峰如下圖 19 所示

3 紀錄共振峰的功率頻譜以能量判斷該峰值是否有參考價值如下圖 20 所示

圖 19找出的共振峰頻段位置

圖 20紀錄共振峰的能量

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 32: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

23

圖 21共振峰頻段位置

圖 22共振峰能量分布

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 33: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

24

從上面的實驗結果不難看出以下結論

1 從共振峰的特徵可以明顯看出來同一人的頻段是很明顯的分布在固定區段不會隨

著輸入時間的長度有所變化

2 可以明顯看出在 f3 的變化較大沒有 f1f2 來的穩定故使用 f2f1 比值具有參考

價值往後可用來與他人的比值做比較

3 能量分布可以明顯的看出 f1f2 能量比 f3 高出甚多故我們可以使用權重的概念

來加強 f1f2 的重要性

所以在本篇論文裡我們採取的特徵是經過權重處理的共振峰參數將能量與頻段相

成讓每個人的特徵能更加的明顯提高後續的比對結果

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 34: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

25

33 語音模型的建立

在前面的章節我們知道每段語音訊號都可以由代表該訊號的特徵參數組成但是

這些特徵參數我們將如何運用本節將介紹如何處理這些特徵參數並且利用特徵參數

建立起「語音模型」

331 K-means Clustering 分群演算法

首先先介紹「資料分群」的概念把特徵值經過「分群」後得到一段由「群」所

組成的語音序列而這段由群所組成的語音序列就是所謂的「語音模型」

資料分群的方法包含 K-meansC-means向量量化(Vector Quantization)

K-nearest-neighborhellip等等我們使用 K-means 來做為資料分群的演算法簡單來說

K-means 就是一種疊代運算的過程藉著反覆疊代運算逐次降低一個誤差目標函數的

值直到目標函數不再變化就達到分群的最後結果

在演算法開始進行前我們必須事先決定好預期分群的群聚數目假設預期的分群

群聚數目為 27我們可以經由下列步驟來進行 k-means 分群法

1 在語音資料內隨機選取 27 個資料點將之分別視為 27 個群聚的群中心這

就是 Y

2 由固定的 Y產生最佳的 U換句話說對每一個資料點 x尋找與之最接近

的群中心並將 x 加入該群聚

3 計算目標函數 J(X Y U)如果保持不變代表分群結果已經穩定不變所以

可以結束此疊代方法

4 再由固定的 U產生最佳的 Y跳回第 2 個步驟

在上述方法中我們是先找群中心再開始反覆疊代的過程事實上我們也可以

先進行任意分群然後再進行反覆疊代的過程得到的結果應該很類似

這是一個反覆的過程但在整個迴圈的過程中我們可以保證 J(X Y U)絕對不會

遞增只會遞減或維持不變一旦維持不變我們就可以跳出迴圈結束演算法

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 35: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

26

圖 23分群結果

332 隱藏式馬可夫模型

在 1960-70 年代CMU 及 IBM 兩個研究單位都提出了隱藏式馬可夫模型(Hidden

Markov ModelHMM)方法而 HMM 語音辨識架構已成現今辨識的主流下面約略

描述 HMM 的原理及設計概念

HMM 模型是用一個隱藏式的馬可夫鏈(Markov chain)來模擬人類隨時間改變特

性的語音訊號特性在馬可夫鏈中落入每一個狀態的音框(frame)將具有相同的特性

如下圖 25 是一個三個狀態的隱藏式馬可夫模型模型中每個狀態間用狀態轉移機率

(state transition probability)來描述狀態轉移的特性而每個狀態中語音訊號的特性則

以訊號觀測機率(observation probability)來描述每個狀態中特徵參數機率分布狀況

簡單的來說就是將語音資料轉換成一串語音模型來呈現往後只需將兩語音模型來進

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 36: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

27

行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單位因此要進行

語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的結構聲學模型

(Acoustic Model或簡稱 Model)包含數個狀態前面 32 節已經將前置處理的概念做

詳盡的介紹接下來在本節將介紹如何將擷取出來的特徵值進一步「訓練」成語音模型

圖 24三個狀態的隱藏式馬可夫模型

如第一節介紹的「資料分群」概念當語音的特徵值經過反覆的疊代運算達到穩定

後這段語音資料就會變成一串由群所組成的語音序列而這段由群所組成的語音序列

就是所謂的「語音模型」下圖 26 為 20 段語音訊號經過分群後的結果如第一段語音

的語音模型為「6614462hellip」

圖 25語音模型

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 37: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

28

34 語音模型的比對

341 DTW

DTW ( Dynamic Time Warping) 「動態時間扭曲」或是「動態時間校正」這是一套

根基於「動態規劃」(Dynamic Programming簡稱 DP)的方法可以有效地將搜尋比

對的時間大幅降低簡單來說 DTW 的目標就是要找出兩個向量(長度不同)之間的最短

距離

以下說明設計的概念假設有兩個向量 A 和 B長度分別是 I 和 J那麼 DTW 的目

標就是要找到一組路徑 (A1 B1) (A2 B2) (Ai Bj) 使得經由上述路徑的「點對點」

對應距離和 Si=1k A(i) ∣ - B(j) ∣ 為最小而且此路徑必須滿足下列條件

1 端點關係(A1 B1) = (1 1) (Ai Bj) = (I J)此端點關係代表這是「頭對頭尾對

尾」的比對簡單說就是第一次的比對必定是 A 的第一個音框和 B 的第一個音框

比對而最後面也是兩者最後的音框比對

2 局部關係假設最佳路徑上任一點可以表示成 (i j)那麼其前一點路徑只有三種可

能(i-1 j) (i j-1) (i-1 j-1)此局部關係定義了路徑的連續性而且也規定了 t 的

任一個元素至少對應一個 r 的元素反之亦然

DTW 演算法的疊代關係如下

)1(

)11(

)1(

min)()()(

jiD

jiD

jiD

jritjiD

其中 ij 為兩向量之音框數目

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 38: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

29

圖 26 DTW 示意圖

根據上述設定的條件與遞迴關係設計程式即可算出兩段語料的相似程度了

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 39: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

30

第4章 辨識系統的建立

41 前言

誠如前面所見本研究嘗試使用 MATLAB 平台建立一套國語數字的語者辨識系

統其中前置處理是在 MATLAB 中 Simulink 環境下建構利用此平台將錄製好的語音

資料庫進行前置處理使得電腦可以讀取語音的有效資料並且求得能代表語音的特徵

參數其次利用隱藏式馬可夫模型(Hidden Markov Model)作為辨識分類之研究工具

將處理過後之特徵參數依序進行隱藏式馬可夫模型之訓練以供樣本庫建立完成最

後採用維特比(Viterbi)演算法得到辨識結果本章節將針對平台各部份功能做詳盡的

說明平台架構如下

前置處理系統使用 MATLAB 中 Simulink 環境下建構負責將輸入的聲音經過

一連串的前置處理並且將特徵參數求出

演算法系統使用 MATLAB 編寫整套演算法將前面得到的特徵參數經過程式

的設計來進行訓練建模及模型比對的部份

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 40: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

31

42 前置處理系統

421 前置處理系統架構

本節主要是利用 matlabsimulink 來建立一個語音前置處理的系統利用這個環境達

到求取特徵參數的目的下圖 27前置處理系統為我們的模擬系統架構

圖 27前置處理系統

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 41: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

32

422 端點偵測器架構

在前面的章節已經把端點偵測器的設計概念及原理介紹過了下面圖 23 是我們平

台端點偵測器-能量偵測區的架構

訊號進入能量偵測區後

1 取平方和把能量正負的問題排除

2 除以音框的點數得到每個音框所含有的能量

3 利用觸發器的概念設定門檻當每個音框的能量大於門檻則觸發

圖 28能量偵測區方塊圖

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 42: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

33

下面圖 24 是我們平台端點偵測器-越零率偵測區的架構

訊號進入越零率偵測區後

1 將輸入的訊號做整形的工作簡單來說把原始訊號整形成方波每段訊號都有

正負部分將正的部份設定為 1 負的部份設定為 0我們只要計算方波的方

塊數就等於計算了該訊號經過零點的次數

2 計數器計算方波內方塊的數目且計算完一個音框歸零下一個音框重數

圖 29越零率偵測區方塊圖

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 43: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

34

423 特徵參數求取

原始訊號經過前面的 AD 轉換取音框端點偵測加窗等hellip前置處理以後接著

進行擷取特徵值的步驟下圖是平台擷取特徵值的區塊其特徵值的擷取採 MATLAB

程式編寫

圖 30特徵參數擷取區塊

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 44: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

35

梅爾倒頻譜(MFCC)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設

計概念簡單來說建立一種由 20 個三角帶通所組成特殊濾波器其濾波器的系數是針

對梅爾特性來設計最後再將訊號與本系統進行摺積運算

1建立一組 20 維的特殊濾波器

(MFCC 濾波器-低頻多取高頻少

2考慮點數與權重的關係設計濾

波器組點數使用對數關係來取點

0((log2(N)(M+2))log2(N)

3最低頻的給予最高權重為 1依序

遞減

4將前置處理後的訊號經過傅立葉

轉換

5進行濾波器功能-摺積運算

6得到梅爾倒頻譜特徵

1~3

建立梅爾濾波器

4訊號輸入

5摺積運算

圖 31MFCC 程式設計流程

6MFCC 特徵參數

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 45: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

36

共振峰(Formant)特徵參數使用 MATLAB 程式編寫設計概念如下圖所示程式設計

概念簡單來說我們將設計一套簡單的演算法利用其抓取頻譜特定 3 個峰值的頻段以

及能量的數值

1訊號進行傅立葉轉換為頻譜並轉

換為功率頻譜探討能量的分布

2使用差分運算得到每個點的斜率

3每點之斜率相減大於零表示有峰值

4排序所有正負符號相減大於零的位

5選出最大的三個峰值

6紀錄峰值的頻段及能量大小

圖 32Formant 程式設計流程

尋找峰值 排序峰值

共振峰特徵

分析功率頻譜

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 46: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

37

43 演算法系統

演算法系統是將經過前置處理後的特徵值進行後續的處理與辨識並執行建模

訓練以及比對的工作這套系統全程利用 MATLB 平台編寫在下面的章節會依序介紹

這個系統

431 訓練語料

訓練(training)語料是設計辨識系統成功率的關鍵根據不同的功能需求需要訓練

的語音資料也不相同本研究有根據功能的不同進行兩種語音辨識實驗除了語者辨

識外也嘗試辨識語意也就是語音內容的數字下圖為訓練的設計概念簡單說這個

機制就是讓資料庫裡面能調整出一個正確的答案以供後續比對時進行

在設計訓練的演算法時我們設計了一種調整公式來調整我們的訓練語料如下式

1輸入欲訓練語句(例10 段內容

為rdquo1rdquo的語音)

2挑選一段為初始訓練模型

3將訓練模型與另外九段計算距離

4每次計算距離後使用公式調整模

5判斷是否與另外 9 段的距離和為最

小若未收斂跳回第 3 步繼續調整

6直到收斂跳出迴圈得到 1 個代表

這 10 段語音的訓練模型

圖 33訓練語料之程式設計概念

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 47: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

38

1 所示為 MATLAB 程式寫法將每段訓練語料調整 40「像」前一筆訓練語料如此

每次修正 40且不斷的疊代直到找出一個模型與所有訓練的語料皆最相像(程式收

斂)時訓練結束表示我們找到了一個最能代表所有訓練語句的模型

訓練公式

40

1

_

)1()1)2((_)1)1((()1)1(()1)1((1

u

r

kt

r

indktindruindrindr

訓練結果

下一段訓練語料

訓練語料

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 48: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

39

432 建立語音模型

「語音模型」簡單來說就是將語音資料轉換成一串語音模型來呈現往後只需將

兩語音模型來進行比對即可一般語音辨識中會以聲學模型來作為語音辨識的基本單

位因此要進行語音資料的訓練來求取聲學模型的參數時就必須要先確認聲學模型的

結構聲學模型(Acoustic Model或簡稱 Model)包含數個狀態經過了前面分群的演

算法將每段語音訊號分成由群所組成的序列如下圖 33 為其示意圖

圖 34語音訊號經過本系統分成若干狀態組成的序列

語音模型是由若干狀態所組成用來模擬人類隨時間改變特性的語音訊號特性其

中每一個狀態的音框(frame)將具有相同的特性如下圖 34 是一個三個狀態的語音模

型模型中每個狀態間用狀態轉移機率(state transition probability)來描述狀態轉移的

特性a11 表示第一個狀態到第一個狀態的轉移機率a12 表示第一個狀態到第二個狀態

的轉移機率

圖 35語音模型示意圖

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 49: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

40

分群(Clustering)使用 MATLAB 程式編寫設計概念如下圖所示程式設計概念簡單

來說我們將設計一套分群演算法利用其分類具有相似特徵的音框達到分群的目的

1設定分群數目先設定預分群的群數目

2設定群中心將各群的群中心給予初

3分類每次抓取一筆資料與各個群中心

計算距離距離最短的即為該群

4調整群中心每次分群 1次使用means

來計算各群中心內部的距離

5判斷是否收斂每分群 1 次重新計算

1 次群中心並檢查該群內是否與中心

的距離為最短若否則跳回 3 重新分

6直到收斂跳出迴圈得到分群結果

圖 36分群之程式設計概念

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 50: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

41

433 比對語音模型

當語音的訊號已經轉變為一條由狀態所串連起來的序列也就是所謂的「語音模型」

以後接下來就是比對模型的工作了在前面 341 節已經說明 DTW ( Dynamic Time

Warping)「動態時間校正」這套演算法了我們利用 DTW 的演算法來進行計算距離的

功能這邊敘述本系統辨識的設計概念下圖 33 為『語意辨識』時本系統的辨識概念

將測試模型與我們語音資料庫內先前已經訓練好的「樣本模型」依序使用編譯好的

DTW 演算法來計算距離距離最短的則為辨識結果

測試模型輸入

數字rdquo1rdquo的訓練模型

數字rdquo2rdquo的訓練模型

數字rdquo3rdquo的訓練模型

數字rdquo4rdquo的訓練模型

數字rdquo5rdquo的訓練模型

數字rdquo6rdquo的訓練模型

數字rdquo7rdquo的訓練模型

數字rdquo8rdquo的訓練模型

數字rdquo9rdquo的訓練模型

數字rdquo10rdquo的訓練模型

與十組訓練後的模型做比對分別計算距

離距離最短的為辨識結果

圖 37數字辨識概念

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 51: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

42

下圖 34 為『語者辨識』時本系統的辨識概念我們功能需求為「語者相同且密碼

相同」時才為辨識成功這種系統類似於「門禁系統」的概念故此時的訓練語料將是

把「正確答案」也就是所謂特定的語者身分且說正確的數字來進行訓練即為所求之樣

本模型

最後只需將測試模型與我們語音資料庫內已經訓練好的「樣本模型」依序使用編

譯好的 DTW 演算法來計算距離當距離小於所設定的門檻的則為 Pass反之則設定為

No

測試模型依序輸入

樣本模型 (特定的語者及正確的密碼)

測試模型與樣本模型兩者計

算距離若距離小於所設定之

門檻則判斷為 Pass反之則

為 NO

圖 38語者辨識系統設計概念

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 52: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

43

第5章 實驗結果與比較分析

本研究使用 MATLAB 平台建立一套數字辨識系統其中前置處理是在 MATLAB 中

Simulink 環境下建構在語音辨識的研究中有分語者辨識(Speech Identify)和語意辨識

(Speech Recognition)前者顧名思義為判斷說話者的身分而後者為辨識說話的內容

而本研究中設計包含了類似門禁系統的語者辨識(Speech Identify)實驗和不特定語者的

數字語意辨識(Speech Recognition)實驗以及連續音與斷字的比較並且我們將擷取不

同的特徵參數進行實驗最後比較辨識結果

51 實驗系統介紹

本論文的系統設計是使用 MATLAB 的介面來進行建構前置處理區使用 MATLAB

中 Simulink 環境下的方塊圖組成後續的演算法系統則是使用程式編寫研究的設備使

用 Pentium 級個人電腦音源信號輸出輸入設備(麥克風喇叭)系統應用程式為

MATLAB將語音信號採取 112800 的取樣率進行數位化加窗部分選取漢明視窗來

進行平滑處理特徵參數分別使用梅爾倒頻譜以及共振峰兩種為特徵並進行比較分析

52 類似門禁系統的語者辨識實驗

本實驗是針對語者辨識(Speech Identify)功能所進行的實驗系統判斷該語音為特定

的身分與特定的密碼皆為正確則為 Pass反之則為 No若能準確的判斷出對錯即為辨

識成功故在設計上將語者為自己且內容為密碼的語料當成我們的訓練語料進行反覆訓

練本實驗期盼未來能應用於門禁系統的語音辨辨識

表 1實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

類似門禁系

統之語者辨

識實驗

語音資料庫內(包含自己)共 3 男 2

女系統判斷該語音為特定的身

分與特定的密碼皆為正確則為

Pass反之則為 No 期盼系統能準

確判斷

將自己的正確

答案進行訓練

並得到樣本語

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 53: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

44

521 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套類似門禁系統的語音辨識系統必

須要特定的語者(我)與特定的密碼(3920)都符合條件才能進入故找了 3 位同學(2 男 1

女)幫忙錄製語音比對資料要求測試同學錄製「正確的密碼」10 次及「任意四位數字」

10 次為測試語料而訓練語料為自己說出密碼的語音 20 次資料總量為 100 筆語音

資料庫如下表 1每次約錄 8 秒至 10 秒不等並且要求錄製時使用「斷字發音」所有

的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128 點

並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比較

分析

表 2語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

522 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 2 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 3辨識結果

使用的特徵值 辨識率

共振峰(Formant)特徵 9132

梅爾倒頻譜(MFCC)特徵 9454

523 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現造成誤判的結果大多發生於自己的聲音

內關於密碼辨識的誤判但是對於他人的聲音卻有非常好的辨識率詳細辨識結果如下

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 54: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

45

表所示發現使用本辨識系統能有效的進行語者的辨識但是密碼的辨識上誤判率還

是有 5~6而其中使用梅爾為特徵的系統對於密碼的辨識情形較好

表 4辨識結果分析

語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 共振峰(Formant)特徵 9314 686

自己的聲音 梅爾倒頻譜(MFCC)特徵 9454 546

他人的聲音 共振峰(Formant)特徵 9818 182

他人的聲音 梅爾倒頻譜(MFCC)特徵 100 0

圖 39共振峰誤判情形分析圖

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 55: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

46

圖 40梅爾誤判情形分析圖

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 56: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

47

53 不特定語者的數字辨識實驗

本實驗是針對語音辨識(Speech Recognition)功能所進行的實驗系統若能分別判斷

出該語音的內容 0~9則為辨識成功故在設計上必須將 0~9 每段當成我們的訓練語料

進行反覆訓練本實驗期盼未來能應用於智慧型手機的語音撥號

表 5實驗設計

(註明所謂正確答案即為另外所錄製 0-9 的樣本資料)

狀況 說明 訓練方法

特定語者之數

字辨識

語音資料庫內皆為自己的

語音資料 0-9期盼系統辨

識出所說的數字

將自己的正確答案

進行訓練並得到樣

本語料

非特定語者之

數字辨識

在語音資料庫內使用其他

同學的語音資料 0-9期盼

系統辨識出所說的數字

將同學的正確答案

進行訓練並得到樣

本語料

混合的數字辨

識(不再考慮語

者身分)

語音資料庫內為上面其他

同學加自己的語音資料 0-9

加總期盼系統辨識出所說

的數字

將自己的正確答案

及同學的正確答案

兩者各拿 1 半的數

量進行訓練並得到

樣本語料

531 語音資料庫

本實驗建構於 MATLAB 介面目的為建立一套能辨識數字 0~9 的語意辨識系統

使用特定語者來進行測試與訓練其中錄製數字「0~9」各 20 次10 次為測試語料10

次為訊練語料資料總量為 200 筆語音資料庫內容如下表 2每次約錄 5 秒不等所

有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音框長度為 128

點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰參數來進行比

較分析

表 6語音資料庫內容

語者 語料內容 樣本數量 註解

自己 數字 0~9各 10 次 共 100 筆 Test data

自己 數字 0~9各 10 次 共 100 筆 Training data

男同學 數字 0~9各 5 次 共 50 筆 Test data

男同學 數字 0~9各 5 次 共 50 筆 Training data

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 57: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

48

532 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響表 4 為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 7辨識結果

實驗 使用的特徵值 辨識率

不考慮語者身分的數字辨識 共振峰(Formant)為特徵 7657

不考慮語者身分的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

531 辨識結果分析

在這邊我們詳細的分析了辨識的結果發現本系統對於數字的辨識效果僅達 8 成左

右而對於非特定語者來進行語意辨識上約達 7 成左右的辨識率其原因應該是語音

資料庫內資料量不夠充分可靠度較特定語者的兩百筆為低相信隨著數據的增加辨

識率也會接近 8 成

表 8辨識結果

實驗 使用的特徵值 辨識率

特定語者之數字辨識 共振峰(Formant)為特徵 7842

特定語者之數字辨識 梅爾倒頻譜(MFCC)特徵 8354

非特定語者(男同學)

之數字辨識

共振峰(Formant)為特徵 7347

非特定語者(男同學)

之數字辨識

梅爾倒頻譜(MFCC)特徵 7564

混合的數字辨識 共振峰(Formant)為特徵 7657

混合的數字辨識 梅爾倒頻譜(MFCC)特徵 8144

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 58: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

49

54 連音和斷字的語音辨識實驗

本實驗是探討「連音」(Continuous Speech)和「斷字」(Isolated Word)的語音資

料對於本系統的影響並進行實驗加以驗證故我們使用類似門禁系統的架構來進行本

實驗系統判斷該語音為特定的身分與特定的密碼皆為正確則為 Pass反之則為 No

若能準確的判斷出對錯即為辨識成功我們將進行 2 種實驗如下表故在設計上必須將

連音的語料以及斷字的語料分別當成我們的訓練語料進行反覆訓練做 2 種的測試

表 9實驗設計

(註明所謂正確答案即為自己的聲音及正確的密碼)

狀況 說明 訓練方法

斷字的語者辨識 語音資料庫內皆為

斷字(例3-9-2-0)的

語音資料

將斷字的正確答案

進行訓練

連音的語者辨識 語音資料庫內皆為

連音(例3920)的語

音資料

將連音的正確答案

進行訓練

541 語音資料庫

本實驗建構於 MATLAB 介面且建立一套類似門禁系統的語音辨識系統本次實驗

的目的為探討「連音的密碼」與「斷字的密碼」所造成的影響設定必須要特定的語者

(我)與特定的密碼(3920)都符合條件才能進入使用同樣的 3 位同學(2 男 1 女)幫忙錄

製語音比對資料並請他們多錄製 1 次連續音的要求測試同學分別錄製連音及斷字「正

確的密碼」各 10 次及連音及斷字的「任意四位數字」10 次為測試語料而訓練語料為

自己說出密碼的語音 20 次資料總量為 100 筆語音資料庫如下表 7每次約錄 8 秒至

10 秒不等所有的語音訊號均以 112800 的取樣率進行取樣求取特徵參數所使用的音

框長度為 128 點並以漢明窗做平滑處理最後求取 20 維的梅爾倒頻譜參數以及共振峰

參數來進行比較分析

表 10語音資料庫內容

性別 語料內容 人數 樣本數量 註解

男 ldquordquo非密碼(斷字) 2 人 共 20 筆 Test data

男 ldquordquo非密碼(連音) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(斷字) 2 人 共 20 筆 Test data

男 ldquo3920rdquo密碼(連音) 2 人 共 20 筆 Test data

女 ldquordquo非密碼(斷字) 1 人 共 10 筆 Test data

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 59: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

50

女 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

女 ldquo3920rdquo密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 10 筆 Test data

自己 ldquordquo非密碼(連音) 1 人 共 10 筆 Test data

自己 ldquo3920rdquo密碼(斷字) 1 人 共 20 筆 Training data

自己 ldquo3920rdquo密碼(連音) 1 人 共 20 筆 Training data

542 使用不同特徵值的辨識結果

在這邊比較兩種不同的特徵參數對於辨識率的影響下表為此兩種不同特徵參數的

辨識率我們發現使用梅爾倒頻譜為特徵值的辨識結果較佳

表 11辨識結果

語音類型 使用的特徵值 辨識率

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

543 辨識結果分析

在這邊我們詳細的針對「連續音的辨識結果」進行分析這邊我們挑選出辨識率較

高的梅爾倒頻譜為特徵的辨識結果來比較分析發現使用連音的語音資料造成誤判的機

率遠大於使用斷字的語料其中發現對於語者的識別效果還是相當的不錯造成辨識率

下降的因素還是取決於密碼的誤判

表 12辨識結果分析

語音類型 語音類型 使用的特徵值 辨識準確率 誤判率

自己的聲音 使用斷字的語音資料庫 (MFCC)特徵 9454 546

自己的聲音 使用連音的語音資料庫 (MFCC)特徵 8462 1538

他人的聲音 使用斷字的語音資料庫 (MFCC)特徵 100 0

他人的聲音 使用連音的語音資料庫 (MFCC)特徵 100 0

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 60: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

51

圖 41使用斷字為語料的誤判情形

圖 42使用連訊音為語料的誤判情形

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 61: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

52

55 語音辨識實驗結果統計

我們針對下述的 3 種狀況來進行實驗實驗結果如下表 13幾項特點如下

1 特徵值方面設計兩種不同的特徵參數來進行各種狀況的實驗並且比較辨識

的效果

2 連音與斷字方面使用連續音的語音資料與單音的語音資料來進行辨識並且比

較效果

3 辨識系統驗證進行類似門禁系統的辨識實驗以及純粹辨識數字的辨識實驗來

驗證本系統的辨識效果

表 13實驗結果統計

系統功能 狀況(語音類型) 使用的特徵值 辨識率

類似門禁系統的

語者辨識身分與

密 碼 皆 正 確 為

Pass反之為 No

使用斷字的語音資料庫 共振峰(Formant)為特徵 9132

使用斷字的語音資料庫 梅爾倒頻譜(MFCC)特徵 9454

使用連音的語音資料庫 共振峰(Formant)為特徵 8146

使用連音的語音資料庫 梅爾倒頻譜(MFCC)特徵 8462

數字辨識(0~9)

能辨認出該語音

內的數字 0~9

特定語者之數字 0~9 共振峰(Formant)為特徵 7842

特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8354

非特定語者之數字 0~9 共振峰(Formant)為特徵 7347

非特定語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 7564

不考慮語者之數字 0~9 共振峰(Formant)為特徵 7657

不考慮語者之數字 0~9 梅爾倒頻譜(MFCC)特徵 8144

我們針對下述的 3 種狀況來進行實驗實驗結果如上表 13幾項特點如下

1 特徵值方面從實驗中發現使用梅爾倒頻譜為特徵的辨識效果都高於使用共

振峰為特徵的辨識效果

2 連音與斷字方面使用連續音的語音資料誤判比例遠遠高於斷字的語音資料

由結果發現使用同樣較好的特徵植(MFCC)來做比較時發現使用連續音比使

用單音做為語料的誤判情形多了 10左右

3 系統走向本系統偏向於語者辨識的取向當我們詳細分析誤判情形後發現本

系統對於語者的辨識有較佳的辨識率但是對於密碼的辨識上還有努力的空

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 62: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

53

圖 43辨識結果

圖 44辨識結果

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 63: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

54

第6章 結論與未來展望

61 結論

本研究嘗試使用 MATLAB 介面建構一套國語數字的語者辨識系統本系統將錄製

的語音進行前置處理並取得兩種不同的特徵參數進行訓練使用分群的演算法將特徵

參數訓練成語音模型最後利用 DTW ( Dynamic Time Warping) 「動態時間校正」來進

行模型的比對並進行實驗比較經過測試與分析歸納出以下結論

1 在特徵擷取方面兩種不同的特徵值進行比較分析後不難看出使用 MFCC

為特徵有較好的辨識結果原因也許是 MFCC 採用人耳特徵加強了較具參考

價值的低頻部份而共振峰參數只採取頻譜特徵似乎不夠明顯

2 在辨識的過程中我們發現此系統針對語意的辨識效果僅達 8 成但針對語者

辨識效過不錯這是未來需要改進的部分而未來也可以朝語者辨識功能來努

3 語音資料方面使用語音資料為單音的辨識率遠高於使用連音的語音資料代

表當語音資料內的數字是相連時系統誤判比例提升故由此特性推測若要提高

連音的辨識率那麼端點的偵測是否夠準確將會是關鍵的因素

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 64: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

55

62 未來展望

本系統雖然經過測試和驗證但實際上還未算建構的非常完整在驗證中我們

發現這個辨識系統對於語者的辨識效果較好語意內容的辨識還需要加強在此提出幾

點未來可以改良和修正的地方提供參考

1 前置處理的過程在前置處理過程中是否完全把雜訊給濾除端點的偵測是否

正確

2 特徵值的取決所取的特徵是否足夠代表完整的語音

3 演算法設計是否夠嚴謹整個研究過程中無論是前置處理建模或是比對所

用的演算法眾多程式的編寫上也許寫出該方法的精神但是細節不夠嚴謹

導致結果有偏差

4 數據是否夠充足本文資料庫自己共 200 筆資料來進行測試數據是否太少

5 從實驗中發現本系統對於語者辨識的效果很好未來可能將利用此系統往語

者辨識方向研究

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 65: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

56

參考文獻

[1] A Acero Formant analysis and synthesis using hidden Markov modelsProcEuro

Speech1999

[2] BH Juang and LRabiner ldquoFundamental of speech recognitionrdquo Prentice Hall1993

[3] F Soong ldquoA vector quantization approach to speaker recognitionrdquo IEEE 1985

[4] GVelius ldquoVariants of cepstrum based speaker identify verificationrdquo in Proc 1988

[5] JMakhou ldquoLinear predictionA tutorial reviewrdquoIEEE1975

[6] K Sugawara Isolated word Recognition Using Hidden Markov ModelsM

NishimuraIEEE1985

[7] KHDavis RBiddulph and SBalashek ldquoAutomatic Recognition of Spoken Digitsrdquo

1952

[8] KSugawara MNishimura KToshioka ldquoA tutorial on Hidden Markov models and

selected applications in speech recognitionrdquo 1985

[9] L R Rabiner JG Wilpon ldquoA Segmental K-means training procedure for connected

word recognition based on whole word reference patternsrdquo 1986

[10] LRRabiner and BHJuang ldquoAn Introduction to Hidden Markov Modelsrdquo IEEE 1986

[11] Pinto NB Childers DG Lalwani AL ldquoFormant speech synthesis improving

production qualityrdquo1996

[12] RJMammoneXZhangand RPRamachandran ldquoRobust speaker recognition A

feature-based approachrdquo IEEE1996

[13] 王小川語音訊號處理全華科技2004

[14] 王逸如語音辨認簡介2000

[15] 王漢蘭隱藏式馬可夫模型應用於語音訊號辨識研究1999

[16] 李上銘語音辨識中基於主成份分析之進一步技術碩士論文2000

[17] 孫益君以 PDA 為平台之語音辨識應用系統開發中原大學資訊工程系碩士論文

2003

[18] 徐偉棠以語音辨識技術輔助英文母音發音之偵錯清華大學碩士論文2005

[19] 許世俊用於高斯混合模型語者辨認之區別式訓練方法國立清華大學碩士論文

中華民國八十五年六月

[20] 陳松琳以類神經網路為架構之語音辨識系統碩士論文2002

[21] 楊世帆老人中文語音辯識之初步研究碩士論文2007

[22] 楊永泰隱藏式馬可夫模型應用於中文語音辨識之研究2001

[23] 楊茗惠用隱藏式馬可夫方法用於頻域特徵之國與數字辨識碩士論文2003

[24] 趙俊超改良式 DTW 語音辨識系統之 FPGA 實現與分析碩士論文2005

[25] 劉佑德多關鍵詞文句之辨認方法碩士論文2000

[26] 龍生雲不特定語句之中文語者辨識系統研究碩士論文1999

[27] 謝秀琴數位語音訊號基本原理全華科技1996

57

[28] 謝依蘭語音訊號數位處理松崗1992

Page 66: 使用動態時間校正演算法於國語數字語者 辨識系統之研究ir.lib.isu.edu.tw/retrieve/89023/etd-0726111-152157.pdf · 使用動態時間校正演算法於國語數字語者

57

[28] 謝依蘭語音訊號數位處理松崗1992