Android中文語音合成(TTS)各家引擎對比

Android中文語音合成(TTS)各家引擎對比

Yao.GUET 2012-02-03,轉載請註明出處:http://blog.csdn.net/Yao_GUET

Android系統從1.6版本開始就支持TTS(Text-To-Speech),也就是我們所說的語音合成,不過遺憾的是系統默認的TTS引擎:Pico TTS,並不支持中文。

由此對於廣大的炎黃子孫不得不安裝我們自己的TTS引擎跟語言包,由此而拉開本文的篇章。


隨着IPhone4S Siri的推出,讓語音識別與語音合成TTS火了一把,同時也給國內的兩家公司:科大訊飛和捷聲華通,帶來了很大的關注。這兩家都是做中文語音識別與語音合成的。在這裏只是討論一下中文語音合成,至於中文語音識別,應該這兩家也是提供了網絡識別的類庫的,就不在本篇討論的範圍了。

中文語音合成(TTS),可以分爲兩大類吧,一類是跟系統接口吻合的,一類是不與系統接口吻合的。

如果是跟系統接口吻合的都是把TTS引擎跟語言包數據分開。像系統默認的Pico TTS, SVOX, 科大訊飛等就是這樣。它的好處應該是可以通過系統提供的接口去使用TTS功能,也便於做多國語言的拓展。但是這樣的話,估計也會存在一些不便,例如,設置語音朗讀的角色跟設置語速的快慢就得通過系統的接口去設置。

另外一類就是不跟系統吻合的,這種大部分都是會把引擎和語言包打包成一個apk包,然後安裝完之後,通過指定的接口去調用其所提供的中文語音合成功能。

除了這兩類方法之外,還有一些是直接把TTS功能做成共享庫so文件,然後通過NDK去調用TTS的功能。這一種就比較好,因爲不需要額外的再安裝TTS引擎跟語言包,並且可以直接在應用裏面設置朗讀人是男聲還是女聲,語速等。像舊版本的科大訊飛就是以這種形式出現的,比較有代表的應用是“聽書”或者“vBook”,大家可以找到這兩個應該學習一下,因爲NDK的接口不是很複雜,但是有可能會時不時蹦出“科大訊飛XXXX”的廣告來,啊哈~~

這兩類TTS引擎,各有所長吧,大家可以根據自己的需要去使用相應的TTS,不過各家TTS質量可是有很大的差別的哦~~~

下面來討論一下菜單上有名的中文語音合成TTS,以及各自的差異。


先說第一類,跟系統接口吻合的。

一,訊飛語音TTS1.0

這個原來訊飛是沒有這個與系統接口吻合的TTS的,原來是以動態庫的形式的,最近才以這種apk的形式華麗登場,合成的效果清晰流暢,不生硬,英文也讀得挺好的,聽起來很舒服,,,

誰有需要可以去酷安網下載試用一下,記得下載語言包哦~. http://www.coolapk.com/apk-4526-com.iflytek.tts/


二,SVOX

開始沒有訊飛的時候,用了一下SVOX,這個也做得很強大,N多的語言支持,中文不僅支持普通話,還支持廣東話!不過有一些感覺吐字不是很清晰,聽感不是很好,不過還好,因爲大部分是可以聽得懂的,下載地址:http://www.coolapk.com/apk-4192-com.svox.classic.langpack.cmn_chn_fem/


三,三星TTS

三星TTS,支持韓文,中文跟英文,每一字吐字還比較清晰,但是連起來的時候,不是很順暢,大家可以自己感受一下。

安裝apk,然後把SMT文件夾整個拷貝到SD卡的根目錄

下載地址是:http://115.com/file/e7z2iliv



第二類是以獨立的apk形式存在的主要在下面的兩種

一,捷通華聲

捷通華聲也是中文語音做得比較好的,跟科大訊飛有得一拼。它的調用方法是使用java的反射機制來使用已經安裝的TTS類。需要學習一下“捷通華聲聽書”才能大概知道怎麼使用該TTS,不過也還好,因爲通常學習過來不會太長,,,

裏面可愛寶寶的聲音比較好玩,但是好像用寶寶聲音讀英語會出問題

捷通華聲TTS語音包下載地址:http://www.yingyong.so/app/3/1917.htm

捷通華聲聽書下載地址:http://www.yingyong.so/app/3/1916.htm (要使用捷通華聲TTS,這個是必要的學習工具哦~~)


二,手說TTS

手說也是獨立安裝的一個TTS引擎,目前好像只支持中文語言。它接口公開,語音質量還行,呵呵,它的使用方法在例程裏面有很詳細的介紹,大家有興趣可以看一下,

手說的主頁:http://shoushuo.com/index.html



對於第一種作爲切合系統接口的TTS中文引擎,安裝之後,需要安裝語言包,然後還得簡單的設置一下纔可以使用,方法如下:

設置-》語音輸入與輸出-》文字轉語音設置,把對應的TTS引擎後面的勾,勾上,再在“默認引擎”裏面設置你所需要的TTS,然後就可以聆聽示例了。

而對於第二種,一般都會帶有一個activity可以聆聽示例的。


如果已經設置好系統默認的TTS引擎跟語言,調用系統TTS接口極其簡單,就下面幾句話:

初始化TTS引擎

TextToSpeech mTTS = new TextToSpeech(this, initListener);

文字到語音

mTTS.speak("中文TTS", TextToSpeech.QUEUE_FLUSH, null);

回收

mTTS.shutdown();

當然要寫好還得考慮沒有安裝TTS引擎或語言包的情況,上面只是一個小小的示例。。。


最後,個人感覺科大訊飛的中文TTS,跟捷通華聲的音色都比較自然,應該是目前所有的中文TTS裏面最好的了,大家可以看着使用吧,,,

發佈了79 篇原創文章 · 獲贊 6 · 訪問量 91萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章