2020-2-18
完成Ubuntu Daily Build的下载、安装和更新。这个过程话费了近一周时间,如果在国外,这应该是1个小时就能完成的事情。网络条件恶劣导致计算机软件开发生产效率远低于国外。
2020-2-19
发现Ubuntu 20.04的读屏软件Orca无法读出普通话。经调查发现speech-dispatcher的语音设置已失效,无法通过spd-conf更改朗读语言。于是发邮件到speech-dispatcher询问这个情况。
2020-2-20
得到speech-dispatcher社区的回复是speech-dispatcher的配置已更改为使用当前系统Locale,spd-conf配置不再被使用。相关issue:https://github.com/brailcom/speechd/issues/99
于是我把系统语言设置成德语,确认了这个说法。但是中文为何没有被读出来就是一个谜。
2020-2-21
经进一步测试发现`spd-say -lzh 123`是可以正常读出普通话的。`orca -s`修改配置似乎无法保存。谜底也需要研究Orca才知道。到https://github.com/GNOME/orca/releases 下载最新版Orca,保存功能正常了。发现如果选择zh-CN语音,似乎由于此语音无效而变回了英文。如果选择cmn则可以朗读中文了。
2020-2-22
`speak-ng -vzh-CN 123`可以读出普通话。`spd-say -lzh-CN 123`则不能,其效果似乎等价于指定一种不存在的语言`spd-say -labc 123`。看起来问题还是出在speech-dispatcher在语言代码上的映射问题。
2020-2-24
在speech-dispatcher里espeak-ng的log中有这样的部分,这里显示zh-cn+0语言设置出错(但在命令行里espeak-ng -vzh-cn+0是可以说普通话的)。另外一个略奇怪的问题是为什么语言被重复设置2次。
Mon Feb 24 09:21:49 2020 [564451]: Espeak-ng: set_language_and_voice zh-cn 1
Mon Feb 24 09:21:49 2020 [564462]: Espeak-ng: set_language_and_voice name=zh-cn+0
Mon Feb 24 09:21:49 2020 [564516]: Espeak-ng: Error selecting language zh-cn+0
Mon Feb 24 09:21:49 2020 [564527]: Espeak-ng: set_language_and_voice zh-cn 1
Mon Feb 24 09:21:49 2020 [564537]: Espeak-ng: set_language_and_voice name=zh-cn+0Mon Feb 24 09:21:49 2020 [564559]: Espeak-ng: Error selecting language zh-cn+0
编译安装speech-dispatcher最新版本之后,普通话似乎可以正常说出了(`spd-say 123`和spd-say -lzh-CN 123都可以)。因此,目前所有的问题都只需要安装最新的speech-dispatcher和Orca就可以了。
在最近的测试中发现,粤语的eSpeak不能正常功能,有些字会漏掉, `espeak-ng -vyue 123; espeak-ng-vyue 1234567890`可以重现问题。考虑到用户可能很少,暂不花时间去修复了。
考虑到eSpeak字典是和版本相关的,容易出错。默认安装的espeak-ng似乎有比较全的字典了。因此,决定放弃维护eGuideDog工具箱中的espeakedit包,及时生效。
2020-2-26
升级Ekho的espeak库到espeak-ng。
eGuideDog工具箱支持安装最新版speech-dispatcher。
2020-3-4
升级eGuideDog工具箱Orca到最新版本。
2020-3-13
初步完成Ekho对speech-dispatcher-0.10接口的适配。一些细节还有待完善。
2020-3-17
更新eGuideDog工具箱文档,去掉不再需要的ibusreader。
2020-3-19
Ekho支持声音图标播放以及大写变调。
2020-3-25
speech-dispatcher的问题还是比较多。最新稳定版0.9.1不支持中文。0.10.0.rc2在刚启用读屏的时候espeak-ng不能正常读出终端内容(例如ls),切换一下标签页才可以。而master版本切换标签页也不能正常读终端内容。ekho则在0.10.0.rc2和master版本中都不能读终端内容。正在尝试清晰地描述问题,然后反馈到社区。
2020-3-27
经在不同系统多次测试后,各speechd版本一致表现为:刚启用读屏的时候espeak-ng不能正常读出终端内容(例如ls),切换一下标签页才可以。问题可能不在speechd,而是Orca,尝试更新最新版Orca再测试,然后反馈到社区。
ekho在读屏关闭的时候无法读出“屏幕阅读器关闭”,在speech-dispatcher.log里是可以看到这句话的。
2020-3-31
向Orca邮件列表反馈了bug。
修复了Ekho缺失合成结束标记导致使用不正常的问题(在读屏关闭的时候无法读出“屏幕阅读器关闭”)。经过了一周多的调试,终于攻克了这个难关,可以继续开发了。
2020-4-2
Orca开发者已收到bug反馈,表示会跟进。
测试发现Orca已经不再支持ibus panel的朗读,因此ibusreader需要重新继续开发维护:
- https://github.com/hgneng/ibus.git
- https://github.com/hgneng/ibus-pinyin.git
官方的ibus-pinyin已经换成了ibus-libpinyin: https://github.com/libpinyin/ibus-libpinyin ,Ubuntu 20.04里使用的ibus-libpinyin版本是1.11.1,而github上最新的版本是1.11.92,比1.11.1新一个版本,新大半年的时间。
Ubuntu 20.04使用的ibus版本已经是最新的1.5.22: https://github.com/ibus/ibus/releases/download/1.5.22/ibus-1.5.22.tar.gz
计划的开发步骤是:
- 把旧的包调试运行成功(在2018年2月的时候可能是运行成功的)
- 把最新的官方版本编译运行。
- 把官方最新的代码合并过来,再调试。
2020-4-5
ibus的修改差异可以对比:hgneng/ibus 3ebeb65(2015-11-4) - aa42c85(2016-1-12), fc54b0c(2018-2-21) - 36fa2f5(2018-2-26)。怀疑现在的作用仅剩下读出“拼音输入法”,如果是真的,考虑不对其修改。
ibus-pinyin修改差异可以看:https://github.com/hgneng/ibus-pinyin/commit/5d311bec9079e7b147eaf3dd4150223fd02f3301
手动卸载Ubuntu自带的ibus-libpinyin后从源代码编译ibus-libpinyin,正常运行。
forked ibus-libpinyin: https://github.com/hgneng/ibus-libpinyin.git , 计划把ibus-pinyin的修改移植到ibus-libpinyin上。
2020-4-10
对ekho-8.2做测试并修复一些安装问题。
更新dog,支持在Ubuntu 20.04上安装ekho,并支持不同版本Ubuntu安装不同版本的ekho。
测试并确认2020-3-31反馈到社区的bug已得到修复。
2020-4-15
speech-dispatcher客户端报错:(process:76943): GLib-DEBUG: 16:41:21.054: posix_spawn avoided (fd close requested)
Failed to connect to Speech Dispatcher:
Error: Can't connect to unix socket /run/user/1000/speech-dispatcher/speechd.sock: Connection refused. Autospawn: Autospawn failed. Speech Dispatcher refused to start with error code, stating this as a reason:
发邮件到社区问:speechd-discuss@nongnu.org
2020-4-17
ibusreader无法连接speech-dispather的问题已解决。
The problem lies in my configuration. /var/log/speech-dispather/speech-dispatcher.conf tells me that the program loads modules in /usr/local/lib/speech-dispatcher-modules/ but I installed speech-dispatcher in /usr/lib.
spd-say works fine. That program is a static linked binary which may make it find the right path of speech-dispatcher modules.
I have installed speech-dispatcher in /usr/local/ before. After I clean up version in /usr/local speech-dispatcher the program works.
2020-4-20
使用utfcpp库解决编码问题。ibusreader基本已可以使用了,还差一些参数接口调试。
“的”字的音需要调试一下,现在是第一声,时长也太长了,例如“会议的会”。
2020-4-22
ibusreader基本完成,代码主要差异在:https://github.com/hgneng/ibus-libpinyin/commit/4a9308f066eb3f5af03b358f1221ac3e95a2b611,https://github.com/hgneng/ibus-libpinyin/commit/5c17280d63a3c9cb293a400eceb4b4d0891bc047
sd_ekho还是一如既往地崩溃:
#0 0x00005632ec21f5c1 in processStreamInput (stream=0xcd05d267d8c5d89f) at sonic/sonic.c:1019
#1 0x00005632ec1cc04e in ekho::EkhoImpl::writeToSonicStream (this=0x7fbc97d81010, pcm=0x7fbc70017970, frames=1323, type=ekho::OVERLAP_NONE)
at src/libekho_impl.cpp:785
#2 0x00005632ec1cb790 in ekho::EkhoImpl::writePcm (pcm=0x7fbc70017970, frames=1323, arg=0x7fbc97d81010, type=ekho::OVERLAP_NONE, tofile=false)
at src/libekho_impl.cpp:589
#3 0x00005632ec1ca43b in ekho::EkhoImpl::speakPcm (pcm=0x7fbc70017970, frames=1323, arg=0x7fbc97d81010, type=ekho::OVERLAP_NONE)
at src/ekho_impl.h:228
#4 0x00005632ec1cafa6 in espeakSynthCallback (wav=0x7fbc70017970, numsamples=1323, events=0x7fbc700183d0) at src/libekho_impl.cpp:275
#5 0x00007fbc98fe1091 in Synthesize (unique_identifier=unique_identifier@entry=0, text=<optimized out>, flags=<optimized out>)
at src/libespeak-ng/speech.c:473
#6 0x00007fbc98fe18eb in sync_espeak_Synth (unique_identifier=unique_identifier@entry=0, text=<optimized out>, position=0,
position_type=<optimized out>, end_position=<optimized out>, flags=<optimized out>, user_data=0x0) at src/libespeak-ng/speech.c:566
#7 0x00007fbc98fe1c19 in espeak_ng_Synthesize (text=<optimized out>, size=<optimized out>, position=<optimized out>,
position_type=<optimized out>, end_position=<optimized out>, flags=<optimized out>, unique_identifier=<optimized out>, user_data=0x0)
at src/libespeak-ng/speech.c:674
#8 0x00007fbc98fd37d5 in espeak_Synth (text=<optimized out>, size=<optimized out>, position=<optimized out>, position_type=<optimized out>,
end_position=<optimized out>, flags=<optimized out>, unique_identifier=0x0, user_data=0x0) at src/libespeak-ng/espeak_api.c:93
#9 0x00005632ec1cecbb in ekho::EkhoImpl::synthWithEspeak (this=0x7fbc97d81010, text="average-pitch\":") at src/libekho_impl.cpp:1792
#10 0x00005632ec1d0a5c in ekho::EkhoImpl::getEnglishPcm (this=0x7fbc97d81010, text="average-pitch\":", size=@0x7fbc9657ccd8: 6250)
at src/ekho_impl.h:247
#11 0x00005632ec1cf646 in ekho::EkhoImpl::synth2 (this=0x7fbc97d81010,
text="\"Caps_Lock\",\n", ' ' <repeats 16 times>, "\"Shift_Lock\"\n", ' ' <repeats 12 times>, "],\n", ' ' <repeats 12 times>, "\"speechServerFactory\": \"orca.speechdispatcherfactory\",\n", ' ' <repeats 12 times>, "\"speechServerInfo\": [\n", ' ' <repeats 16 times>, "\"ekho\",\n", ' ' <repeats 16 times>, "\"e"..., callback=0x5632ec1ca405 <ekho::EkhoImpl::speakPcm(short*, int, void*, ekho::OverlapType)>, userdata=0x7fbc97d81010)
at src/libekho_impl.cpp:1922
#12 0x00005632ec1cc3d3 in ekho::EkhoImpl::speechDaemon (args=0x7fbc97d81010) at src/libekho_impl.cpp:841
#13 0x00007fbc98bd7609 in start_thread (arg=<optimized out>) at pthread_create.c:477
2020-4-23
今天无法更新软件,可能是因为今天是Ubuntu 20.04发布的日期,过一天再尝试。
找不到这个包:libsndfile1-dev
Ekho声音了暂时替换了一个de5的音频文件。
2020-4-24
昨天软件无法更新的问题应该是虚拟机太久没有重启,时间差了好几个小时导致出现问题。重启虚拟机后就解决了。
升级了dog,增加对ekho是否安装成功的检测。
升级了orca到最新版3.37.1。
发布ibusreader新版本:ibus-libpinyin-1.11.92
下载正式版的Ubuntu 20.04 iso文件,估计要一整天时间。
把创建iso的脚本手动运行了一遍。安装程序崩溃,但可以进入系统试用模式,之后也能安装。读屏没有ekho语音。等正式版iso下载完成后再重新打一次包。
2020-4-26
使用正式版iso打包,安装程序崩溃的问题解决了。
但是光盘启动检查文件完整性的时候找到1个文件缺失。
安装程序没有自动启用读屏软件。
使用SUPER+ALT+s启动读屏软件后,没有使用ekho语音(应该是安装不成功)。
安装过程还是需要下载语言包,并且时间很长。
在安装的后阶段还是要下载30分钟的软件包(可跳过),不知道为什么。
2020-4-27
第3次打包:
光盘启动检查文件完整性的时候找到1个文件缺失。
安装程序没有自动启用读屏软件。
使用SUPER+ALT+s启动读屏软件后,没有使用ekho语音(应该是安装不成功)。
进入Live模式运行orca -s找不到ekho选项,但是ekho命令是正常的。
可能是因为ubuntu用户有特殊配置,考虑看看/home/ubuntu/.local/share/orca。
2020-4-28
把配置好ekho的.local/share/orca目录放到/etc/skel/,让ubuntu用户获得ekho设置。
第4次打包:还是无法使用ekho,经调查发现orca没有安装成功,软件源中需增加universe。
第5次打包:还是无法使用ekho,经调查发现软件依赖中缺少texinfo,导致ekho安装不完全。
第6次打包:ekho没有成为默认选项,但存在于配置项中。/etc/skel/.local/share/orca可能没有修改成功,重新覆盖再试试。
第7次打包:还是失败了,检查了一下脚本服饰的路径漏了etc。
第8次打包:ekho可以加载了,安装程序里有很多显示是中文,但读屏读的是英文,暂时不管了。下一步解决读屏没有自动启动的问题。问题可能在gsetting。
2020-4-29
第9次打包:读屏可以自动启动了。ibusreader不能正常工作,可能是安装失败了。动作键(制表符、返回键)不读出来的体验会好些。
第10次打包:ibusreader成功安装了,但是调用了espeak作为tts,而不是Ekho。制表符、返回键还是被读出来了(经调查发现复制脚本有问题)。文件检查通过了。
第11次打包:已知问题基本修复了,准备再打一个干净的包发布。试用模式桌面无法获取焦点,SUPER+1可以运行安装程序,或按SUPER在程序列表里选。但是读屏在这个模式下无法使用,所以不推荐使用试用模式,而应该直接安装。
第12次打包:又出现了1个文件错误的问题,暂选用上一次的包发布。
2020-4-30
上传包到SourceForge和腾讯云。
更新主页信息。
在oschina上发布新闻。
评论