首頁>>>技術(shù)>>>語音應(yīng)用>>>語音合成(TTS)  語音合成產(chǎn)品

中英雙語語音合成系統(tǒng)的研究

陳建宇、楊真 2008/08/01

  摘要:本文首先簡要介紹了語音合成概念,然后詳細介紹了語音合成系統(tǒng)的核心,包括三個模塊:文本分析模塊、韻律控制模塊和語音合成模塊;接著介紹了用Microsoft speech SDK5.1制作一個中英雙語音閱讀器的過程,解決了Microsoft speech SDK5.1不能中英文混讀的問題。

引言

  語言是人們交流的工具,不同民族有自己不同的語言,不同語言之間的交流在今天開放的信息社會和網(wǎng)絡(luò)時代顯得十分重要,多語種的文語合成有著獨特的應(yīng)用價值。理想的多語種合成系統(tǒng)最好是各種語言共用一種合成算法或語音合成器,但是現(xiàn)有的語音合成系統(tǒng)大多是針對某一種語言或若干種語言開發(fā)出來的,所采用的算法及規(guī)則都是和某種語言密切相關(guān)的,因此很難推廣到其他的語種。例如漢語就和西方語言有很大的差異,國內(nèi)的系統(tǒng)都是做漢語文語轉(zhuǎn)換,它的一套韻律控制規(guī)則完全不適合于英語,而且主要是合成漢語普通話,即使推廣到廣東話和上海話都有相當?shù)碾y度?梢娨嬲鉀Q多語種的文語合成,從文本處理到語音合成都必須有新的思路。本研究針對實際應(yīng)用的需要,要求在對現(xiàn)有的語言合成技術(shù)進行分析和研究的基礎(chǔ)上,研制一種同時支持中英雙語輸出的中英雙語語音合成系統(tǒng),嘗試解決語音合成應(yīng)用中的多語言混合輸出問題。

1語音合成系統(tǒng)概述

1.1語音合成技術(shù)簡介

  語音識別和語音合成技術(shù)是實現(xiàn)人機語音通信,建立一個有聽和講能力的口語系統(tǒng)所必需的兩項關(guān)鍵技術(shù)。

  語音合成技術(shù)是將計算機自己產(chǎn)生的或外部輸入的文字信息,比如文本文件內(nèi)容、WORD文件內(nèi)容等文字信息,按語音處理規(guī)則轉(zhuǎn)換成語音信號輸出,即使計算機流利地讀出文字信息,使人們通過“聽”就可以明白信息的內(nèi)容。這種將文字轉(zhuǎn)換成語音的技術(shù)稱之為文語轉(zhuǎn)換技術(shù),簡稱TTS(Text to Speech)技術(shù),也稱為語音合成技術(shù)。語音合成技術(shù)是人機交互領(lǐng)域和智能計算領(lǐng)域的重點研究內(nèi)容,其應(yīng)用前景非常廣闊,具有非常重要的實用價值。在實際應(yīng)用中,中英雙語同步混合出現(xiàn)的情景是比較常見的,解決多語言混合語音合成問題成為語音合成應(yīng)用的一個熱點。

1.2 語音合成的發(fā)展方向

 。1)提高合成語音的自然度:就漢語語音合成來說,目前在單字和詞組一級上,合成語音的可懂度和自然度已基本解決,但是到句子乃至篇章一級時其自然度問題就比較大。因為這是一種采用自然語音波形直接拼接的方法,進行拼接的語音單元是從一個預(yù)先錄下的自然語音數(shù)據(jù)庫中挑選出來的,因此有可能最大限度地保留語音的自然度。

 。2)豐富合成語音的表現(xiàn)力:目前國內(nèi)外大多數(shù)語音合成研究是針對語音合成系統(tǒng),且只能解決以某種朗讀風格將書面語言轉(zhuǎn)換成口語輸出,缺乏不同年齡、性別特征及語氣、語速的表現(xiàn),更不用說賦予個人的感情色彩。隨著信息社會的需求發(fā)展對語音合成技術(shù)提出了更高的要求。

  (3)降低語音合成技術(shù)的復(fù)雜度:目前高質(zhì)量的漢語語音合成系統(tǒng)一般需要幾兆字節(jié)到幾十兆,甚至幾百兆字節(jié)的存儲容量,這在以PC機或工作站為硬件平臺的應(yīng)用中是沒有問題的,而對于像HPC,PDA及無線通信手機,商務(wù)通等資源有限的設(shè)備上就沒法承受。解決的方法可以是通過語音壓縮編碼的方法來壓縮音庫所需的容量,或者采用更小的合成基元。

1.3語音合成的實用意義

  語音識別和語音合成技術(shù)是實現(xiàn)人機語音通信,建立一個有聽、說能力的口語系統(tǒng)所必需的兩項關(guān)鍵技術(shù)。作為智能計算機研究的主導(dǎo)方向和人機語音通信的關(guān)鍵技術(shù),語音合成技術(shù)愈來愈受到各國科學界的廣泛關(guān)注。隨著語音合成技術(shù)的研究發(fā)展,它對計算機發(fā)展和社會生活的重要性日益顯現(xiàn)出來。目前,語音合成廣泛的應(yīng)用于基于PC的辦公、教學、及娛樂等智能多媒體軟件和聲訊服務(wù)領(lǐng)域內(nèi)的智能電話查詢系統(tǒng)中。

2 語音合成系統(tǒng)概述

  一個成功的語音合成系統(tǒng)輸出的語音應(yīng)當音質(zhì)清晰、自然流暢。語音的自然度取決于起發(fā)音聲調(diào)的變化,而在連續(xù)語流中,字的發(fā)音不僅與這個字本身的發(fā)音有關(guān),而且還受到它相鄰字發(fā)音以及語氣表達的影響。所以在語音合成系統(tǒng)中,必須事先對文本進行分析,根據(jù)上下文的關(guān)系確定每個字發(fā)音的韻律變化,然后用這些韻律變化參數(shù)控制語音的合成。因此,語音合成系統(tǒng)的核心應(yīng)包括文本分析、韻律控制、語音合成模塊。其結(jié)構(gòu)如圖1所示。

圖1 語音合成系統(tǒng)結(jié)構(gòu)示意圖

2.1文本分析模塊

  語音合成系統(tǒng)首先處理的是文字,也就是它要說的內(nèi)容。文本分析的主要功能是使計算機能從這些文本中認識文字,進而知道要發(fā)什么音、怎么發(fā)音,并將發(fā)音的方式告訴計算機。另外,還要讓計算機知道,在文本中,哪些是詞,哪些是短語或句子,發(fā)音時應(yīng)該到哪里停頓及停頓多長時間等。其工作過程可以分為三個主要步驟:

  (1)將輸入的文本規(guī)范化。在這個過程中,要查找拼寫錯誤,并將文本中出現(xiàn)的一些不規(guī)范或無法發(fā)音的字符過濾掉。

  (2)分析文本中詞或短語的邊界,確定文字的讀音,同時分析文本中出現(xiàn)的數(shù)字、姓氏、特殊字符、專有詞語以及各種多音字的讀音方式。

  (3)根據(jù)文本的結(jié)構(gòu)、組成和不同位置上出現(xiàn)的標點符號,確定發(fā)音時語氣的變換以及不同音的輕重方式。

  最終,文本分析模塊將輸入的文字轉(zhuǎn)換成計算機能夠處理的內(nèi)部參數(shù),便于后續(xù)模塊進一步處理并生成相應(yīng)的信息。

2.2韻律控制模塊

  早期的韻律生成方法均采用基于規(guī)則的方法。目前,基于規(guī)則的方法仍然被認作是行之有效的方法,大部分漢語語音合成系統(tǒng)依然采用這種方法。最近,通過神經(jīng)網(wǎng)絡(luò)或統(tǒng)計驅(qū)動的方法進行韻律生成已獲得成功的應(yīng)用。其實現(xiàn)步驟是:首先設(shè)計或收集一個包含大量語音和文本信息的數(shù)據(jù),然后建立一個訓(xùn)練模型,并用從數(shù)據(jù)庫中提取出的韻律參數(shù)對模型進行訓(xùn)練,通過訓(xùn)練而得到最終的韻律模型。

2.3語音合成模塊

  系統(tǒng)產(chǎn)生的合成語音是通過一個聲學模塊來具體實現(xiàn)的。早期語音合成系統(tǒng)的聲學模型多是通過模擬人的口腔的聲道特性來產(chǎn)生的。其中比較著名的有Klatt的共振峰(Formant)合成系統(tǒng),后來又產(chǎn)生了基于LPC、LSP和LMA等聲學參數(shù)的合成系統(tǒng),這些都可以歸結(jié)為參數(shù)合成系統(tǒng)。使用這些方法建立聲學模型的過程是:首先錄制聲音,這些聲音涵蓋了人發(fā)音過程中所有可能出現(xiàn)的讀音;然后,提取出這些聲音的聲學參數(shù),并整合成一個完整的音庫。在發(fā)音過程中,首先根據(jù)發(fā)音需要從音庫中選擇合適的聲學參數(shù),然后根據(jù)從韻律模型中得到的韻律參數(shù),通過合成算法產(chǎn)生語音。參數(shù)合成方法的優(yōu)點是其音庫一般較小,并且整個系統(tǒng)能適應(yīng)的韻律特征的范圍較寬,但其合成語音的音質(zhì)卻往往受到一定的限制。

  近10年來,采用波形拼接(PSOLA)合成語音的方法越來越被廣泛應(yīng)用。這種方法的核心思想是直接對存儲于音庫的語音運用PSOLA算法進行拼接,從而整合成完整的語音。

3.中英雙語閱讀器

3.1 Microsoft Speech SDK 5.1簡介

  Microsoft Speech SDK5.1是微軟中國研究院推出的支持中文語音應(yīng)用程序開發(fā)的工具包。它采用了COM標準開發(fā),底層協(xié)議都以COM組件的形式獨立于應(yīng)用程序?qū)印R虼,在實現(xiàn)特定語音應(yīng)用系統(tǒng)時,需考慮系統(tǒng)的功能實現(xiàn)和界面控制,不必考慮復(fù)雜的語音技術(shù)的實現(xiàn)算法,極大地降低了開發(fā)語音應(yīng)用系統(tǒng)需要的代碼量,從而為二次開發(fā)提供方便快捷的途徑,并提供了系統(tǒng)的可擴展性和可維護性。它包括微軟連續(xù)語音識別引擎(Microsoft continuous speech recognition engine)和微軟串聯(lián)語音合成引擎(Microsoft concatenated speech synthesis engine(也稱TTS引擎)。利用提供的工具、信息、例子、SAPI5.1引擎和應(yīng)用,用戶可以方便地開發(fā)包含語音識別和語音合成功能的應(yīng)用程序。這個版本的開發(fā)包含有一系列支持COM的語音自動化接口。自動化接口使得面向?qū)ο?Object-Oriented)開發(fā)方法終于在語音開發(fā)中得到了支持。Microsoft Speech SDK5.1可在微軟網(wǎng)站(http://www.Microsoft.com/downloads/details.aspx?familyid=5e86ec97-40a7-453f-b0ee-6583171b4530&displaylang=en) 免費下載。下載Microsoft Speech SDK5.1以及一個支持中英文的Language Pack,并按先后順序分別安裝。

3.2 新建工程并建立引用

  新建工程后,單擊工程—>引用,然后單擊瀏覽按鈕到程序文件夾\CommonFiles\Micro _softShared\Speech,選中Sapi.dll并單擊確定,可看到“Microsoft Speech Object Library”被添加到可使用的引用列表。為了使用slider控件和CommonDialog控件,單擊工程—>部件,在彈出的對話框中選擇“Microsoft Windows Common Controls 6.0”和“Microsoft Windows Common Dialog Control 6.0” ,這樣所需要的控件就添加在了工具箱中。

3.3建立用戶界面并設(shè)置相應(yīng)屬性

  首先建立一個窗體,命名為Form1,作為啟動窗體,將其Caption命名為“中英雙語閱讀器” 。在Form1中添加四個Frame控件,將它們的Caption分別命名為“請輸入閱讀的文檔” 、“格式選擇” 、“文件選擇”和“播放控制” 。在Frame1添加一個TextBox控件,將其命名為MainTxtBox,用于輸入文本。在Frame2添加四個Label控件,將它們的Caption分別命名為“語言:” 、“速度:” 、“音量:”和“格式:” ;兩個ComboBox控件,分別命名為VoiceCB和FormatCB,用來選擇閱讀的語言和輸出聲音的格式;兩個Slider控件,分別命名為RateSldr和VolumeSldr,分別控制閱讀的速度和音量。在Frame3添加四個Label控件,將它們的Caption分別命名為“Open” 、“Clear” 、“Save”和“Close” ;添加四個commandButton控件,將它們分別命名為“OpenBtn” 、“ClearBtn” 、“SaveTxtBtn”和“CloseBtn” ,將它們的Caption分別命名為“打開(O)” 、“清除(L)” 、“保存(T)”和“關(guān)閉(C)” ,分別用來打開要閱讀的文件、清除MainTxtBox中的內(nèi)容、保存MainTxtBox中的內(nèi)容和關(guān)閉中英文閱讀器;在Frame4添加四個Label控件,將它們的Caption分別命名為分別“Speak” 、“Pause” 、“Stop”和“Save” ;添加四個commandButton控件,將它們分別命名為“SpeakBtn” 、“PauseBtn” 、“StopBtn”和“SaveWavBtn” ,將它們的Caption分別命名為“朗讀(R)” 、“暫停(P)” 、“停止(S)”和“保存(W)” ,分別用于控制朗讀過程的開始、暫停、停止和保存聲音(WAV)文件。最后再添加一個CommonDialog控件,將其命名為ComDlg,用來調(diào)出“公共對話框”。設(shè)置完成的界面如圖2所示。

圖2 中英文閱讀器的界面

3.4 中英雙語閱讀器的算法原理

(1)中英雙語閱讀器核心技術(shù)的解決方案

  本論文要制作的中英雙語閱讀器的語音庫是引用Microsoft Speech SDK5.1的語音庫。由于Microsoft Speech SDK5.1的語音庫在閱讀時存在的很多的問題,因此我在制作中英雙語閱讀器時做了一些改進,使其有更好的閱讀效果。

中英混讀功能

  中英混讀功能是本閱讀器最重要的功能,也是本研究要解決的核心問題。中英混讀功能調(diào)用了Microsoft Speech Object Library中的兩位朗讀者,中文時是Microsoft simplified Chinese,英文時是Microsoft Sam。根據(jù)要閱讀的文本實時地調(diào)用閱讀引擎,達到了中英混讀功能。主要原理是:

Step1:檢測第一個字母設(shè)定初始閱讀引擎和標志;

Step2:逐一檢測每一個字符,并付給字符串str;

Step3:檢測到不同種語音的字符時,調(diào)用閱讀函數(shù)讀出str,清空str并轉(zhuǎn)換閱讀引擎和標志;

Step4:檢測是否到了文本的末尾,不是的話就轉(zhuǎn)到Step2;

Step5:調(diào)用閱讀函數(shù)讀出str;

Step5:結(jié)束。

閱讀各種號碼的能力

  Microsoft Speech SDK5.1的語音庫在閱讀時出現(xiàn)了很多問題,其中一個是當遇到一串數(shù)字時只能讀成一個整體的數(shù),比如“430074”它會讀成“四十三萬零七十四” ,這個在有的時候是正確的,但有的時候這個讀法有是錯誤的,比如“武漢郵科院烽火科技學院的郵政編碼是430074” ,根據(jù)人們的習慣“430074”就應(yīng)該讀成“四三零零七四” ,而不是“四十三萬零七十四” 。類似的還有電話號碼、傳真等。解決這個方法是:當遇到數(shù)字時,就檢測字符串str,當字符串中有“電話” 、“號” 、“碼” 、“傳真”時,就在數(shù)字后面添加空格,這樣就能實現(xiàn)這樣數(shù)的讀法。

電子郵箱地址的讀法

  有時候要讀到某人的電子郵箱地址,比如“我的電子郵箱是yujianchen@163.com”,應(yīng)該讀成“y u j i a n c h e n @ 1 6 3 . com” ,而讓閱讀器會閱讀時,“yujianchen”會一起讀出,“@”不能讀出,“163”讀成“一百六十三” ,“.com”讀成“點com” ,就最后一處讀法是正確的,其他的都是錯誤的。怎樣解決這個問題呢!這個不像電話號碼那樣直接檢測數(shù)字前面有沒有電話號碼等字樣,有的話就在數(shù)字后面加空格,因為一般的電子郵箱地址都即包含字母和數(shù)字,有的甚至還有文字,這樣就會有引擎的轉(zhuǎn)換,電子郵箱地址就不能在一個字符串里,因此不能像上面的(2)那樣處理。經(jīng)思考,得到了以下的解決方法:當遇到“郵箱”或者“電子郵箱”時,后面的字符之間都添加空格直到“.”為止。

網(wǎng)址的讀法

  網(wǎng)址會經(jīng)常出現(xiàn)在文章中,根據(jù)測試,Microsoft Speech SDK5.1在讀網(wǎng)址的時候不論是英文讀法還是中文讀法都是錯誤的,一般都是“/”讀不對,如果沒有改進,中英雙語閱讀器也是錯誤的,它把“/”讀成了“除以” 。這個問題的具體解決辦法是:先檢測“mainTxtBox”中是否出現(xiàn)“http:”或者“www.” ,如果有的話,就檢測當前字符是否為“字母” 、“數(shù)字” 、“.” 、“/”或者“:”(一般網(wǎng)址都是由這些字符組成的),如果是“:”或者“/” ,就用逗號來代替(也可以用空格來代替,只是這樣的節(jié)奏感沒有用逗號代替好);如果是數(shù)字,就在數(shù)字后面加空格;其他的字符就直接加到字符串上。這樣改進后的讀法就跟人們平時閱讀時差不多了,不足之處是數(shù)字的讀法是英文的。

(2)中英雙語閱讀器流程圖

  由于Microsoft Speech Object Library中,自帶了四位朗讀者:Microsoft simplified Chinese、Microsoft Mary、Microsoft mike和Microsoft Sam四種。所以當選擇其中的任何一位時,VB將自動的調(diào)用該說話引擎讀出MainTxtBox中的字符。而Microsoft Speech SDK5.1在朗讀中英混合文本時,若使用中文引擎,對于英文單詞只能將其包括的各個字母逐一朗讀出來;若使用英文引擎,漢字就將被跳過,這樣就失去了其本來的意義!爸杏⑽幕熳x”在這方面進行了改進,在語音朗讀過程中提前判斷將要處理文本的類型并且依據(jù)系統(tǒng)返回的消息,實時在中英文引擎之間進行切換,從而實現(xiàn)了真正的中英文朗讀。

實現(xiàn)中英文文本朗讀是中英雙語閱讀器的主要功能,其流程圖如圖3所示。

圖3 中英雙語閱讀器流程圖

(3)中英文混讀算法流程圖

  如前所述,Microsoft Speech SDK5.1不能真正地進行中英文混合文本的朗讀。我設(shè)計的中英文混讀程序就要實現(xiàn)真正地進行中英文混合文本的朗讀。該程序利用Microsoft Speech SDK5.1自帶的兩位閱讀者Microsoft simplified Chinese和Microsoft Sam,根據(jù)判斷當前字符,中文的調(diào)用Microsoft simplified Chinese,英文的調(diào)用Microsoft Sam,這樣就實現(xiàn)了中英文混合文本的朗讀。具體的解決方案是:依序處理文本中每個字符,判斷字符中含有的中英文類型,若類型與前一字符相同則添加至中間變量,否則朗讀中間變量文本并保存當前位置,接著切換引擎。文本朗讀結(jié)束,發(fā)出EndStream消息,從當前位置繼續(xù)循環(huán)。其流程圖如圖4所示。

圖4 中英文混讀程序流程圖

4 結(jié)束語

  語音技術(shù)是一門新興的學科,同時又是綜合性的多學科領(lǐng)域和涉及面很廣的交叉學科,是目前發(fā)展最為迅速的信息科學研究領(lǐng)域中的一個。Microsoft Speech SDK5.1在朗讀中英混合文本時,用中文引擎,對于英文單詞只能將其包括的各個字母逐一朗讀出來;用英文引擎,漢字就不能讀,這樣就失去了其本來的意義。中英雙語閱讀器在這方面進行了改進,實時在中英文引擎之間進行切換,從而實現(xiàn)了真正意義上的中英文朗讀,這是本研究最大的創(chuàng)新點。同時根據(jù)Microsoft Speech SDK5.1在閱讀是出現(xiàn)的錯誤,對其進行了一些改進,包括電話號碼、郵政編碼等特殊數(shù)字、電子郵箱和網(wǎng)頁地址的讀法,使得閱讀的效果更好,更符合現(xiàn)實中人們閱讀的習慣。中英雙語閱讀器還有一個創(chuàng)新點是具有錄音功能,也就是可以將文本文檔轉(zhuǎn)化為Wav格式保存,之后就可以用別的播放器播放,很方便。

  但是不得不承認,Microsoft speech SDK5.1還存在著很多問題,比如說閱讀時的流暢度和可懂度都有待提高。要真正實現(xiàn)計算機能夠象人一樣的說話,和人類自由地進行交談,仍然需要假以時日,還有大量的研究工作要去做。

參考文獻:

【1】黃南川,鄧振杰,王嵬嵬.語音合成技術(shù)的研究與發(fā)展.華北航天工業(yè)學院學報,2002,12(3):37~39.

【2】李遠志,李浮濱.語音合成技術(shù)在信息服務(wù)應(yīng)用的前景分析.現(xiàn)代情報,2002,(2):106~107

【3】王衛(wèi)華,陳衛(wèi)東等.用Microsoft Speech SDK實現(xiàn)語音識別和語音合成.電子技術(shù),2000,11.

【4】俞振利,程伯中.基于語音生成和發(fā)音模型的語音合成新方法的探討.聲學學報,2000,25(5):455~461

【5】羅三定,賈建華.基于波形音頻段處理的中文語音合成研究.電腦與信息技術(shù),2002,


作者:陳建宇、楊真 武漢郵科院烽火科技學院

作者簡介

  陳建宇,男,1982年出生,浙江溫州人,武漢郵電科學研究院2006屆研究生,主要研究方向是數(shù)字通信。

  通信地址:湖北省武漢市洪山區(qū)郵科院路88號武漢光迅科技股份有限公司開發(fā)二部

  楊真,男,湖北人,武漢同博科技有限公司研發(fā)部,主要從事研發(fā)管理。

電子工程專輯



相關(guān)鏈接:
語音合成技術(shù)開啟后閱讀時代 2008-05-14
有關(guān)語音自動化的十大常見誤區(qū) 2008-05-06
科大訊飛總裁劉慶峰:語音市場進入爆發(fā)期 2008-01-04
身邊的“智能”生活 2007-12-28
語音IM在帶寬方面無需擔憂 2007-12-24

分類信息: