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裡面最好的了,大家可以看著使用吧,,,
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()