1.1. 引擎类型

MSC SDK 有几种引擎类型(ENGINE_TYPE),此文章中我们主要关注并介绍以下两种:

  • 在线引擎(TYPE_CLOUD),又称为云端模式,需要使用网络,速度稍慢,并产生一定流量,但有更好的识别和合成的效果,如更高的识别匹配度,更多的发音人等。
  • 离线引擎(TYPELOCAL),又称为本地模式,不需要使用网络,且识别和合成的速度更快,但同时要求购买并使用对应的离线资源(下载对应离线功能的SDK包)。
    需要说明的是,在线引擎下,结果返回速度基本决定于用户网络的带宽限制。如在合成或识别下,默认的音频格式为 16000 HZ 采样,16 bit 精度,单声道, raw pcm,Little-endian;在未压缩的情况下,为 16000
    16 = 256000 bit/s(比特每秒)。此时,如果要听写上传,或下载合成到的音频,时长为 T 秒,用户网络带宽为 X mpbs(兆比特每秒),则需要时长为 256000 T / ( X 2^10 _ 2^10 ),假设 T 为 10,X 为 1,则10秒的音频,在1M的带宽下的传输时间约为 2.44s。

特别是在识别时,主要网络数据交互在音频的上传过程,此时网络上行带宽决定了音频上传的快慢,影响语音云服务器收到音频的快慢,继而决定了结果返回的快慢。

针对网络带宽的影响结果问题,SDK在识别音频上传和合成音频下载时,都做了相应的优化:

  • 会话模式( ssm ),默认开启。只要 SDK 获取到一部份音频数据,就会开始上传到语音云服务器,而不是等到整段识别音频数据都获取到再上传。在实时的录制音频并进行识别时,此优化效果尤其明显:音频的录制需要时间,而 SDK 会利用这些时间,每录制到一小段音频,就开始上传到语音云服务器,且在有部份小分句(如有停顿的地方)的结果时,就会把结果返回给客户端。待音频录制完时,音频也已即将完成上传,此时,结果返回就更快,几乎能达到说完即得到结果的情况。更特别的,VAD(更多关于VAD的相关说明,请参考MSC Android API 文档)生效的情况下,在应用层还未告知 SDK 已完成音频录制时,结果可能已返回。
  • 音频压缩(aue),并默认开启。发送端对上下行的音频进行压缩(音频压缩由MSC内部实现),压缩比约为 10:1,并在接收端解压还原(音频解压由MSC内部实现),大大减少带宽占用,并减少网络交互的时间占用。