百度AI开放平台创建App
https://login.bce.baidu.com
填写APP信息,注意核对项目Bundle Identfier
控制台创建应用
进入创建好的应用详情页获取图中标注的三个重要值
下载百度语音识别SDK
官方下载地址:点击下载(2019.07.09)
本站下载地址:点击下载(速度较慢,下载链接永久有效,版本和文章中一致)
导入SDK到项目中
添加Framework
Framework | 描述 |
---|
libc++.tbd | 提供对C/C++特性支持 |
libz.1.2.5.tbd | 提供gzip支持 |
AudioToolbox | 提供录音和播放支持 |
AVFoundation | 提供录音和播放支持 |
CFNetwork | 提供对网络访问的支持 |
CoreLocation | 提供对获取设备地理位置的支持,以提高识别准确度 |
CoreTelephony | 提供对移动网络类型判断的支持 |
SystemConfiguration | 提供对网络状态检测的支持 |
GLKit | 内置识别控件所需 |
libsqlite3 | |
项目根目录中创建lib目录
复制sdk文件到新创建的lib目录中
Create groups方式添加lib目录到项目中
点击Delete后选择Remover References方式移除BDSClientResources
在ASR目录下重新以Create folder references添加到项目中
导入完成后删除图中所示.gitignore文件,不然编译不能通过
创建 xxx-Brdging-Header.h (Swift --> OC桥接文件)
创建--百度语音识别-swift5-Brdging-Header.h
设置桥接文件到项目Brdging Header中
输入文件地址:$(PROJECT_DIR)/百度语音识别-swift5-Brdging-Header.h
可以输入绝对路径(拖动文件到输入框)
引入语音识别
//百度语音识别
#import "BDSEventManager.h"
#import "BDSASRDefines.h"
#import "BDSASRParameters.h"
调用语音识别API
在线识别
// 创建语音识别对象
self.asrEventManager = BDSEventManager.createEventManager(withName: BDS_ASR_NAME)
// 设置语音识别代理
self.asrEventManager?.setDelegate(self)
// 参数配置:在线身份验证
self.asrEventManager?.setParameter(["n3ysthxxxxxxxxxx","Y7vDShIvf9jK4cxxxxxxxxxxxx"], forKey: BDS_ASR_API_SECRET_KEYS)
//设置 APPID
self.asrEventManager?.setParameter("1600000", forKey: BDS_ASR_OFFLINE_APP_CODE)
// 获取VAD模型的路径
let path = Bundle.main.path(forResource: "bds_easr_basic_model", ofType:"dat")
self.asrEventManager?.setParameter(path, forKey: BDS_ASR_MODEL_VAD_DAT_FILE)
self.asrEventManager?.setParameter(true, forKey: BDS_ASR_ENABLE_MODEL_VAD)
// 发送指令:启动识别
self.asrEventManager?.sendCommand(BDS_ASR_CMD_START)
// // 发送指令:结束语音输入,等待识别完成
// self.asrEventManager?.sendCommand(BDS_ASR_CMD_STOP)
// // 发送指令:取消本次识别
// self.asrEventManager?.sendCommand(BDS_ASR_CMD_CANCEL)
实现BDSClientASRDelegate
func voiceRecognitionClientWorkStatus(_ workStatus: Int32, obj aObj: Any!) {
switch workStatus {
case 4: //连续上屏
let resDic = aObj as! NSDictionary
let resText = (resDic["results_recognition"]! as! NSArray)[0];
print("连续上屏",workStatus," ", resText)
break
case 5: //最终结果
let resDic = aObj as! NSDictionary
let resText = (resDic["results_recognition"]! as! NSArray)[0];
print("最终结果",workStatus," ", resText)
break
default:
break
}
}
识别结果
附录
跳转官方附录
Demo下载
点击下载Demo
运行Demo前请修改Bundle Identfier、APPID、AppKey、AppSecret为正确值