3个开源TTS(四)eSpeak1.06的源码调试环境vim+vimgdb
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如下:
- LIBS=-lstdc++ libportaudio.so.0.0.18
- all: speak
- .cpp.o:
- $(CXX) -g $(CXXFLAGS) -I. -c $<
- speak: $(OBJS)
- $(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:
- set nocp
- set ru
- set nu
- syntax on
- set sw=2
- set ts=2
- colorscheme lx
- 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相关推荐
- 服务器端编程心得(七)——开源一款即时通讯软件的源码
服务器端编程心得(七)--开源一款即时通讯软件的源码 2017年04月06日 22:57:01 analogous_love 阅读数:30222更多 所属专栏: 高性能服务器编程实现细节详解 版权声明 ...
- [四]RabbitMQ-客户端源码之Frame
欢迎支持笔者新作:<深入理解Kafka:核心设计与实践原理>和<RabbitMQ实战指南>,同时欢迎关注笔者的微信公众号:朱小厮的博客. 欢迎跳转到本文的原文链接:https: ...
- cesium等高线_Cesium开源三维地球离线地图发布源码示例功能
一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...
- 面试官系统精讲Java源码及大厂真题 - 06 LinkedList 源码解析
06 LinkedList 源码解析 智慧,不是死的默念,而是生的沉思. --斯宾诺莎 引导语 LinkedList 适用于集合元素先入先出和先入后出的场景,在队列源码中被频繁使用,面试也经常问到,本 ...
- ROCBOSS开源微社区轻论坛类源码
ROCBOSS开源微社区轻论坛类源码 ☑️ 编号:ym477 ☑️ 品牌:无 ☑️ 语言:微信小程序 ☑️ 大小:5.9MB ☑️ 类型:微社区轻论坛 ☑️ 支持:微信小程序
- java开源即时通讯软件服务端openfire源码构建
java开源即时通讯软件服务端openfire源码构建 本文使用最新的openfire主干代码为例,讲解了如何搭建一个openfire开源开发环境,正在实现自己写java聊天软件: 编译环境搭建 调试 ...
- php开源多功能留言板网站源码V1.2
php开源多功能留言板网站源码V1.2 软件特点: 1.SpeedPHP框架驱动,高效轻快. 2.可创建多个留言板:每个留言板都能设置不同的模板:每个留言板都能设置单独管理员: 3.内置两套模板一个默 ...
- Cesium开源三维地球离线地图发布源码示例功能
一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...
- 开源PHP社区交友APP系统源码/傻瓜式搭建
开源PHP社区交友APP系统源码/傻瓜式搭建 ☑️ 编号:ym228 ☑️ 品牌:PHP ☑️ 语言:PHP ☑️ 大小:132MB ☑️ 类型:APP系统源码 ☑️ 支持:APP
- WordPress开源的社区主题/XywoStar主题源码
WordPress开源的社区主题/XywoStar主题源码 ☑️ 编号:ym341 ☑️ 品牌:WordPress ☑️ 语言:php ☑️ 大小:1.5MB ☑️ 类型:XywoStar主题 ☑️ ...
最新文章
- JetBrains —— JetBrains系列IDE优化配置(提高启动和运行速度)
- Ubuntu上使用octopress+github建立个人博客
- uclinux下实现多线程[转]
- maven 无效的源发行版11
- 面向对象程序设计要考虑的7个原则
- python第k序列元素查找_python查找第k小元素代码分享 -电脑资料
- Android点击通知栏信息后返回正在运行的程序,而不是一个新Activity
- 揭秘2017双11背后的网络-双11的网络产品和技术概览
- C# 16进制转10进制 16进制字符串转换
- win10强行自定义分辨率(笔记本win10强行自定义分辨率)
- OpenCV的车道线检测
- 多次重复原生进入RN优化Catalyst Instance has already disappeared
- vue垂直布局_基于 Flex 实现两端对齐垂直布局
- 爬取偶像/私房小姐姐图片--爬虫基础篇
- VHDL脉冲激光测距
- modbus slave和modbus poll
- 【数学建模】模糊综合评价
- 幼儿园管理系统c语言,【资源学习】c语言程序代码,登录幼儿园200个小朋友的数据...
- 路由器wan和lan口
- “魔盗”窃密木马(FakeCDR)研究