闲来无事,在Archlinx下装了stardict发现有个喇叭图标可以用来朗读单词,但是点击无声,原来stardict使用festival --tts朗读单词,于是安装了festival,stardict终于可以发生了,然而festival貌似只有男声,而且不能朗读中文。festival朗读文件使用命令:
(附Archlinux下安装使用pacman -S festival espeak)
festival --tts 文件名
在网上搜索了一下发现espeak可以朗读中文,安装了espeak,espeak使用方法:
朗读句子:
espeak -vzh “hello world”
espeak -vzh “你好”
其中-vzh是汉语支持
朗读文件:
espeak -vzh+m2 -s 100 -f 文件名
其中+m2是使用第二种男声发音,类似的+f2是使用第二种女声发音,-s是语速
festival发生中规中距,个人感觉比espeak要流畅,不过espeak可以支持中文,但是听起来怪怪的。
在网上搜了一个,使用espeak发声的c语言例子,贴上来,有空试试看
code:
#include
#include
#include
int main(int argc, char **argv)
{
char word[] = "微软的windows是大坏蛋";
espeak_Initialize(AUDIO_OUTPUT_PLAYBACK, 0, NULL, 0); // 初始化
espeak_SetVoiceByName("zh+f2"); // 设置音源为中文女声
espeak_Synth(word, strlen(word) + 1, 0, POS_CHARACTER, 0,
espeakCHARS_UTF8, NULL, NULL); // 发音,这里使用的是UTF8编码,我的系统用的是GB2312编码,中文发声混乱(说点微软的坏话还真难阿),改天把系统编码改成UTF8再试试看
sleep(3); // 等一段时间,否则程序会立即退出,听不到发音,时间一定要足够长,不然读到一半程序就退出了
espeak_Terminate(); // 回收资源
}
编译采用:g++ test1.c -o test1 -lespeak
Comments
Post a Comment
https://gengwg.blogspot.com/