banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

iOS開發之類Siri的語言識別程式的開發與實踐(Nuance技術)

相信 Iphone4s 之後 Siri 技術又火了一把,不過 Siri 的成功除了歸於蘋果公司 Steve Jobs 的領導之外,Siri 的語音識別技術提供商 Nuance 公司的才是功不可沒的。 Nuance 是最大的專門從事語音識別軟件、圖像處理軟件及輸入法軟件研發、銷售的公司。除了已經紅得發紫的 Siri,Nuance 還有一項破記錄的產品,T9 輸入法,相信在蘋果 iphone 流行之前,用過 Nokia 神機等品牌手機的用戶一定很熟悉這個。 我們這裡實現的語言識別功能正是基於 Nuance 的 ASR 技術,Siri 只是 Nuance 技術的一種實現而已,Nuance 的語音識別技術遠遠不止如此。 除了英語,法語,德語等西歐語言,中文,廣東話,日語等東亞語言也包含在其中。

在開始之前,首先需要到 Nuance 註冊一個開發者帳戶,獲取一個 ApplicationKey,並下載 SDK,下面是 SDK 的說明。 http://www.nuance.com/for-developers/dragon-mobile-sdk/index.htm

在這之後就可以運用和開發語言識別程式,SDK 主要包括 ios 和 Android 兩個版本,ios 版本發行較早,目前比較穩定,並有很多 ios App 基於開發,目前分別提供免費和商業版本,如果要商業開發的話,建議購買他的商業解決方案。

以下是開發語言識別的基本步驟和程式碼片段 1,導入語音識別 framework SpeechKit.framework

2,設置 SpeechKitApplicationKey

// 請從 Nuance 的郵件中複製
const unsigned char SpeechKitApplicationKey[] =
{0x47, 0xbe, 0x50, 0x57, 0x05, 0xde, 0x0f, 0x0e,
0x70, 0x63, 0x10, 0x4b, 0xb2, 0xad, 0xfb, 0xab,
0x14, 0x96, 0x99, 0x0d, 0x8e, 0x50, 0x2c, 0x1a,
0xb2, 0x5b, 0xf6, 0x76, 0x7d, 0xd8, 0xd5, 0xc5,
0x97, 0x25, 0x1c, 0x9c, 0x03, 0x2c, 0xaa, 0x74,
0x8f, 0xba, 0xbf, 0x42, 0x67, 0xba, 0xed, 0x7b,
0x50, 0x87, 0x88, 0xde, 0xd7, 0xb4, 0xf8, 0x89,
0x10, 0xef, 0xff, 0x8d, 0xc7, 0xd5, 0x52, 0x51};

NSString *const SpeechKitID =@"XXXX";
NSString *const SpeechHost = @"sandbox.nmdp.nuancemobility.net";

3,實例化語音識別對象,並設置參數

// 檢測類型,用於識別並停止錄音,可以是短暫停頓,手動控制等方式,
detectionType = SKShortEndOfSpeechDetection;
// 識別類型,通常分為搜索和聽寫兩種方式
recoType = SKSearchRecognizerType;
// 識別日語,可以是 en,de,fr,zh_CN 等
langType = @"ja_JP";

if (_voiceSearch) [_voiceSearch release];

_voiceSearch = [[SKRecognizer alloc] initWithType
detection
language
delegate];

4,實現委託方法

// 錄音開始,這裡是錄音開始和錄音錄制過程中調用

  • (void)recognizerDidBeginRecording:(SKRecognizer *)recognizer

// 錄音完成,語言輸入完成被識別,錄音完成

  • (void)recognizerDidFinishRecording:(SKRecognizer *)recognizer

// 識別解析完成,服務端請求完成,並獲得結果

  • (void)recognizer:(SKRecognizer *)recognizer didFinishWithResults:(SKRecognition *)results

// 識別發生錯誤

  • (void)recognizer:(SKRecognizer *)recognizer didFinishWithError:(NSError *)error suggestion:(NSString *)suggestion
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。