IOS App中揉合訊飛SDK功能詳細

來源:互聯網
上載者:User

標籤:class   code   tar   ext   c   http   

轉至:http://www.sufeinet.com/thread-2488-1-1.html

如何使用訊飛的語音SDK加入到你的iPhone應用中吧!

1.首先請先到訊飛官方網站的開發人員專區(http://open.voicecloud.cn/developer.php)。如果你還沒有註冊,那麼需要先註冊一個開發人員帳號的。點擊網站頂部的“免費註冊”即可,使用你的自己的手機號碼註冊一個帳號。

2.僅僅註冊了一個開發人員帳號還可以使用SDK,因為還需要申請Appid。登陸之後到自己的個人中心建立一個應用填寫好相關資訊,然後等待審核通過,因為只有審核通過之後,你才可以下載訊飛語音的SDK。如下:
<ignore_js_op>




3.如果你的應用已經審核通過,點擊SDK下載,並且選擇對應平台的SDK,比如現在選擇iphone平台SDK下載。

4.下載好了之後,你會看到一個壓縮包,解壓出來有四個檔案,
<ignore_js_op>



其中sample就是訊飛提供的DEMO了,開啟項目,你會看到這樣的目錄結構:
<ignore_js_op>



直接運行,並沒有錯誤,只有幾個警告,運行介面如下:
<ignore_js_op>

< ignore_js_op>



5.那麼怎麼在自己的項目中使用呢?其實還是非常簡單的。訊飛也有提供相關的開發文檔,還是比較詳細。在開發人員專區和下載專區都有文檔可供下載。

6.建立一個iPhone 項目吧。建立好了之後,需要先匯入需要的lib,如下:
<ignore_js_op>


其中需要說明的是,iflyMSC.framework這個lib就在你下載的SDK解壓檔案下的lib檔案夾下。在添加lib的介面選擇Add Others...,並且選擇你下載的lib。點擊Open,就能正確添加。
<ignore_js_op>



7.一些函數和配置的說明:

在你需要使用SDK的標頭檔中匯入檔案:

  1. #import "iFlyMSC/IFlyRecognizeControl.h"
  2. #import "iFlyMSC/IFlysynthesizerControl.h"
複製代碼

建立一個識別控制項或者合成控制項:

  1. IFlyRecognizeControl    *_iFlyRecognizeController;    //識別控制項
  2. IFlySynthesizerControl  *_iFlySynthesizerControl;     //合成控制項
複製代碼

在實現檔案初始化控制項:

  1. //初始化語音識別控制項
  2.     _iFlyRecognizeController = [[IFlyRecognizeControl alloc] initWithOrigin:CGPointMake(20, 70) initParam:initPara];
  3.     [self.view addSubview:_iFlyRecognizeController];
  4.     
  5.     //Configure
  6.     [_iFlyRecognizeController setEngine:@"sms" engineParam:nil grammarID:nil];
  7.     [_iFlyRecognizeController setSampleRate:16000];
  8.     [_iFlyRecognizeController setDelegate:self];
  9.     [_iFlyRecognizeController setShowLog:NO];
  10.     
  11.     //註冊unActive事件
  12.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignActive) name:UIApplicationWillResignActiveNotification object:nil];
  13.     
  14.     //初始化語音合成控制項
  15.     _iFlySynthesizerControl = [[IFlySynthesizerControl alloc] initWithOrigin:CGPointMake(20, 70) initParam:initPara];
  16.     
  17.     //Configure
  18.     [_iFlySynthesizerControl setDelegate:self];
  19.     [_iFlySynthesizerControl setVoiceName:@"vixm"];  //發音人(中英文粵語)
  20.     [self.view addSubview:_iFlySynthesizerControl];
  21.     
  22.     //show UI
  23.     [_iFlySynthesizerControl setShowUI:YES];
  24.     
  25.     //show log
  26.     [_iFlySynthesizerControl setShowLog:NO];
  27.     
  28.     //註冊unActive事件
  29.     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(resignactiveOfSynthesizer) name:UIApplicationWillResignActiveNotification object:nil];
複製代碼

一些回呼函數和方法:

  1. //識別結束回調函數-會話過程結束調用此函數
  2. - (void)onRecognizeEnd:(IFlyRecognizeControl *)iFlyRecognizeControl theError:(int)error
  3. {
  4.     [_recognizeButton setEnabled:YES];
  5.     [_synthesizerButton setEnabled:YES];
  6.     NSLog(@"識別結束");
  7.     NSLog(@"上傳流量:%d,下載流量:%d",[iFlyRecognizeControl getUpflow:FALSE],[iFlyRecognizeControl getDownflow:FALSE]);
  8. }
  9. //識別結果回調函數
  10. - (void)onResult:(IFlyRecognizeControl *)iFlyRecognizeControl theResult:(NSArray *)resultArray
  11. {
  12.     NSString *strResult = [[resultArray objectAtIndex:0] objectForKey:@"NAME"];
  13.     NSLog(@"識別的結果是:%@",strResult);
  14. }
  15. //開始語音識別
  16. - (void)onButtonRecognize
  17. {
  18.     if ([_iFlyRecognizeController start]) {
  19.         [_recognizeButton setEnabled:NO];
  20.         [_synthesizerButton setEnabled:NO];
  21.     }
  22. }
  23. //不支援後台模式則在unActive事件時執行cancel
  24. - (void)resignActive
  25. {
  26.     [_iFlyRecognizeController cancel];
  27. }
  28. //合成回調函數,執行cancel函數整個會話結束調用此函數
  29. - (void)onSynthesizerEnd:(IFlySynthesizerControl *)iFlySynthesizerControl theError:(int)error
  30. {
  31.     [_synthesizerButton setEnabled:YES];
  32.     [_recognizeButton setEnabled:YES];
  33.     NSLog(@"結束");
  34.     NSLog(@"上傳流量:%d,下載流量:%d",[iFlySynthesizerControl getUpflow:FALSE],[iFlySynthesizerControl getDownflow:FALSE]);
  35. }
  36. //獲取播放器緩衝進度
  37. - (void)onSynthesizerBufferProgress:(float)bufferProgress
  38. {
  39.     NSLog(@"當前緩衝進度:%f",bufferProgress);
  40. }
  41. //獲取播放器播放進度
  42. - (void)onSynthesizerPlayProgress:(float)playProgress
  43. {
  44.     NSLog(@"當前播放進度:%f",playProgress);
  45. }
  46. //開始語音合成
  47. - (void)onButtonSynthesizer
  48. {
  49.     [_iFlySynthesizerControl setText:@"哈哈,這僅僅是一個測試合成功能的例子而已,你不用太緊張會發生什麼特別的事情。謝謝" params:nil];
  50.     if ([_iFlySynthesizerControl start]) {
  51.         [_recognizeButton setEnabled:NO];
  52.         [_synthesizerButton setEnabled:NO];
  53.     } else {
  54.         NSLog(@"I‘m sorry,start error. ");
  55.     }
  56. }
  57. //不支援後台模式則unActive事件時執行cancel
  58. - (void)resignactiveOfSynthesizer
  59. {
  60.     NSLog(@"resignActive");
  61.     [_iFlySynthesizerControl cancel];
  62. }
複製代碼

其中下列方法可以在自己需要開始使用語音功能的地方調用,比如:

  1. _recognizeButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  2.     _synthesizerButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
  3.     [_recognizeButton setFrame:CGRectMake(70, 100, 180, 60)];
  4.     [_synthesizerButton setFrame:CGRectMake(70, 200, 180, 60)];
  5.     [_recognizeButton setTitle:@"開始語音識別" forState:UIControlStateNormal];
  6.     [_synthesizerButton setTitle:@"開始語音合成" forState:UIControlStateNormal];
  7.     
  8.     [_recognizeButton addTarget:self action:@selector(onButtonRecognize) forControlEvents:UIControlEventTouchDown];
  9.     [_synthesizerButton addTarget:self action:@selector(onButtonSynthesizer) forControlEvents:UIControlEventTouchDown];
  10.     
  11.     [self.view addSubview:_recognizeButton];
  12.     [self.view addSubview:_synthesizerButton];
  13. //開始語音識別
  14. - (void)onButtonRecognize
  15. {
  16.     if ([_iFlyRecognizeController start]) {
  17.         [_recognizeButton setEnabled:NO];
  18.         [_synthesizerButton setEnabled:NO];
  19.     }
  20. }
  21. //開始語音合成
  22. - (void)onButtonSynthesizer
  23. {
  24.     [_iFlySynthesizerControl setText:@"這僅僅是一個測試合成功能的例子,你不用太緊張會發生什麼" params:nil];
  25.     if ([_iFlySynthesizerControl start]) {
  26.         [_recognizeButton setEnabled:NO];
  27.         [_synthesizerButton setEnabled:NO];
  28.     } else {
  29.         NSLog(@"I‘m sorry,start error. ");
  30.     }
  31. }
複製代碼

8.到這裡已經可以使用語音辨識和合成功能了。如下:
<ignore_js_op>

< ignore_js_op>

< ignore_js_op>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.