CentOS 5下freeswitch中整合使用ekho實現TTS功能
Linux下安裝freeswitch並整合ekho實現TTS
1.freeswitch
linux下安裝freeswitch就不多介紹了,具體連結網址:
http://www.8000hz.com/archives/14.html
2.ekho tts
Ekho TTS(http://www.eguidedog.net/ekho_cn.php)是一個免費、開源的中文語音合成軟體。它目前支援粵語、普通話(國語)、詔安客語、藏語、雅言(中國古代通用語)和韓語(試驗中),英文則通過Festival間接實現。Ekho支援Linux、Windows和Android平臺。
英文則通過Festival間接實現。它比eSpeak的設計更簡易,但檔案較大。由於使用了真人發聲,它比eSpeak的發音更自然。
原始碼下載頁面: Ekho (餘音)
Ekho TTS 6.0的下載地址:https://sourceforge.net/projects/e-guidedog/files/Ekho/6.0/
一、Ekho的安裝
# tar xjvf ekho-4.8.tar.bz2
# cd ekho-4.8
# ./configure
# make
#make install
安裝成功~~~
測試一下吧: #ekho "我愛你餘音"
注意:
如果./configure配置出錯,可能是你缺少相關依賴庫:libsndfile-devel,pulseaudio-libs-devel,ncurses-devel,libgtk2-devel,libvorbis-devel,liblame-dev,
mp3支援依賴庫:
下載:wget http://downloads.sourceforge.net/project/lame/lame/3.99/lame-3.99.5.tar.gz
安裝:./configure --disable-shared --enable-nasm
make & make install
yum install +包名
特別提醒:有些linux上安裝了以上包,要將安裝目錄下面生成的.pc檔案拷貝到
/usr/lib/pkgconfig/ 或者
/usr/local/lib/pkgconfig/
這2個目錄下
注意:直接配置
./configure
Make
安裝ekho提示:
src/libekho.cpp: In member function ‘int ekho::Ekho::init()’:
src/libekho.cpp:79: 錯誤:expected primary-expression before ‘{’ token
src/libekho.cpp:79: 錯誤:expected `;' before ‘{’ token
src/libekho.cpp:1971: 錯誤:expected `}' at end of input
make[1]: *** [src/libekho_a-libekho.o] 錯誤 1
make[1]: Leaving directory `/home/new_uucc_soft/ekho-6.0'
make: *** [all] 錯誤 2
解決辦法:
更改libekho.cpp中:
1.替換
mPendingFrames = 0;
mStripSsml = true;
mSpeakIsolatedPunctuation = true;
mSpeechQueueMutex = PTHREAD_MUTEX_INITIALIZER;
mSpeechQueueCond = PTHREAD_COND_INITIALIZER;
mEnglishVoice = "voice_kal_diphone";
替換為:
this->mPendingFrames = 0;
this->mStripSsml = true;
this->mSpeakIsolatedPunctuation = true;
pthread_mutex_init(&mSpeechQueueMutex, NULL);
pthread_cond_init(&mSpeechQueueCond, NULL);
this->mEnglishVoice = "voice_kal_diphone";
2.替換
mSonicStream = 0;
mPcmCache = true;
替換為:
this->mSonicStream = 0;
this->mPcmCache = true;
3.替換
mFliteVoice = 0;
為:
this->mFliteVoice = 0;
4.替換
memset(mAlphabetPcmCache, 0, 26);
memset(mAlphabetPcmSize, 0, 26);
mPuncMode = EKHO_PUNC_SOME;
為:
memset(this->mAlphabetPcmCache, 0, 26);
memset(this->mAlphabetPcmSize, 0, 26);
this->mPuncMode = EKHO_PUNC_SOME;
安裝完成:執行ekho
測試:
注意:使用ekho將文字轉換成為語音,要使用UTF8編碼格式:
echo "我是好人" > tmp.txt
iconv -t UTF8 tmp.txt >tmp1.txt 這句在linux系統下一般不用因為linux預設是UTF8格式,如果使用者自己改了系統格式,即要安裝iconv,將tmp.txt的編碼格式轉換為UTF8格式
ekho -a 100 -f tmp1.txt -o p1.wav
二:安裝Festival
如果需要朗讀英語,需要開啟Festival支援:
(Festival的安裝)
Festival提供了一個通用的框架,用於構建語音合成系統,該系統包含了各種模組示例。它提供了完整的文字轉語音的API,可以通過shell、C++靜態庫等多種方式呼叫,原生支援Mac OS,支援的語言包括英語和西班牙語;而且系統是使用c++編寫,底層呼叫Edinburgh Speech Tools;
Festival下載地址:
http://festvox.org/packed/festival/2.1/
festival-2.1-release.tar.gz Festival語音合成系統原始檔
speech_tools-2.1-release.tar.gz Edinburgh語音工庫
estlex_CMU.tar.gz festlex_POSLEX.tar.gz詞典
festvox_kallpc16k.tar.gz 語料庫
前兩個解壓後需要配置編譯,後三個解壓後自動解壓在festival資料夾中。首先編譯speech_tools,進入該資料夾,輸入:
#./configure
#make
漫長的等待後,編譯完成!此時可以 執行 make test 檢視編譯是否成功Test OK即表示成功。
設定變數:
用vi /etc/profile 最後新增一下語句:其中festival和speech_tools是你自己的安裝目錄
PATH=/home/new_uucc_soft/festival/festival/bin:$PATH:/home/new_uucc_soft/festival/speech_tools/bin