3个开源TTS选择eSpeak分析完吧,至少它也是支持中文了吧。本着简单起见,选择eSpeak版本的1.06开始看源码;要分析总是免不了要调试,没有太多经验,选择vim+vimgdb。下面详细介绍调试环境及基本运行流程。
        (1)eSpeak1.06概况
         这个版本不支持Windows环境,那就别提DLL之类的了。比起最初最早的1.05至少给了Makefile和已经编译出的speak可执行文件。想要直接利用这个版本发声有些困难,因为speak使用的是portaudio的v18,需要动态库libportaudio.so.0,而目前我的环境中是v19的,有些变化,因此不兼容。而想使用最新的eSpeak的支持v19的头文件显然也不现实,因此劝你最好别折腾了,即使卸载了环境中的portaudio重新安装对应版本也是有问题,会提示“Failed to initialise the PortAudio sound”(原因还没找到)。但其实说明程序运行基本没有问题的,因此不妨不用发声,直接写入WAV文件。虽然其提示文档中没有提到这个命令,但是代码里面的help写的清清楚楚。
         (2)源码环境准备
         a. 下载eSpeak1.06的运行包和源码包,把运行包中的speak-data文件夹拷贝到默认目录/usr/share/,当然你可以更改。
         b. 解压缩源码包,修改src目录下的Makefile,现在只是要能写入WAV文件,因此可以删除其中的-lportaudio参数,如果想留着也可以,把编译好的库文件放到PATH路径中,或者像我直接把安装好的libportaudio.so.0.0.18文件(安装早期版本)拷贝到src目录下,在Makefile中的LIBS后写上libportaudio.so.0.0.18 。最后,为了方便能调试,在$(CXX)后加上-g参数,修改后部分Makefile如下:

  1. LIBS=-lstdc++ libportaudio.so.0.0.18
  2. all: speak
  3. .cpp.o:
  4. $(CXX) -g $(CXXFLAGS) -I. -c $<
  5. speak: $(OBJS)
  6. $(CXX) -g -o $@ $(OBJS) $(LIBS)

(3)搭建vim+vimgdb调试环境
            我的环境:Debian6.0(root登录)  vim-7.2 (官网)
             vimgdb72-1.14(对应vim版本) http://sourceforge.net/project/showfiles.php?group_id=111038&package_id=120238
             可以使用vim的GUI(gvim)和pyclewn配合的。
             vimgdb72-1.14的使用步骤其说明文档INSTALL.TXT中都有,这里有说不清的地方可以参照对比。
             a.打补丁:下载vim-7.2源码,vimgdb72-1.14,都解压在同一目录下,为源码打补丁以支持gdb
             命令:patch -d vim72 --backup -p0 < vimgdb/vim72.diff
             b.安装前配置vim:在编译vim前需要配置,进入vim的src目录,修改其Makefile文件,包括配置你是否使用GUI(gvim),支持perl、python,tcl等,文件中的注释非常详细,比如选择支持python时提示:“NOTE: Using this together with Perl may cause a crash in initialization”。我的配置如下:
             打开cscope接口:CONF_OPT_CSCOPE = --enable-cscope
             打补丁已经修改的:CONF_OPT_GDB = --enable-gdb
             支持中文:CONF_OPT_MULTIBYTE = --enable-multibyte  CONF_OPT_INPUT = --enable-xim
             特性支持:CONF_OPT_FEAT = --with-features=huge
             修改完后保存,在命令行下直接make        make install 
            c.安装后配置vim:下本vim中文手册,选择个合适的配色啊,语法高亮,缩进之类的,写在vim的runtime环境目录下的.vimrc文件中,没有可以创建。可以用:set runtimepath?命令在vim中查看你的目录,我的在root文件夹下。
            d.安装vimgdb:解压缩vimgdb_runtime.tgz中的文件到vim的runtime下的.vim文件夹中,这样在.vim文件夹中包含
            vimgdb使用帮助:doc/gdb.txt
            vimgdb命令快捷键:macros/gdb_mappings.vim
            gdb语法:syntax文件夹
            e.vim中配置vimgdb:在vim中运行::helptags ~/.vim/doc 使得可以使用:help vimgdb命令,查看vimgdb帮助;运行:run macros/gdb_mappings.vim命令,关联gdb的命令快捷键,例如空格键会进入gdb命令行,F7切换是否使用vimgdb快捷键,shift+r键表示运行,可以在gdb_mappings.vim修改和理解。

 f.我的.vimrc:

  1. set nocp
  2. set ru
  3. set nu
  4. syntax on
  5. set sw=2
  6. set ts=2
  7. colorscheme lx
  8. run macros/gdb_mappings.vim

配置啰嗦了这么多,编译eSpeak运行文件下一篇继续吧。
         参考:
                【1】 vi/vim使用进阶: 在VIM中使用GDB调试 – 使用vimgdb  http://easwy.com/blog/archives/advanced-vim-skills-vim-gdb-vimgdb/
                【2】 ubuntu vim7.2 vimgdb安装方法  http://www.zhouwenyi.com/name/267058

3个开源TTS(四)eSpeak1.06的源码调试环境vim+vimgdb相关推荐

  1. 服务器端编程心得(七)——开源一款即时通讯软件的源码

    服务器端编程心得(七)--开源一款即时通讯软件的源码 2017年04月06日 22:57:01 analogous_love 阅读数:30222更多 所属专栏: 高性能服务器编程实现细节详解 版权声明 ...

  2. [四]RabbitMQ-客户端源码之Frame

    欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...

  3. cesium等高线_Cesium开源三维地球离线地图发布源码示例功能

    一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...

  4. 面试官系统精讲Java源码及大厂真题 - 06 LinkedList 源码解析

    06 LinkedList 源码解析 智慧,不是死的默念,而是生的沉思. --斯宾诺莎 引导语 LinkedList 适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用,面试也经常问到,本 ...

  5. ROCBOSS开源微社区轻论坛类源码

    ROCBOSS开源微社区轻论坛类源码 ☑️ 编号:ym477 ☑️ 品牌:无 ☑️ 语言:微信小程序 ☑️ 大小:5.9MB ☑️ 类型:微社区轻论坛 ☑️ 支持:微信小程序

  6. java开源即时通讯软件服务端openfire源码构建

    java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...

  7. php开源多功能留言板网站源码V1.2

    php开源多功能留言板网站源码V1.2 软件特点: 1.SpeedPHP框架驱动,高效轻快. 2.可创建多个留言板:每个留言板都能设置不同的模板:每个留言板都能设置单独管理员: 3.内置两套模板一个默 ...

  8. Cesium开源三维地球离线地图发布源码示例功能

    一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...

  9. 开源PHP社区交友APP系统源码/傻瓜式搭建

    开源PHP社区交友APP系统源码/傻瓜式搭建 ☑️ 编号:ym228 ☑️ 品牌:PHP ☑️ 语言:PHP ☑️ 大小:132MB ☑️ 类型:APP系统源码 ☑️ 支持:APP

  10. WordPress开源的社区主题/XywoStar主题源码

    WordPress开源的社区主题/XywoStar主题源码 ☑️ 编号:ym341 ☑️ 品牌:WordPress ☑️ 语言:php ☑️ 大小:1.5MB ☑️ 类型:XywoStar主题 ☑️ ...

最新文章

  1. JetBrains —— JetBrains系列IDE优化配置(提高启动和运行速度)
  2. Ubuntu上使用octopress+github建立个人博客
  3. uclinux下实现多线程[转]
  4. maven 无效的源发行版11
  5. 面向对象程序设计要考虑的7个原则
  6. python第k序列元素查找_python查找第k小元素代码分享 -电脑资料
  7. Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity
  8. 揭秘2017双11背后的网络-双11的网络产品和技术概览
  9. C# 16进制转10进制 16进制字符串转换
  10. win10强行自定义分辨率(笔记本win10强行自定义分辨率)
  11. OpenCV的车道线检测
  12. 多次重复原生进入RN优化Catalyst Instance has already disappeared
  13. vue垂直布局_基于 Flex 实现两端对齐垂直布局
  14. 爬取偶像/私房小姐姐图片--爬虫基础篇
  15. VHDL脉冲激光测距
  16. modbus slave和modbus poll
  17. 【数学建模】模糊综合评价
  18. 幼儿园管理系统c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...
  19. 路由器wan和lan口
  20. “魔盗”窃密木马(FakeCDR)研究

热门文章

  1. C# 缓存学习第一天
  2. jcseg 1.7.2 版发布了
  3. WCF读书笔记(1)
  4. [整理]让winCE支持中文界面(可切换至英文界面)
  5. NHibernate1.2在VS2005里使用的基础
  6. Web 的将来是语义的
  7. Jmeter使用SSL(HTTPS协议)
  8. 第133天:移动端开发的一些总结
  9. Drupal开发时如何使用远端图片减轻工作量
  10. 7.Prometheus 监控技术与实践 --- 可视化