RSS
 

Archive for 02月 28th, 2009

ubuntu 一键查词 真人发声网络版

28 Feb
将真人发声部分改良了一下,提供了网络下载音频的功能。
脚本的调用顺序是dict-notify-send.sh
-> human_voice.sh-> network_human_voice.sh
1、网络音频发声脚本

更加输入的单词自动到dict、有道、dreye下载音频并播放
音频默认下载到/opt/HumanVoice目录
请先执行如下命令

sudo mkdir /opt/HumanVoice || sudo chmod 777 /opt/HumanVoice

network_human_voice.sh
--------------------
#!/bin/bash
# name:     Network Human Voice
# version:  1.0
#
# author:    vangie.du
# mailto:    duwan@yahoo.cn
# website:    http://duwan.spaces.live.com

#exit code
SUCCESS=0
E_NOARGS=65
INVALID_ARGS=128
#human voice dir
HV_DIR="/opt/HumanVoice"

#check argument
if [ -z "$1" ] #noargs
then 
   echo "Usage: `basename $0` word"
   exit $E_NOARGS
elif [ ! `echo "$1" | grep ^[a-zA-Z]` ] #not a word
then
   echo -e "The argument $1 not a word.\nA word must start with a letter."
   exit $INVALID_ARGS
fi

#word
WORD=$1
#lowcase word
LOWERCASED_WORD=`echo $WORD | sed ‘s/.*/\L&/’`
#get the first letter
INITIALS=${LOWERCASED_WORD:0:1}

#the path of voice
VOICE_PATH="$HV_DIR/$INITIALS/$LOWERCASED_WORD.mp3"

function create_dir_if_need(){
    local DIR=$1;
    if [ ! -d "$DIR" ]
    then
        mkdir -p $DIR
    fi
}

function youdao_voice(){
    local orignal_word=$1;
    local VOICE_PATH=$2;
    local YOUDAO_DICT_URL="http://dict.youdao.com/search?client=deskdict&doctype=xml&xmlVersion=3.1&q=$orignal_word"
    local YOUDAO_USER_AGENT="Yodao Desktop Dict (Windows 5.1.2600)"
    local YOUDAO_VOICE_CODE=`wget -q  -U $YOUDAO_USER_AGENT $YOUDAO_DICT_URL -O- | sed -e "/<speech>/!d" -e "s/^.*>\(.*\)<\/.*$/\1/"`
    local YOUDAO_VOICE_URL="http://dict.youdao.com/speach?audio=$YOUDAO_VOICE_CODE"
    if [ -n "$YOUDAO_VOICE_CODE" ]  
    then   
        wget -q  -t3 -T10 -U $YOUDAO_USER_AGENT $YOUDAO_VOICE_URL -O $VOICE_PATH
        return 1
    else
        return 0
    fi
}

function dict_voice(){
    local orignal_word=$1;
    local VOICE_PATH=$2;
    local DICT_URL="http://dict.cn/mini.php?q=$orignal_word"
    local DICT_CODE=`w3m -dump_source -no-cookie $DICT_URL | iconv -f GB2312 -t UTF-8 | sed -e ‘/<\/script><br \/>/!d’ -e "s/.*insertaudio..’\(.*\)’,.*/\1/"`
    local DICT_VOICE_URL="http://dict.cn/mp3.php?q=$DICT_CODE"

    if [ -n "$DICT_CODE" ]  
    then
        wget -q  -t3 -T10 $DICT_VOICE_URL -O $VOICE_PATH
        return 1
    else
        return 0
    fi
}

function dreye_voice(){
    local orignal_word=$1;
    local VOICE_PATH=$2;
    local LOWERCASED_WORD=`echo $orignal_word | sed ‘s/.*/\L&/’`
    local UPCASE_INITIALS=`echo $orignal_word | sed -e ‘s/^\(.\).*/\U\1/’`
    local DREYE_VOICE_URL="http://www.dreye.com.cn/dict/audio/$UPCASE_INITIALS/$LOWERCASED_WORD.mp3"
    local VOICE_EXIST=`wget –spider  $DREYE_VOICE_URL  2>&1 | grep HTTP | sed -e ‘s/[^0-9]//g’`
    if [ $VOICE_EXIST -eq "200" ]
    then
        wget -q -t3 -T10 $DREYE_VOICE_URL -O $VOICE_PATH
        return 1
    else
        return 0
    fi   
}

function pronounce(){
    local VOICE_PATH=$1;
    if [ -f "$VOICE_PATH" ]
    then
        mpg123 -q  $VOICE_PATH
        return 1
    else
        return 0
    fi   
}

#if have downloaded , pronounce direct and exit
pronounce "$VOICE_PATH" || exit $SUCCESS

#create voice dir
create_dir_if_need "$HV_DIR/$INITIALS"

#download voice
dict_voice "$WORD" "$VOICE_PATH" && dreye_voice "$WORD" "$VOICE_PATH" && youdao_voice  "$WORD" "$VOICE_PATH"

#pronounce voice
pronounce "$VOICE_PATH" || exit $SUCCESS

------------------------------
2、本地真人语音发声脚本

需要下载安装 WyabdcRealPeopleTTS真人语音包

human_voice.sh
------------------------------
#!/bin/bash
# name:     Human Voice
# version:  1.0
#
# author:    vangie.du
# mailto:    duwan@yahoo.cn
# website:    http://duwan.spaces.live.com

E_NOARGS=65
HV_DIR="/usr/share/WyabdcRealPeopleTTS"

#check argument
if [ -z "$1" ]  
then 
   echo "Usage: `basename $0` wav-file"
   exit $E_NOARGS
fi

#word
WORD=$1
#lowcase word
LOWERCASED_WORD=`echo $WORD | sed ‘s/.*/\L&/’`
#get the first letter
INITIALS=${LOWERCASED_WORD:0:1}

VOICE_PATH="$HV_DIR/$INITIALS/$LOWERCASED_WORD.wav"

#check file
if [ -f "$VOICE_PATH" ]
then
#pronounce
    play -q $VOICE_PATH
else
    network_human_voice.sh $WORD
fi

--------------------------
3、一键查词脚本
在ubuntu-tweak中将某一快捷键设置为调用脚本dict-notify-send.sh,并且把上面三个脚本放置到$PATH目录,赋予执行权限。

dict-notify-send.sh
--------------------------
#!/bin/bash

a=`xsel -o`
word=`w3m -dump -no-cookie http://dict.cn/mini.php?q="$a" | sed -e ‘$d’ -e ‘s/</ /g’ -e ‘s/>/ /g’`
notify-send -u critical -t 5000 -i ‘/home/vangie/.icons/Mashup/apps/accessories-dictionary.png’  "$a" "$word"
human_voice.sh "$a"

--------------------------

 
No Comments

Posted in ubuntu

 

ubuntu 命令行播放音频

28 Feb
1、播放WAV
安装
sudo apt-get install sox
播放
play a.wav

2、播放MP3
安装
sudo apt-get install mpg321
播放
mpg123 a.mp3

3、播放MIDI
安装
sudo apt-get install playmidi
播放
playmidi a.midi

 
No Comments

Posted in ubuntu

 

ubuntu 一键查词 真人发声增强版

28 Feb
1、安装WyabdcRealPeopleTTS真人语言包
2、安装wav命令行播放工具

sudo apt-get install sox

3、将下面脚本拷贝到PATH路径
wavplay.sh
------------------------
#!/bin/bash
# wavplay.sh

E_NOARGS=65
TTS_PATH="/usr/share/WyabdcRealPeopleTTS"

#check argument
if [ -z "$1" ]  
then 
   echo "Usage: `basename $0` wav-file"
   exit $E_NOARGS
fi

#lowcase word
WORD=`echo $1 | sed ‘s/.*/\L&/’`
#get the first letter
INITIALS=${WORD:0:1}

WAV_PATH="$TTS_PATH/$INITIALS/$WORD.wav"

#check file
if [ -f "$WAV_PATH" ]
then
#pronounce
    play -q $WAV_PATH
fi
------------------------
4、修改查词脚本dict-notify-send.sh
------------------------
#!/bin/bash

a=`xsel -o`
word=`w3m -dump -no-cookie http://dict.cn/mini.php?q="$a" | sed -e ‘$d’ -e ‘s/</ /g’ -e ‘s/>/ /g’`
notify-send -u critical -t 5000 -i ‘/home/vangie/.icons/Mashup/apps/accessories-dictionary.png’  ‘dict’ "$word"
wavplay.sh "$a"
-------------------------

 
No Comments

Posted in ubuntu