让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在线词典的音频文件URL
VOICEURL="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 ]; then
	l3="$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的问题。

猜你喜欢

转载自eidolon.iteye.com/blog/628516