## 引擎類型
MSC SDK 有幾種引擎類型(ENGINE_TYPE),此文章中我們主要關注并介紹以下兩種:
* 在線引擎(TYPE_CLOUD),又稱為云端模式,需要使用網絡,速度稍慢,并產生一定流量,但有更好的識別和合成的效果,如更高的識別匹配度,更多的發音人等。
* 離線引擎(TYPE_LOCAL),又稱為本地模式,不需要使用網絡,且識別和合成的速度更快,但同時要求購買并使用對應的離線資源(下載對應離線功能的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。
特別是在識別時,主要網絡數據交互在音頻的上傳過程,此時網絡上行帶寬決定了音頻上傳的快慢,影響語音云服務器收到音頻的快慢,繼而決定了結果返回的快慢。
針對網絡帶寬的影響結果問題,MSC SDK 在識別音頻上傳和合成音頻下載時,都做了相應的優化:
* 會話模式( ssm ),默認開啟。只要 SDK 獲取到一部份音頻數據,就會開始上傳到語音云服務器,而不是等到整段識別音頻數據都獲取到再上傳。在實時的錄制音頻并進行識別時,此優化效果尤其明顯:音頻的錄制需要時間,而 SDK 會利用這些時間,每錄制到一小段音頻,就開始上傳到語音云服務器,且在有部份小分句(如有停頓的地方)的結果時,就會把結果返回給客戶端。待音頻錄制完時,音頻也已即將完成上傳,此時,結果返回就更快,幾乎能達到說完即得到結果的情況。更特別的,VAD(關于VAD的更多說明,參考《MSC Reference Manual.html》)生效的情況下,在應用層還未告知 SDK 已完成音頻錄制時,結果可能已返回。
* 音頻壓縮(aue),并默認開啟。發送端對上下行的音頻進行壓縮(在客戶端由 MSC SDK 自動壓縮),壓縮比約為 10:1,并在接收端解壓還原(在客戶端由 MSC SDK 自動解壓),大大減少帶寬占用,并減少網絡交互的時間占用。