下載地址:http://greenvm.googlecode.com/files/JTTSEngine.7z (含示例與源碼,目前僅提供dll封裝)
眾所周知,所謂TTS即Text To Speech的英文縮寫,也就是“從文本轉換到語音”。
TTS技術的主要作用在于利用計算機合成人語,并將文字信息轉化為語音信息進行播放。簡單點說,TTS技術賦予了計算機“開口說人話”的能力。
作為一項歷史悠久的計算機技術,TTS的應用領域可謂非常之廣闊。不但可以用來閱讀電子郵件,進行IVR系統(Interactive Voice Response)的語音提示,也可以很方便的嵌入到游戲或者其它類型的應用程序當中,增強用戶體驗。尤其重要的是,在某些無法夠獲得詳細文字咨詢的場合(譬如聲訊臺或者盲人服務),TTS技術具有其它技術無法替代的關鍵作用。
針對于TTS需求所要實現的功能,主要包含如下幾個部分:
1、文本分析:對輸入文本進行語言學分析,逐句進行詞匯的、語法的和語義的分析,以確定句子的低層結構和每個字的音素的組成,包括文本的斷句、字詞切分、多音字的處理、數字的處理、縮略語的處理等。
2、語音合成:把處理好的文本所對應的單字或短語從語音合成庫中提取,把語言學描述轉化成言語波形。
3、韻律處理:用以控制語音合成系統所輸出的語音的質量,一般可從清晰度、自然度和連貫性等方面進行主觀評價。
但是,即便上述所講從純技術角度來說并不很難,開發TTS引擎仍然是件非常讓人頭痛的事情。
因為除去核心架構的開發之外,TTS應用還存在有大量針對具體文字、詞組、固定語句的采樣、歸類、矯正的工作要做,否則就無法滿足其“擬人”的最基本需求。從某種意義上講,這些非常耗時的重復性工作,其本質似乎更貼近體力勞動,而非嚴格意義上的技術領域。因此,對于TTS引擎的制造者而言,所需付出的體力勞動強度,將遠遠超出腦力勞動所應付出的代價(如果不是這樣,那些收費TTS引擎的開發商都要餓死了……)。
萬幸的是,我們生活在一個越來越傾向開源的國際大環境下,即使你一字不動,一筆不寫,也有數之不盡的現成輪子可供驅策,并不一定要花錢購買昂貴的商業引擎,也不必皓首窮經的自己從頭寫起。
比如本次發布的Java版TTS組件JTTS,就是基于著名開源TTS組件eSpeak封裝而來。(吾輩并沒狂妄(有癮)到想要(能夠)獨立開發TTS引擎的境界,所以效法Google對eSpeak進行jni封裝……)
關于eSpeak(eSpeak項目地址如下:http://espeak.sourceforge.net
):
eSpeak是一款緊湊的開放源碼軟件的語音合成器,允許自行編輯與修改詞庫,算得上是一個性價比合理的開源TTS解決方案。它支持包括中文(含粵語)在內的多種語言(可惜標準中文詞庫與擴展詞庫都不全,發音也不太好聽,想實用自己慢慢改吧,反正是開源的……),能夠跨平臺運行于Linux和Windows之上(需要分別編譯)。值得一提的是,Google Android中所使用的TTS引擎,也是eSpeak。在如下地址:http://eyes-free.googlecode.com
,可以下載到Android版的eSpeak封裝項目。
關于jtts:
事實上,jtts只是將eSpeak進行簡單封裝后的“馬甲引擎”(很奇怪,此前為什么沒人發java版的封裝,連php,python,ruby版的都有……),使用方法基本與eSpeak相同,不過具體實現卻更為簡單,也更方便對于C/C++不太熟悉的朋友們使用。
目前已封裝eSpeak接口如下(未來有時間的話(目前業余以開發LGame為主),我會陸續添加更多的接口到jtts中,并逐漸擴展應用):
jtts基本使用示例如下:
下面是一個基于jtts的示例截圖:
下載地址:http://greenvm.googlecode.com/files/JTTSEngine.7z
(
含示例與源碼,目前僅提供dll封裝
)
————————————
好吧,吾輩承認是想給看小說不能堅持看完全文的家伙們寫個朗讀工具……現在只是開端……
浙公網安備 33010602011771號