ios开发科大讯飞的语音识别

    xiaoxiao2024-04-19  5

    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

    转载请注明原文地址: https://ju.6miu.com/read-1288144.html
    最新回复(0)