利用SAPI 5.0進行音素分解 |
|
flyup
資深會員 發表:280 回覆:508 積分:385 註冊:2002-04-15 發送簡訊給我 |
1.引言 隨著計算機網路,智能家電,多通道用戶界面的飛速發展,人臉與語音相結合的人性化的交互方式,將成為未來人們使用計算機的主要趨勢。在基於網路的人-人交互系統中,用戶的語音輸入可以直接在網路上作為音頻流傳輸,在播放的一端進行音素切分,驅動人臉動畫。這樣做的優點是直接播放原始聲音,聲音失真小,缺點是傳輸的資料量大、需要佔用較大的網路帶寬,當虛擬環境中用戶數量較多時網路和服務器可能不堪重負。另一種可行的方法是在發言的用戶一端將語音輸入切分為音素流,在播放的一端將音素流重新合成為語音,驅動人臉動畫。這樣做需要傳輸的資料量就小得多,網路和服務器的負載都要小得多,缺點是用戶聽到的是合成語音。本文旨在說明如何利用SAPI5.0對輸入音頻進行音素切分。 2.SAPI5.0 及其語音識別(SR)簡介 微軟的 Speech SDK 5.0是微軟視窗環境的開發工具包。該開發工具包包括了先前的以"Whistler"和 "Whisper"命名的語音識別和語音合成引擎的最新版本。這個SDK中含有語音應用設計介面(SAPI)、微軟的連續語音識別引擎(MCSR)以及微軟的串聯語音合成(又稱語音到文本(TTS))引擎等等。SAPI中還包括對於低層控制和高度適應性的直接語音管理、訓練嚮導、事件、語法編譯、資源、語音識別(SR)管理以及TTS管理,其中應用程序介面(API)和設備驅動介面(DDI),結構如圖2所示。應用程序通過API層和SAPI(SpeechAPI)通信,語音引擎則通過DDI層和SAPI(SpeechAPI)進行交互。通過使用這些API,可以加快在語音識別或語音合成方面應用程序的開發。 SAPI5在語音識別方面提供的基本服務: a)管理語音輸入,諸如從麥克風,文件等方式,並負責將語音轉化成引擎所能接受的特定格式。 b)加載文法並負責解析和編輯。 c)編譯用標準xml文件定義的文法,轉換定制文法等。 d)使多個應用共享一個識別引擎. f)返回結果和必要的信息給應用程序。 g)保存輸入音頻和序列化結果以便分析。 h)進行適當的錯誤異常處理,增加應用程序的健壯性。 SR引擎提供的基本服務: a)可使用SAPI的文法介面,加載所需文法。 b)進行語音識別 c)可調用SAPI來處理文法和識別狀態的改變。 d)產生識別結果並得到相應事件,以便給應用開發提供必要的信息。 3. 設計思想 由於SAPI5.0不提供直接的方法將中文語音輸入直接分解成相應的音素,故採用這種折衷的辦法來處理。 具體步驟: a)初始化引擎並使其工作在連續語音識別方式下(Dictation Mode),即非特定詞彙的連續語音識別,同時建立一個從中文字到拼音的映射資料庫。然後進入消息循環處理階段,響應SPEI_SOUND_START消息,開始識別輸入語音,在得到SPEI_SOUND_END消息後,若在此聲音開關其間無任何識別結果,則認為是噪聲信號,不作任何處理。若期間得到SPEI_RECOGNITION消息,則在成功取得識別中文字後,執行b。 b)若處理完畢所有中文字,則輸出隊列中的全部元素,否則,對識別結果中的每一個中文字,重複執行c-e。 c)在識別的中文字中查詢相應的拼音。 d)按照一定的規則分解拼音為可視音素。 e)將該組可視音素入隊列。 用戶對麥克風連續講話,按上述思路,可完成其語音音素分解工作。其中涉及中文可視音素的劃分,在MPEG-4標準中,劃分14組可明顯區分的英文音素。我們根據中文的發音特點,參照科大訊飛公司的標準及其其他相關文獻把中文的可視音素劃分為15組。如下表所示: 可視音素標號
音素
可視音素標號
音素 1
A
9
O 2
P, b, m
10
R 3
D,t,n,l
11
U,v 4
E.
12
Z,c,s 5
F
13
Zh,ch,sh 6
G,k,h
14
N 7
I
15
Ng 8
J,q,x 每一組都代表一種可視音素的基本的口型,任何一個中文字拼音都可以分解為這些可視音素的組合。這樣,在輸出端就可使用音素流來驅動虛擬人臉了。 4. 具體實現 4.1)初始化COM if (SUCCEEDED(::CoInitialize(NULL))) {//進入主消息循環,直到收到退出消息為止 while(GetMessage(&msg,NULL,0,0) {//消息處理程式碼 ...... } ::CoUninitialize();//退出時,釋放相關資源 } 4.2)初始化識別引擎 CComPtr
|
ry_lee
高階會員 發表:368 回覆:251 積分:123 註冊:2002-03-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |