初识语音合成软件eSpeak

    在医院取药时听到机器叫自己的名字,有点小好奇。应该是使用了文本转语音技术。出于好奇,百度了一下,发现了这个开源软件eSpeak。下载windows安装包,测试了一下,发现微软的语音技术非常成熟,语音流畅清晰,相比下,eSpeak的语音不太流畅,英语要努力才能听,中文效果离实用距离很远。不管怎样,eSpeak是可以工作的,我作为一个小猿,可以把它组装到自己程序中的跑一跑,不是一件有趣的事情吗?
      说干就干,这其中还是有坑的。我用svn检出了eSpeak的最新代码。我主要使用了其中的两个vc6工程,一个用来生成动态库,一个用来生成命令行程序。先说命令行程序,它居然不使用动态库,说明作者的思路不寻常。它依赖一个叫PAStaticWMME.lib的静态库。该库是另一开源软件PortAudio生成的。我在编译PortAudio时一直没有成功。于是决定直接使用 PAStaticWMME.lib。我在vc2005下编译命令行程序报错缺少libc.lib,它是vc6的c语言运行时库。于是从网上下载了一个libcd.lib,将它改名为libc.lib也可以使用。再编译时报很多函数重复定义,于是将libc.lib添加到忽略库中,编译通过。命令行程序可以对标准输入中的文本进行语音合成后发音。再说动态库工程,直接编译生成的动态库是没有语音播放功能的。如果需要,则要先修改speech.h文件,将被注释的#define USE_PORTAUDIO放开。编译时需要依赖 PAStaticWMME.lib。编译成功后得到espeak_lib.dll和espeak_lib.lib。头文件espeak_lib.h中对每个函数都有注释,有比没有强吧。我在我的QT工程中添加外部库espeak_lib.lib。在对话框构造函数中增加espeak初始化语句,如下。
 
 
static int SynthCallback (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值