锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C语言开源技术 / espeak / espeak段错误和espeak_Synth段错误
服务方向
人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

espeak段错误和espeak_Synth段错误


错误

在初始化espeak后,进行播放时出espeak段错误和espeak_Synth段错误,这个段错误和另外问题有交织,交织产生了误导,不过我选择了正确的方向,解决了问题。错误代码如下:

		//int ret = espeak_Synth(word, strlen(word) + 1, 0, POS_CHARACTER, 0,
// espeakCHARS_WCHAR, NULL, NULL); // 发音

带注释是因为错的代码不用了。word是发音串内容,后面是一些播放的参数。在默认想法里,函数出错会有提示,也不会有段错误,段错误是其它地方导致的,其实不是。

解决方法

代码换成下面形式:

		unsigned int flags = espeakCHARS_AUTO | espeakENDPAUSE;
int ret = espeak_Synth(word, strlen(word) + 1, 0, POS_CHARACTER, 0, flags, NULL, NULL);

就能正常播放,所以问题肯定是在倒数第三个参数,标志参数,出错的是用的WCHAR,要求传入宽字符,而我传入的不是宽字符,是string的形式,就报段错误了,而用CHARS_AUTO,在espeak内部能识别word里的内容,就不出段错误。

用开源的软件,就是这样的状态,开源维护人只会大方向上帮你完成,不会给你做出来产品,所以遇到问题,要能调整换方向,不要认死理。比如这次的情况,如果认定段错误是espeak初始化没做好,比如espeak不支持线程这类,哪就进入了死胡同了。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内