在医院取药时听到机器叫自己的名字,有点小好奇。应该是使用了文本转语音技术。出于好奇,百度了一下,发现了这个开源软件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(short *wav, int numsamples, espeak_EVENT *events)
{
    // 你可以根据源码程序里编写这部分代码实现生成语音文件功能,这里忽略掉了
    return(0);
}
// espeak初始化

    int ret = espeak_Initialize(AUDIO_OUTPUT_SYNCH_PLAYBACK, 0, "C:\\Program Files (x86)\\eSpeak", 0);
    if (ret == EE_INTERNAL_ERROR)
    {
        qDebug() << tr("espeak_Initialize fail");
        return;
    }
    qDebug() << tr("espeak_Initialize ok, return") << ret;
    espeak_SetSynthCallback(SynthCallback);   // 设置回调函数
    ret = espeak_SetParameter(espeakRATE, 80, 0); // 语速调慢至每分钟80个字
    if (ret == EE_INTERNAL_ERROR)
    {
        qDebug() << tr("espeak_SetParameter fail");
        return;
    }
    qDebug() << tr("espeak_SetParameter ok");
espeak_Initialize函数的第3个参数是 espeak-data目录。安装espeak的windows安装包后就有该目录。回调函数SynthCallback什么也不做,直接返回0。在播放语音按钮的处理函数中增加以下语句,实现了英文语音合成播放功能。
    espeak_SetVoiceByName("en"); // 使用英语语音
    ret = espeak_Synth(strCode.toUtf8().data(), strlen(strCode.toUtf8().data()),
                       0, POS_CHARACTER, 0, espeakCHARS_UTF8, NULL ,NULL);
    if (ret != EE_OK)
    {
        qDebug() << tr("espeak_Synth error:") << ret;
        return;
    }
    espeak_Synchronize();

初识语音合成软件eSpeak相关推荐

  1. 小学计算机flash,小学信息技术第五册  9.初识flash软件

    第九课 初识flash软件 授课年级:五年级 授课老师:王丽 教材分析: 本课是介绍flash软件的第1课.主要是通过一个flash游戏向学生说明flash软件的启动方法与界面组成.掌握这些知识以后, ...

  2. Linux中文朗读软件--espeak

    一.  介绍 1.          用途:可识别多语言的朗读软件 2.          特点: 1)         能读中文:相对英文,更适合朗读中文 2)         可以在程序中被调用- ...

  3. 【QGIS入门实战精品教程】2.1:初识QGIS软件

    从今天开始,我们一起来学习一款免费开源.对机器要求低.功能强大的GIS软件:QGIS ! 一.QGIS简介 QGIS(原称Quantum GIS)是一个自由软件的桌面GIS软件.它提供数据的显示.编辑 ...

  4. 初识SQ软件质量管理的认识

    SQ软件质量管理的认识 质量是什么 管理是什么 软件是什么 软件如何管理 软件质量如何管理 软件质量管理理论 软件质量管理工具 最后来个签名 质量是什么 质量是衡量产品的性能长期一致性的方法.说法虚无 ...

  5. linux中文语音合成软件,中文TTS 的容易告终(基于linux)之 语音库的告终

    语音库保留着常用汉字的发音(多音的汉字只登记其一种发音,这也是本系统的一个缺点,必需尔后健全),因而先要获得一汉字集,这个汉字集包括了大局部常用的汉字,然后在依据这个汉字集,来一个个的获得汉字的发音, ...

  6. 精讲▍自然语言处理浅谈 技术/工具/方法和应用全都有了

    NLP方向 作者|陈颂光  编辑|树袋熊 由于人们之间普遍以自然语言的形式交流,互联网和各种数据库中的这些非结构化数据中蕴藏了价值连城的大量信息.然而,对于计算机而言,理解自然语言相当困难,实际上这可 ...

  7. eSpeak与ekho交叉编译

    文章目录 0.开源TTS(Text To Speah)的选择和使用 0.1 比较流行的开源TTS项目 0.2 开源项目的选择 1.交叉编译eSpeak 1.1交叉编译PortAudio 1.1.1简介 ...

  8. linux文字声音转换程序,Linux、Win、Android中把文字转换成声音的软件:Ekho

    Ekho(余音)是一款能把文字转换成声音(中文语音合成)的软件,支持粤语.普通话.广东台山话.诏安客语.藏语.雅言和韩语,支持Linux.Android.Windows操作系统,英语通过eSpeak或 ...

  9. 配音软件永久免费的有哪些?这几款免费的配音软件绝对适合你

    不知道大家是否和小编一样,如果刷到了好看的短视频作品,不仅会沉浸在引人入胜的内容里面,同时也会沉醉于它的声音,或字正腔圆,或情感充沛,或激昂,或忧伤,小编一度以为是真人配音,后来才知道,这些声音大多是 ...

  10. 一定要小心AI语音合成技术,我妈就被骗了!

    语音合成技术现在已经非常成熟了.例如高德导航里的各种明星语音包,林志玲为您导航祝您好心情.郭德纲前方有落石车碎人心碎.你镇定一下罗永浩要开始导航了,基本上能够达到以假乱真的效果.大部分时候用户也分不出 ...

最新文章

  1. python太慢了-Python很慢?不一定哦
  2. 积分背后的数字货币,你真的会玩吗?
  3. Word保存自己格式模板的方法
  4. 语言nomogram校准曲线图_R语言实现Cox模型校准度曲线绘制
  5. WCF技术剖析之六:为什么在基于ASP.NET应用寄宿(Hosting)下配置的BaseAddress无效...
  6. Python终端输出中文
  7. strak组件(5):为列表定制预留钩子方法
  8. Python数据分析(二): Numpy技巧 (3/4)
  9. MySQL(16)-----字符串函数
  10. 关于数学建模竞赛经历
  11. 数据库技术与应用知识点小结(上)
  12. 售前工程师是做什么的?
  13. [LCT BZOJ]2959: 长跑
  14. 我今天人品大爆发啊,赚了299美元
  15. C# web 分页控件
  16. 哔哩哔哩2020校园招聘 - K个一组翻转链表 一年中的第几天
  17. 简单概述PCIe总线协议
  18. 2020 对自己好一点之新 Mac Book Pro 环境的安装
  19. 计算机专业欧美排名,数字媒体艺术大学排名TOP3世界榜一览!
  20. Python爬虫爬取酒店评价(携程)

热门文章

  1. linux分区修复命令,在Linux下成功修复分区表出错
  2. 马化腾:谈谈我创办腾讯这些年
  3. Unity 圆形图片实现
  4. sloth(标点工具)使用说明
  5. 麒麟子出了一款免费3D角色虚拟摇杆控制器!这也太好用了
  6. python生成epub文件_将'epub'文件转换为文本
  7. C#之AutoCAD图层样式定义
  8. python在线朗读-python朗读软件
  9. 电脑显示your pc android,新版DeX模式不再强调手机变PC,而是让Android融合PC
  10. 数字图像处理实验四平移性质和旋转性质