因为有个小孩上幼儿园了,想开始教他一些汉语拼音和基本的汉字,但通过一书本和卡片又有些枯燥乏味,于上就上网搜索一些辅助认字的应用,还购买了悟空识字APP,在用的过程中发现他设置了很严格的关卡,学什么字,也是被固定死的,也就是只有把今天的学习完成了才能进行下一课,这对于上小学的小朋友可能比较好,但是对于幼儿来说的话,太过严格的限制往往容易让其失去兴趣。而且,说实话他其中的一些动画做得太过牵强,本来基本没有联系的东西加在一起,扰乱视听。小孩子字没认几个,就想着完后面的游戏,可以说有一点本末倒置。
在搜寻的过程中还发现了GCompris-qt, 是一个非常优秀的辅助教育套件,集成了大量的应用。而且是支持多语言,也就是说有中文的翻译版本。其中有一个帮助学习词汇的应用 lang,因为其中有看图听音,听音辨字等小游戏,对于学习是已经够了。但是其中的图片全是 art4apps 项目中已有的图片,对于类似讲中文的用户来讲的话还是有点不合适。于是就想,是否可以将自己的图片和声音加到GCompris中去,由我来安排他学什么字,根据实际随时调整。我虽没胡直接用QT开发过东西,但实际上是有一些接触的,经过一番折腾,真就实现了。现在想来其实不困难,主要是其上踩了一些坑,这里记下来以供参考,主要针对有一定开发能力的人群。
想想购买悟空识字有些后悔了,我的近200人民币啊。
GCompris-qt源码,到Github上下载下来,他会依赖于另一个项目qml-box2d,如果你是通过 git clone 下来的源码的话,在cmake的时他会自动去下载,但如果你采取的下载ZIP格式的压缩包的话则需要手动将qml-box2d下载后放到GCompris-qt/external文件夹下。
声音用Audacity这个软件进行录制,如果你还没有安装的话,就sudo apt install audacity安装,录制的过程就简单了,可以一条一条的录,也可以一次性全部录好后进行批量导出。我采用的是后一种办法,但要求你先将你的图片对应的汉字按次充准备好,最好是打印出来,在录的过程中要方便一些,可以保证每个词中间的间隔的时间短一些,切分后加入到软件中播放的效果才好。录好了要先进行混音,就是把立体声转单声道,尔后分段设置好标记才可以批量导出。这里要注意的是设置标记不可以用中文,软件会卡死。我就依次用数字给进行标记的,你可以用hz1,hz2等这样的标记,跟图片对应起来。当然如果你不想每次都输入hz,也可只输字母,等导出来了后再写两行代码全部重命名就是了。如果在录的过程中读的顺序错了或者少读了两个字,这也没有关系,一会再补上就是了,没有必要全部重录一遍。最后有一个配置文件设置图片和声音的对应关系,所以图和音的名字具体是什么并不重要,只是有一定的显然的对应关系,方便你后一步进行处理。但是名字中不能有汉字,否则会出现找不到资源的情况。导出的时候选择ogg格式。
还有你读的字有的声音大,有的声音小,这也没有关系,在导出后处理一下就好了。这要求你的计算机上装有 normalize-audio 这个包。
处理好的声音文件放到GCompris-data/voices/zhCN/words/ 这个文件夹下,可能你下载下来的资源,在zhCN下没有words这个文件夹,新建一个就好。
为了保证 letterinword、missingletter和hangman这几个应用的正常工作,特别是我发现原生的语音在使用这几个应用时单词是不发音的,主要是其中缺少单词的录音。所以将voices/enUS/words/文件夹下的所有声音文件拷贝到voices/zhCN/words/这下文件夹下。
至此该准备的就已经准备好了,接下来,我们就要进行集成了。
这一步说难不难,就是容易采坑,顺便提一下,其中lang这个应用界面的灵活性还有得提升,后面再讲是哪里,为什么。
*Note*这时还有一个坑。文件中的课程名字如果修改了的话,就要看下一节了,否则可以略过。
至此基本上要改的地方就改完了。接下来就是编译运行进行测试了。
没什么问题的话可以 sudo make install 安装到系统中,大功告成。
修改完毕后需要在 build目录下再执行一次 cmake ..,然后再make。
如果你只有10个字要加入课程,完全可以用手动的就行了,但如果有500个字要加入课程,哪么有一个批量处理的工具有太好了。当然你也可以借助 Excel来进行处理,效率也还可以。如果你需要这样一个工具,可以留言。