2010年2月15日 星期一

openSUSE 11.2 KDE4 環境使用 stardict

根據 Release Note:若您選用 KDE 桌面,預設是不啟用 Pulseaudio 支援的
即使您已安裝了 pulseaudio,您還是得在 YaST 的音效中手動啟動
之前曾建議各位安裝 qstardict ,但是 qstardict 不知道是不是太靈敏
常常字還沒標示完,蹦現視窗就跳出來了
所以還是裝了 stardict

其實 stardict 無法啟動的原因,就是 pulseaudio
(所以論壇上也有人建議移除語音模組)
其實只要安裝 pulseaudio 然後啟用它即可(先看完本文在決定是否要這樣做)
在安裝 pulseaudio 時可能會顯示與 patterns-openSUSE-kde4_pure 的樣式衝突
您可以放心移除此 pattern(唯一的後果就是您的 KDE 不純了...)
安裝完後,到 YaST->硬體->音效->其他(右下角)->PulseAudio 組態設定->啟用 PulseAudio 支援
完成後您的 Stardict 即可順利啟動

如果您目前的系統音效沒問題,單為 stardict 啟動了 pulseaudio 音效
這樣會不會有點奇怪呢?
在 kde 控制中心裡,您也可以將所有的音效都用 pulseaudio
但是我有點怕怕的
您可以將測試結果告訴我

或者若您不在乎 stardict 的事件音效(發出'叮叮'的聲音)
那麼,不用安裝 pulseaudio,乖乖的將 espeak 模組移除,就不用變更音效設定了
espeak 模組位置為 /usr/lib(64)/stardict/plugins/stardict_espeak.so
另一個語音模組您也可以一併移除(因為不好聽)
/usr/lib(64)/stardict/plugins/stardict_festival.so
但是要使用真人發音是一個重要的功能
不能使用就太可惜了
預設安裝 stardict 時,會一起安裝 WyabdcRealPeopleTTS 語音模組
雖然聲音有男有女,但是十分清晰
而且每個字都是一個 .wav 檔案

根據 http://wiki.qstardict.ylsoftware.com/Pronouncing_words_with_WyabdcRealPeopleTTS 所提供的方法,
稍做了修改:
1. 若您是從 Education 的套件庫安裝的 stardict-dictionaries-WyabdcRealPeopleTTS 套件
安裝位置是在 /usr/share/stardict/WyabdcRealPeopleTTS
所以將 pronounce-word.sh 修改如下:
#!/bin/bash

TTS_PATH=/usr/share/stardict/WyabdcRealPeopleTTS
WORD=`echo $* | tr A-Z a-z`
for WORD2 in $WORD
do play ${TTS_PATH}/${WORD2:0:1}/${WORD2}.wav
done

2. wiki 中將此 script 放在家目錄中並以 "." 開頭命名為隱藏檔
我覺得把他放在 ~/bin 中,並加上執行權限,並沒有什麼不妥的
$ chmod +x ~/bin/pronounce-word.sh

3. 測試
$ pronounce-word.sh good

/usr/share/stardict/WyabdcRealPeopleTTS/g/good.wav:

File Size: 5.88k Bit Rate: 88.9k
Encoding: Unsigned PCM
Channels: 1 @ 8-bit
Samplerate: 11025Hz
Replaygain: off
Duration: 00:00:00.53

In:100% 00:00:00.53 [00:00:00.00] Out:25.4k [ | ] Hd:3.2 Clip:0
Done.

就可以讀出發音了,您也可以一次讀一整句(字間時距有點太長就是了)
這樣可以單純將此 script 當嘗試發音工具而不一定要啟動 stardict
4. 要在 stardict 中使用,請在 stardict 的偏好設定->音效中
勾選 "使用 TTS(語音合成)程式"
並在指令列中填入
pronounce-word.sh %s

如下圖:
寄件者 openSUSE 11.2

重新開啟 stardict 後就可以使用發音功能了

2 則留言:

Unknown 提到...

話說有了 google dictionary

就在也沒安裝過其他的字典local端軟體了 :-)

Unknown 提到...

有時不一定是網路上的啊^^