1. 程式人生 > >ios開發科大訊飛的語音識別

ios開發科大訊飛的語音識別

1、新建工程不說了

2、匯入庫:xcode工程下沒有Frameworks目錄了,可以自己newgroup一個出來,然後在重新命名一下,注意大小寫,不然匯入後不在該目錄下,當然沒有強迫症的可以忽略,直接匯入就好了,新建目錄是結構看起來舒服點。。。

第三方庫,即iFly的庫,到科大訊飛上申請,然後下載sdk,把lib目錄下的iflyMSC.framework拷貝到工程目錄下,一定要拷貝,不然導進去會出現錯誤,上網搜了一下,發現好多了都進過這個坑。。。還有就是一些依賴庫,直接add進去就好了


3、新增橋接檔案:

命名“工程名-Bridging-Header.h”,然後把import的直接copy進去就好了

//
//  testiFly-Bridging-Header.h
//  testiFly
//
//  Created by fengdelei on 16/8/12.
//  Copyright © 2016年 fengdelei. All rights reserved.
//

#ifndef testiFly_Bridging_Header_h
#define testiFly_Bridging_Header_h

#import "iflyMSC/IFlySpeechRecognizerDelegate.h"
#import "iflyMSC/IFlySpeechRecognizer.h"
#import "iflyMSC/IFlyRecognizerViewDelegate.h"
#import "iflyMSC/IFlyRecognizerView.h"
#import "iflyMSC/IFlyContact.h"
#import "iflyMSC/IFlyUserWords.h"

#import "iflyMSC/IFlyDataUploader.h"

#import "iflyMSC/IFlySpeechSynthesizerDelegate.h"
#import "iflyMSC/IFlySpeechSynthesizer.h"

#import "iflyMSC/IFlySpeechUtility.h"
#import "iflyMSC/IFlySpeechConstant.h"
#import "iflyMSC/IFlySpeechError.h"

#import "iflyMSC/IFlySpeechUnderstander.h"
#import "iflyMSC/IFlyTextUnderstander.h"

#import "iflyMSC/IFlySetting.h"

#endif

然後把橋接檔案配置一下,Build Settings->Swift Compiler-〉Objective-C Bridging Header,空白處點選,然後把.h檔案直接拖進去就好了,直接出來路徑的

4、其他一點配置:

iFly還不執行bitcode,設定為no


ios9中新增ats我,主要是用到的http請求都轉向tls1.2協議進行傳輸,強制使用了HTTPS協議進行傳輸,把info.plist新增如圖屬性就好了:


好了,環境已經配置好了,程式碼:

</pre><p><pre name="code" class="plain">import UIKit

class HomeViewController: UIViewController, IFlyRecognizerViewDelegate {


   
    @IBOutlet weak var voice_img: UIImageView!
   
    
    var iflyRecognizerView:IFlyRecognizerView!
    var isRecongnizer = false
   
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        
        var initString:String!
        initString = "appid=XXXXXXXX"
        IFlySpeechUtility.createUtility(initString)
        
        self.iflyRecognizerView = IFlyRecognizerView.init(center: self.view.center)as IFlyRecognizerView
        self.iflyRecognizerView.delegate = self
        self.iflyRecognizerView.setParameter("iat", forKey: IFlySpeechConstant.IFLY_DOMAIN())
        self.iflyRecognizerView.setParameter("16000", forKey: IFlySpeechConstant.SAMPLE_RATE())
        // | result_type   | 返回結果的資料格式 plain,只支援plain
        self.iflyRecognizerView.setParameter("plain", forKey: IFlySpeechConstant.RESULT_TYPE())

        
        // Do any additional setup after loading the view, typically from a nib.
        self.view.backgroundColor = UIColor.blackColor();
        
        voice_img.image = UIImage.init(named: "app_voice.png");
       
        voice_img.userInteractionEnabled = true
        let voice_tap = UITapGestureRecognizer(target: self , action: #selector(HomeViewController.startVoiceBtn))
        voice_img.addGestureRecognizer(voice_tap)
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

    
    func startVoiceBtn() {
        print("開始識別")
        iflyRecognizerView.start()
        
    }
    
    <p class="p1"><span class="s1"><span style="white-space:pre">	</span>func</span><span class="s2"> onResult(results: [</span><span class="s3">AnyObject</span><span class="s2">]!,isLast: </span><span class="s3">Bool</span><span class="s2">) {</span></p><p class="p1"><span class="s2">        </span><span class="s1">var</span><span class="s2"> resultText : </span><span class="s3">string</span><span class="s2"> =</span><span class="s4">""</span></p><p class="p1"><span class="s2">        </span><span class="s1">var</span><span class="s2"> resultStr : </span><span class="s3">String</span><span class="s2"> = </span><span class="s4">""</span></p><p class="p1"><span class="s2">        </span><span class="s1">if</span><span class="s2"> results != </span><span class="s1">nil</span><span class="s2"> {</span></p><p class="p1"><span class="s2">            </span><span class="s1">let</span><span class="s2"> resultDic : </span><span class="s3">Dictionary</span><span class="s2"><</span><span class="s3">String</span><span class="s2">, </span><span class="s3">String</span><span class="s2">> = results[</span><span class="s5">0</span><span class="s2">] </span><span class="s1">as</span><span class="s2">! </span><span class="s3">Dictionary</span><span class="s2"><</span><span class="s3">String</span><span class="s2">, </span><span class="s3">String</span><span class="s2">></span></p><p class="p2"><span class="s2">            </span></p><p class="p1"><span class="s2">            </span><span class="s1">for</span><span class="s2"> key </span><span class="s1">in</span><span class="s2"> resultDic.</span><span class="s3">keys</span><span class="s2"> {</span></p><p class="p1"><span class="s2">                resultStr += key</span></p><p class="p1"><span class="s2">            }</span></p><p class="p1"><span class="s2">        }</span></p><p class="p2"><span class="s2">        </span></p><p class="p1"><span class="s2">        </span><span class="s1">if</span><span class="s2"> resultText != </span><span class="s4">""</span><span class="s2"> {</span></p><p class="p1"><span class="s2">            </span><span class="s1">if</span><span class="s2"> (resultText </span><span class="s1">as</span><span class="s2"> </span><span class="s3">NSString</span><span class="s2">).</span><span class="s6">substringWithRange</span><span class="s2">(</span><span class="s6">NSMakeRange</span><span class="s2">( resultText.</span><span class="s3">characters</span><span class="s2">.</span><span class="s3">count</span><span class="s2"> - </span><span class="s5">1</span><span class="s2">, </span><span class="s5">1</span><span class="s2">)) != </span><span class="s4">","</span><span class="s2"> {</span></p><p class="p1"><span class="s2">                resultText += </span><span class="s4">","</span></p><p class="p1"><span class="s2">            }</span></p><p class="p1"><span class="s2">        }</span></p><p class="p2"><span class="s2">        </span></p><p class="p1"><span class="s2">        resultText += resultStr</span></p><p class="p3"><span class="s7">        </span><span class="s2">//textView.text = resultText</span></p><p class="p1"><span class="s2">        </span><span class="s6">print</span><span class="s2">(resultText)</span></p><p class="p2"><span class="s2">        </span></p><p class="p4"><span class="s7">        </span><span class="s1">if</span><span class="s7"> </span><span class="s2">isRecongnizer</span><span class="s7"> {</span></p><p class="p4"><span class="s7">            </span><span class="s2">iflyRecognizerView</span><span class="s7">.</span><span class="s8">start</span><span class="s7">()</span></p><p class="p1"><span class="s2">        } </span><span class="s1">else</span><span class="s2"> {</span></p><p class="p4"><span class="s7">            </span><span class="s2">iflyRecognizerView</span><span class="s7">.</span><span class="s8">cancel</span><span class="s7">()</span></p><p class="p1"><span class="s2">            </span><span class="s1">if</span><span class="s2"> resultText != </span><span class="s4">""</span><span class="s2"> {</span></p><p class="p1"><span class="s2">                resultText = (resultText </span><span class="s1">as</span><span class="s2"> </span><span class="s3">NSString</span><span class="s2">).</span><span class="s6">substringWithRange</span><span class="s2">(</span><span class="s6">NSMakeRange</span><span class="s2">( </span><span class="s5">0</span><span class="s2">, resultText.</span><span class="s3">characters</span><span class="s2">.</span><span class="s3">count</span><span class="s2"> - </span><span class="s5">1</span><span class="s2">)) + </span><span class="s4">"</span><span class="s9">。</span><span class="s4">"</span></p><p class="p3"><span class="s7">                </span><span class="s2">//textView.text = resultText</span></p><p class="p1"><span class="s2">                </span><span class="s6">print</span><span class="s2">(resultText)</span></p><p class="p1"><span class="s2">            }</span></p><p class="p1"><span class="s2">        }</span></p><p class="p1"><span class="s2">    }</span></p><p class="p2"><span class="s2">    </span></p><p class="p1"><span class="s2">    </span><span class="s1">func</span><span class="s2"> onError(error: </span><span class="s10">IFlySpeechError</span><span class="s2">!) {</span></p><p class="p1"><span class="s2">        </span><span class="s6">print</span><span class="s2">(</span><span class="s4">"</span><span class="s9">識別出錯:</span><span class="s2">\</span><span class="s4">(</span><span class="s2">error.</span><span class="s10">errorCode</span><span class="s4">)"</span><span class="s2">)</span></p><p class="p1"><span class="s2">    </span></p><p class="p1"><span class="s1"><span style="white-space:pre">	</span>}</span></p><p class="p2"><span class="s1"></span>
</p><p class="p1"><span class="s1">}</span></p>

程式碼是從工程里扣出來的,刪掉了其他一部分不相關的,應該沒有誤刪語音識別的相關東西,自己試一下吧,等有空我,整理一份上傳一下。appid注意要替換一下!!!好啦,可以看log裡的結果了,也可以自己寫個textview,把結果打到介面上去。我這裡試了幾次,結果不是很好,同事試的罵人的話,倒是挺準的,不知道什麼情況。說的你好,一直都是“你。”普通話這麼差嗎?

參考:http://www.zhimengzhe.com/bianchengjiaocheng/swift/83732.html