舍得英语魔法学苑

 找回密码
 注册
查看: 17147|回复: 39

[经验技巧] 【直播帖】完美实现iphone课程语音功能

  [复制链接]
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

    舍得 发表于 2012-1-27 20:59:00 | 显示全部楼层 |阅读模式
    自从打包功能实现以后,舍得曾经发过一篇文章,探讨过利用自制课程包实现iphone版语音功能的方案,由于当时受限于数据库修改权限等因素,此方案的实用性大打折扣。但是,对这一课题的研究,一直没有中断。直到今天,向老天的祈祷终于迎来了回报,突如其来的灵感有如“神的启示”,加上26日官方对iphone版supermemo的升级,在多番实验之后,舍得已成功在iphone上实现了语音功能。

    运行平台:SuperMemo for iphone 2.2
    工具:转换精灵0.8,sqlite expert 2.3.9(可选),ifunbox 1.2 build 0448
    操作方法:注意,下面的叙述仅讲要点,部分动手能力较强的童鞋可尝试模仿。

    一、新建课程
    用转换精灵制作两份课程,第一份为iphone格式,题型为最常见的QA式,Q为例句,A为例句译文;第二份为UX格式,在上面题型的基础上增加问题栏音频,使用UX内嵌式,设置为问题栏自动播放。
    用SuperMemo的导入功能导入第一份课程,课程名为“TEST”。

    二、查看课程ID
    方法一:直接在SuperMemo中查看
    1.点击主界面右下角的“卡片盒”状图标(右起第二个),如下图:



    2.在随后打开的界面中的上部选择课程"TEST":



    然后点击右下角的Properties按钮.
    3.记下id号,如下图所示:



    方法二:用数据库工具查看
    将iphone与pc连接,打开ifunbox,进到supermemo的Documents文件夹,选中smm.dat文件,然后点“copy to pc”,存到PC上即可。
    用Sqlite Expert打开smm.dat文件,转到COURSES表,选中Title字段值为“TEST”的行,将“Guid”字段的值复制出来。

    三、制作课程包
    打开第二份课程中的course.xml,将GUID值改为记录下来的课程ID,然后制作成课程包(目前转换精灵已具备此功能,但尚未开放,故此处从略)。
    将此课程包的文件名改为记录下来的课程ID,如“C7A66722-4FE1-4C24-B62A-B9A5CD40565E.smpak”,然后将这个文件用ifunbox复制到iphone中,路径为SuperMemo安装文件夹的‘Library->SMPAKs”。

    重新打开TEST课程,即可发现课程已经成功加上语音了。

    为啥叫“直播帖”?
    为了做到尽善尽美,对于此方案还需要从多个角度进行验证并完善,以提升其操作性。下面这些问题是陆续要解决的:
    1.模板问题,iphone版课程不宜再使用UX的模板,背景图可换用更小一号的,字号则应更大一些;
    2.课程包内部的GUID号和课程名称是否要与数据库中的保持一致,理论上是要一致的。这样的话会带来一定的麻烦,若要使用统一制作的课程包,必须在导入课程后修改数据库;
    3.能否摆脱导入的过程,直接使用smpak包(尚未测试,可能性不大);
    4.多题型的测试:若依赖导入方式先行创建课程,则要考虑如何制作多题型的导入文本,这个应该是可行的,adappp好像在去年已经测试过了;
    5.数据库的修改方式:目前测试时使用的修改方式是通过修改备份文件,然后利用恢复功能重建数据库,直接修改应该是可行的,以前之所以失败,可能是数据库工具的版本不合适。

  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-27 21:56:49 | 显示全部楼层
    关于模板文件:
    通过解剖官方课程,发现背景图与UX基本一致,官方部分课程采用多个背景图重叠的方式来实现不同的模板背景。
    模板文件采用官方iphone版课程中的模板,加以适当的修改。
  • TA的每日心情

    2018-1-6 21:13
  • 签到天数: 821 天

    [LV.10]以坛为家III

    mltx2 发表于 2012-1-27 23:10:59 | 显示全部楼层
    重大突破啊!祝贺!
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-27 23:43:11 | 显示全部楼层
    继续直播:
    1.在测试中发现,课程包内部的课程ID和课程名称可以随意,只要复制到smpaks文件夹下的文smpak文件名以正确的课程id命名即可。随之引发的思考是,如果将课程包内部的课程ID和课程名称改为与事先导入的课程一致,会不会有什么特别的作用?目前估计意义不大;
    2.导入的文本是最终呈现在课程页面上的。也就是说,打好的课程包,无论里面的题型怎么变化,都无法得到展示的机会,它只是起到一个提供音频、图片等媒体的功能。此结论并非定论,尚需通过更多的测试样本去验证;
    3.由于转换精灵制作的UX课程第一个ID通常为章节,而导入的课程第一个ID即为实际内容,这样会产生音频错位问题。解决此问题的最简单的办法是对导入文本进行特殊处理,让两份课程的ID保持一致。另外一种解决思路就是,直接修改数据库,不过这样一来的话,操作门槛就比较高了。
    直接改数据库的好处是,不需要再事先做一次导入的工作。
    目前有两种方式可以降低难度,一是额外制作一个数据库处理脚本,当你把数据库文件复制出来之后,只要一运行脚本,就可以把课程写入到里面,你只要把它和相应的smpak文件放到合适的位置即可;二是由转换精灵提供相应的修改接口,在制作课程时直接修改数据库,相比之下,还是前一种方式更为可取,而且这种处理脚本的制作完全可以交由转换精灵来完成(我是说以后的版本,不是现在)。
  • TA的每日心情
    难过
    2016-8-19 19:03
  • 签到天数: 37 天

    [LV.5]常住居民I

    bxf3000 发表于 2012-1-27 23:52:06 | 显示全部楼层
    支持舍得的辛勤研究
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-28 00:05:03 | 显示全部楼层
    继续直播:
    对数据库修改方式的验证:采用直接修改数据库文件(smm.dat)的方式,舍得在courses表中添加一条记录,然后将改后的数据库放回iphone,结果发现跟以前一样,仍会出现课程死锁的现象,但不是每次都会发生(科普一下,”死锁“是舍得的叫法,当你直接修改数据库后,当前数据库的任意一个课程在学习中将一直停留在某个特定的页面上)。
    最理想的修改方式是,先创建一个备份,然后修改这个备份(改动内容同上),改完放回iphone后,将此备份恢复。此时将不会再出现死锁的现象。这种修改方式正是今天上午得到的灵感。
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-28 00:40:01 | 显示全部楼层
    继续直播:
    抽取了四种题型,用导入文本进行测试,发现一切正常。这四种题型分别是拼写题、匹配题、改错题和下拉选择题。事实上在iphone中可以直接导入这种代码式的文本,而且不需要对尖括号进行转义。
    0.8版正式发布后,转换精灵会提供iphone的多题型支持。
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-28 00:48:59 | 显示全部楼层
    思路探讨:
    用导入文本加课程包的方式实现起来相对比较简单,尤其是对于使用者来说,操作上会很简便:
    1.将事先准备好的导入文本导入到iphone中;
    2.记下课程ID;
    3.用上一步得到的课程id重命名课程包,并将其放到smpaks文件夹;
    只要三步就可以实现语音版的课程。
    课程包的主要功用是提供语音和模板的支持。
    这样可以跳过数据库的改动。
    发布者只要制作好导入文本和课程包,保证其能一一对应即可。
    近日将有可能发布一个带语音的《六人行》课程(for iphone),想吃这只螃蟹的请在下方报名。
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-28 01:10:50 | 显示全部楼层
    继续直播:
    课程内容必须经由导入或直接写入数据库这两种方式来完成,官方课程采用的可能是直接修改数据库的方式,当你把课程下载完后,便开始往数据库里写数据。在iphone版中,数据库负责页面内容的呈现,而课程包则负责模板和媒体文件。
    字号的大小除了由模板控制外,还可以在SuperMemo中进行字体的放大,不过舍得认为还是由模板一步到位比较省事一些。
  • TA的每日心情
    开心
    2011-10-10 00:27
  • 签到天数: 68 天

    [LV.6]常住居民II

     楼主| 舍得 发表于 2012-1-28 01:33:58 | 显示全部楼层
    今晚最后一次直播:
    对模板进行了微调,让显示效果更出色一些。
    现在对课程的效果比较满意,以后可以用iphone学习《六人行》这样的课程实在是太爽了。最近剪辑出来的几集音频效果还不错,总体比较干净。
    对于iphone版的课程,我的想法是,题型变化要比PC的稍少一些,不过,在iphone上玩排序、匹配、选择和拼写题(不一定拼出来,只是留个空,留个想象的余地即可)真的很酷,更重要的是,这样比单纯的英译汉或汉译英要有趣很多,而且训练的能力倾向也不一样。
    明天要测试一下音频重用的打包技术在iphone上是否能获得比较完美的表现。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    小黑屋|手机版|Archiver|官方微博|官方QQ群|舍得英语魔法学苑 ( 冀ICP备11024081号-1 )

    GMT+8, 2018-1-19 05:33 , Processed in 0.184883 second(s), 21 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表