使用最新的「huihui中文語音庫」實現文本轉語音功能

最近一個web項目中,須要進行語音播報,將動態的文字轉換爲語音(TTS)存爲WAV文件後經過web播放給用戶。選擇了微軟所提供的SAPI (The Microsoft Speech API),只須要幾行代碼便可實現。主要的問題是選擇一個好的中文語音庫,讓播放的聲音更貼近真人。各個中文版操做系統自帶的中文語音包以下(經過控制面板語音屬性進行查看):web

Windows 2000/XP/Vista:無api

Windows 7中文版、Windows 2008中文版:Microsoft lili服務器

Windows 8中文版、Windows 2012中文版:Microsoft Huihui Desktopui

另外,還有不少廠商推出了本身的語音包,也有很多中文的,經過對比,發現Win8中文版開始提供的"Microsoft Huihui Desktop」(如下簡稱桌面版Huihui)效果最好。若是發佈的web服務器是win8中文版或者server2012中文版,則能夠直接經過代碼使用這個語音包,可是對於其餘操做系統或者是非中文的操做系統,想要使用這個語音包,就有很多問題了。主要有三個問題:操作系統

1.沒有現成的語音包.net

實際上,微軟並無提供獨立語音庫下載安裝,也就是說,並無桌面版Huihui的語音包供安裝。orm

解決方法:微軟在另外一套語音引擎中(Microsoft Speech Platform),也提供了不少語音包,其中一個"Microsoft Server Speech Text to Speech Voice (zh-CN, HuiHui)」(如下簡稱服務器版Huihui),這其實和桌面版Huihui在發音方面,徹底一致(下載Microsoft Speech Platform - Runtime Languages (Version 11)其中的MSSpeech_TTS_zh-CN_HuiHui.msi安裝便可)。可使用這個語音包,來實現桌面版Huihui的播放效果。server

注意:這個安裝包執行一下就消失了,沒有須要用戶交互的操做界面,不用擔憂,已經安裝好了。htm

2.語音引擎不一致blog

語音播放須要語音引擎的支持。實際上微軟的語音引擎系統已經發展了好幾代,從SAPI四、SAPI5(最後一版是5.4)發展到目前的Microsoft Speech Platform 11。對於SAPI,Windows XP內置了 TTS 語音引擎SAPI5.1,Vista、Server 2008內置SAPI5.3,Win7內置SAPI5.4,無需安裝。而Microsoft Speech Platform 11目前沒有內置於操做系統,須要下載Microsoft Speech Platform - Runtime (Version 11)安裝來支持語音包,注意裏面有x86和x64版,應該根據服務器的操做系統版原本肯定安裝。

3.修改註冊表

實際上經過上述兩個步驟安裝語音引擎和語音包,有兩個問題:一是沒法在控制面板中看到安裝好的語音包(32位系統C:\Windows\System32\Speech\SpeechUX\sapi.cpl,64位系統經過C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl才能看到),二是使用SAPI的GetVoices()方法,也獲取不到這個語音包,也就沒法繼續執行轉換語音的功能。

這裏的主要問題是這個語音包是供Microsoft Speech Platform 11使用的,其語音包的註冊信息,和SAPI支持的語音包註冊信息不在一個位置(主要是註冊表信息),致使了控制面板和SAPI的代碼沒法獲取到它支持的語音。查閱了不少國外的資料,發現能夠經過修改註冊表或修改服務器版Huihui語音包的安裝程序來解決這個問題。

修改註冊表法:

若是已經安裝了原版服務器版Huihui,進入註冊表,將

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech Server

導出。而後用記事本打開這兩個註冊表文件,

  • 將所有「Speech Server\v11.0」替換爲「Speech」
  • 將所有「Speech Server\\v11.0」替換爲「Speech」

保存後,導入到註冊表,若是提示錯誤,也不要緊。

注意:32位系統只有第一個註冊表位置。64位系統全都須要導出。

修改安裝包法:

(1)安裝orca軟件

這是一個修改安裝程序(msi)的軟件。下載安裝好後打開軟件便可。

(2)修改語音包

orca-file-open,打開原版語音包,定位到Tables的Registry,以下圖,將全部Speech Server\v11.0修改成Speech,而後File-Save便可。保存後的就是需改的語音包。

image

我修改好了一個,提供了下載

 

總結:

安裝語音引擎Microsoft Speech Platform 11。

安裝修改好的語音包MSSpeech_TTS_zh-CN_HuiHui.msi/或安裝原版語音包而後修改註冊表。

本文只介紹若是用SAPI引擎(命名空間System.Speech)來利用最新語音庫,實際上,Microsoft Speech Platform 11這個語音引擎(命名空間Microsoft.Speech)具備更增強大的功能,好比支持VoiceXML,詳細可參考

 

參考:

TTS正確使用Microsoft Speech Platform 11發音朗讀的方法

http://www.xqbase.com/xqwizard/help_tts.htm

相關文章
相關標籤/搜索