6月21日,腾讯云在2017「云+未来」峰会上推出了战略新品——智能云,宣布将腾讯积累近20年的AI能力向政府、企业和开发者开放,其中首批开放计算机视觉、智能语音识别、自然语言处理的三大核心能力。腾讯云技术社区将陆续推出系列文章,介绍普通开发者如何快速接入并使用这三大 AI 能力。
本文将为大家讲解如何上手腾讯云提供的智能语音识别服务中的实时流式语音识别,主要是 iOS 开发 SDK 的一些使用经验。
SDK 获取
实时流式语音识别的 iOS SDK 的下载地址:iOS SDK
更多示例可参考 Demo:iOS Demo
开发准备
- 只支持 iOS 8.0 及以上版本,不支持 bitcode 版本;
- 实时流式语音识别,需要手机能够连接网络(GPRS、3G 或 WiFi 网络等);
- 从控制台获取 APP ID、SecretID、SecretKey,详情参考基本概念。
SDK 配置
SDK 导入
iOS SDK 压缩包名称为: QCloudAAIClientSDK.zip。压缩包中包含了一个.a
静态库和一个头文件文件夹 Headers。
工程配置
在 Build Settings 中设置 Other Linker Flags,加入参数-ObjC
。
在工程info.plist
文件中设置:
- App Transport Security Settings 类型,然后在App Transport Security Settings下添加Allow Arbitrary Loads 类型 Boolean,值设为
YES
; - 在程序中初始化 QCloudAAIClient 的实例对象 myClient ,
[myClient openHTTPSrequset:YES]
;(程序可以支持 https) - 在工程
info.plist
文件中添加 Privacy - Microphone Usage Description,获取系统的麦克风的权限; - 在工程中添加依赖库,在 build Phases Link Binary Whith Libraries 中添加以下库:
- libstdc++.6.0.9.tbd
- libc++.tdb
签名获取
移动端 SDK 中用到的签名,建议由业务服务器来生成,并由移动端向业务服务器请求。业务侧服务器需要进行签名的生成,具体生成和使用请参照签名鉴权 。识别SDK签名必须实现QCloudAAIClient的 QCloudAAIGetSignDelegate 的协议,对由SDK 提供(NSString*)param,进行加密处理;
代码语言:javascript
复制
// 获取请求的签名
(NSString *)getRequestSign:(NSString*)param;
初始化
引入上传 SDK 的头文件 QCloudAAIClient .h,使用目录操作时,需要先实例化 QCloudAAIClient 对象。
方法原型
代码语言:javascript
复制
(id)initWithAppid:(NSString *)appid secretid:(NSString *)sid projectId:(NSString *)pid ;
参数说明
参数名称 | 类型 | 是否必填 | 说明 |
---|---|---|---|
appld | NSString* | 是 | 项目ID,即 APP ID |
sid | NSString* | 是 | 项目的 SecretID |
pid | NSString* | 是 | 项目的 ProjectID |
STEP1:初始化 QCloudAAIClient
示例
代码语言:javascript
复制
QCloudAAIClient *client= [[QCloudAAIClient alloc] initWithAppid:appid secretid:sid projectId:projectId]];
STEP2:开始语音识别
代码语言:javascript
复制
(BOOL)startDetectionWihtCompletionHandle:(QCloudAAICompletionHandler)handler stateChange:(QCloudAAIChangeHandler)stateChange;
示例
代码语言:javascript
复制
client = [[QCloudAAIClient alloc] initWithAppid:appid secretid:sid projectId:projectId]; client.delegate = self; [client startDetectionWihtCompletionHandle:^(QCloudAAIRsp *rsp) { if (rsp.retCode == 0) { UITextView *strong = temp; if (![t isEqualToString:rsp.voiceId]) { t = rsp.voiceId; previous = strong.text; } strong.text= [NSString stringWithFormat:@"%@%@",previous,rsp.text]; }else{ NSLog(@"语音识别失败code= %dmsg:%@",rsp.retCode,rsp.descMsg); }
} stateChange:^(QCloudAAIState state) { UITextView *strong = dTemp; if (state == QCloudAAIStateOpen) { strong.text = [NSString stringWithFormat:@"状态:%@",@"识别中"] ; }else if(state == QCloudAAIStateClose){ strong.text = [NSString stringWithFormat:@"状态:%@",@"识别停止"] ; }else if(state == QCloudAAIStateFail){ strong.text = @"麦克风权限未开,识别失败"; } }];
STEP3:停止语音识别
代码语言:javascript
复制
[client stop];