首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 互联网 >

让StarDict下发古鸽的声音

2012-07-16 
让StarDict发出古鸽的声音Linux下的词典软件当然是StarDict,功能、词库足够使用了,也有语音支持。但语音文件

让StarDict发出古鸽的声音

Linux下的词典软件当然是StarDict,功能、词库足够使用了,也有语音支持。但语音文件仅限于WAV格式。大家最常用的语音库是WyabdcRealPeopleTTS、OtdRealPeopleTTS。这两个库单词量严重不足,很多常用的词也不能发音。StarDict提供另外一套方案,即用TTS程序代替真人发音。这是没办法的办法,发音效果不是一般的差。

?

曾经由网上下载了一个据称有14万单词的库,还是有些单词不能发音。比如说,undisturbed、voluntarily,甚至有些常见的词也不能发音。

?

谷歌的在线词典还是很不错的,大多数单词都有发音。那么,在本地找不到的情况下,能不能让StarDict去下载Google在线词典的语音呢?答案是可以的。考虑:利用StarDict在找不到发音文件后启动TTS程序模拟发音的功能,让StarDict调用我们的自己的脚本。下面就是这个简单的脚本文件。

#!/bin/bash#filename:google-voice#下载的声音文件存放位置VOICEPATH="/var/google-voice"#Google在线词典的音频文件URLVOICEURL="http://www.gstatic.cn/dictionary/static/sounds/lf/0"#声音文件扩展名SUFFIX="mp3"declare -i fileExist#子程序:下载声音文件function downloadvoice(){  let fileExist=0;  wget -q -O $VOICEPATH/$1.$SUFFIX $VOICEURL/$2/$3/$4/$1%23_us_1.$SUFFIX  if [ $? -ne 0 ]; then     wget -q -O $VOICEPATH/$1.$SUFFIX $VOICEURL/$2/$3/$4/$1%23_gb_1.$SUFFIX   fi  if [ $? -ne 0 ]; then     rm -rf $VOICEPATH/$1.$SUFFIX     let fileExist=1     return   fi  if [ ! -d $VOICEPATH/$2 ]; then     mkdir -p $VOICEPATH/$2  fi  mv $VOICEPATH/$1.$SUFFIX $VOICEPATH/$2/$1.$SUFFIX}l1=`expr substr $1 1 1`l2=`expr substr $1 1 2`l3=`expr substr $1 1 3`if [ `expr length "$l3"` -lt 3 ]; thenl3="$l3"_fi#如果本地没有找到对应的声音文件,则去网络上下载。if [ ! -e $VOICEPATH/$l1/$1.$SUFFIX ]; then   downloadvoice $1 $l1 $l2 $l3   if [ $fileExist -ne 0 ]; then      exit 1   fi;fi#本地有声音文件,则用mplayer播放。mplayer -msglevel all=-1 -quiet $VOICEPATH/$l1/$1.$SUFFIX
?

?

使用方法

?? 在StarDict音效选项中,选中使用TTS程序,然后填入:/path/to/google-voice %s

?? (/path/to为google-voice所在的目录)。

?

?使用上面的这个脚本,也可以解决:StarDict不能播放MP3的问题。

?

热点排行