帖子

关于SDK中engine_mode和engine_type的设置详解

[复制链接]
  • TA的每日心情
    开心
    2017-12-29 09:56
  • 签到天数: 46 天

    [LV.5]常住居民I

    31165  楼主| 王水 发表于 2015-9-23 11:41:08 1#
    细心的开发者应该已经发现了,在我们的SDK中有两个和引擎相关的设置,分别是engine_mode(Demo中该参数是在SpeechApp.java中设置的)和engine_type,这两个参数的说明如下图所示:
    QQ截图20150****95517.png     QQ截图20150****95611.png

    简单的说,engine_mode为PLUS时,表示只使用语记(语音+)的引擎进行识别;为MSC时,只使用MSC引擎。
    要弄清楚引擎模式,首先要弄清楚引擎是什么东西。这里的引擎就是实际实现识别功能的核心模块,它包括语记(语音+)的引擎和MSC引擎。其中MSC引擎实际上有两种:云端的引擎和离线的引擎。例如离线命令词识别、离线合成、唤醒这三大付费的离线功能使用的就是MSC的离线引擎,这两种引擎对应着我台可供下载的两种SDK:在线功能SDK:
    QQ截图20150****03524.png QQ截图20150****03536.png QQ截图20150****03548.png

    和离线功能的SDK:
    QQ截图20150****03937.png QQ截图20150****03944.png QQ截图20150****03957.png QQ截图20150****04005.png QQ截图20150****04020.png QQ截图20150****04026.png


    在在线版本SDK中的Demo中engine_mode都是设为auto的(没设默认),表示既可以使用语记(语音+)的引擎又可以使用MSC引擎的功能。
    在离线版本SDK中的Demo中engine_mode都是设为msc的,表示只使用msc引擎功能。


    那么这两个参数配合在一起设置,会产生什么样的效果呢?下面是我在在线版本SDK的听写Demo上面做的一组测试的结果:
    QQ截图20150****02624.png

    可以发现:
    • 只要将engine_type设为CLOUD,就必须在有网的环境下才能正常使用。
    • MSC模式下,由于听写SDK的MSC引擎没有本地功能,所以将engine_type设LOCAL会报10107参数错误。
    • 同样的道理,MSC模式下,engine_type设MIX,在无网络的时候其实就是LOCAL,所以一样会报10107。
    • 2和3表明,使用在线版本的SDK是无法使用离线MSC引擎的(很好理解,不然谁还会购买离线合成离线命令词和唤醒)。


    这里就不列举更多的测试结果,大家感兴趣可以自己改下这两个参数试试看。
    本帖的目的也不是让大家记住这些特别容易混淆的结果,而是让大家知道自己如何针对自己的应用场景来设置这两个参数。
    总结:
    • 如果只希望使用MSC引擎的功能(在线的或者离线),请将engine_mode设为MSC。engine_type根据你需要的是msc的在线引擎还是离线引擎来设置。
    • 如果只希望使用语记(语音+)引擎的功能,请将engine_mode设为PLUS。
    • 如果想灵活一点(MSC和语记都要用到),可以将engine_mode设为auto。
    • 请勿在在线功能SDK中将engine_mode设为MSC同时将engine_type设为LOCAL。
    • 就是你使用离线功能的SDK也不要试图engine_mode设为MSC同时将听写engine_type设为LOCAL,因为听写没有离线MSC引擎。


    现在能想到的就这些了,以后想到了再加上吧。总之大家只要理解了这两个参数意义,以及我台两大SDK的特点,应该都不会有问题的。

    iflytek-小黑 发表于 2015-9-23 11:47:10
    2#
    赞赞赞
    使用道具 举报 回复
    xiongyuwu 发表于 2015-11-13 14:43:05
    3#
    语记(语音+)引擎和MSC引擎什么区别?
    MSC代表什么?Mobile Speech C?
    使用道具 举报 回复
     楼主| 王水 发表于 2015-11-16 10:16:35
    4#
    MSC(Mobile Speech Client)
    使用道具 举报 回复
    张大翅膀 发表于 2016-9-27 14:02:17
    5#
    王水 发表于 2015-11-16 10:16
    MSC(Mobile Speech Client)

    就是你使用离线功能的SDK也不要试图engine_mode设为MSC?
    使用道具 举报 回复
     楼主| 王水 发表于 2016-9-28 09:58:48
    6#
    张大翅膀 发表于 2016-9-27 14:02
    就是你使用离线功能的SDK也不要试图将engine_mode设为MSC?

    只要你确定不使用语记的能力,就可以大胆将engine_mode设置为MSC。
    使用道具 举报 回复