项目需求:开发一个可以调用腾讯云语音识别接口的iOS应用
以使用 iOS SDK 方式接入,以一句话识别为例,展开对官当demo代码模块的分析。
一句话语音识别,即对60秒之内的短音频文件进行识别,可应用于语音消息转写等场景
接入准备
SDK 获取
一句话识别的 iOS SDK 以及 Demo 的下载地址:iOS SDK。
接入须知
· 开发者在调用前请先查看实时语音识别的 接口说明 ,了解接口的使用要求和使用步骤。
· 该接口需要手机能够连接网络(GPRS、3G 或 Wi-Fi 网络等),且系统为 iOS 9.0及以上版本。
1. 功能分析
总体来说,功能分为语音数据获取,语音识别
2. 模块划分
2.1 首先要配置安全策略和麦克风的权限
2.1.1安全策略的配置Info.plist:
使用的是 Info.plist 这个文件。
在工程info.plist
添加以下设置:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>zijiebao.com</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>
2.1.2申请系统麦克风权限,添加如下内容:
代码语言:javascript复制 <key>NSMicrophoneUsageDescription</key>
<string>需要使用了的麦克风采集音频</string>
2.2 编写代码,发送请求,实现接口调用
配置完成后,就编写代码,通过发送请求,获取我们要是识别的结果,
2.2.1 初始化识别器
1) 该QDDefine_h.m文件下,添加腾讯的APPID信息和密钥信息的配置,根据这个配置再初始化识别器。
代码语言:javascript复制#ifndef QDDefine_h
#define QDDefine_h
//#error please replace with your own info
#define kQDAppId @""
#define kQDSecretId @""
#define kQDSecretKey @""
#define kQDProjectId @""
2) 第二种初始化方法
在文件QDOneSentenceRecognizeViewController.m下配置
代码语言:javascript复制
/**
* 通过 appId secretId secretKey 初始化
* @param appid 腾讯云 appId
* @param secretId 腾讯云 secretId
* @param secretKey 腾讯云 secretKey
*/
(instancetype)initWithAppId:(NSString *)appid secretId:(NSString *)secretId secretKey:(NSString *)secretKey;
1) 创建 QCloudSentenceRecognizer 实例
代码语言:txt复制 QCloudSentenceRecognizer *recognizer = [[QCloudSentenceRecognizer alloc] initWithAppId:appId
secretId:secretId
secretKey:secretKey];
//设置delegate,相关回调方法见QCloudOneSentenceRecognizerDelegate定义
recognizer.delegate = self;
2)实现此 QCloudSentenceRecognizerDelegate 协议方法
2.2.2调用示例
然后就可以进行相应的语音识别,目前有四种获取数据的方式,分别为a. 通过语音 URL; b. 通过语音数据; c. 通过指定参数调用; d. 通过 SDK 内置录音器调用
· a. 通过语音 URL 调用
代码语言:txt复制- (void)recognizeWithUrl {
//语音数据url
NSString *url = @"http://liqiansunvoice-1255628450.cosgz.myzijiebao.com/30s.wav";
//指定语音数据url 语音数据格式 采样率
[_recognizer recoginizeWithUrl:url voiceFormat:kQCloudVoiceFormatWAV frequence:kQCloudEngSerViceType16k];
}
· b. 通过语音数据调用
代码语言:txt复制 - (void)recognizeWithAudioData {
//语音数据
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"recordedFile" ofType:@"wav"];
NSData *audioData = [[NSData alloc] initWithContentsOfFile:filePath];
//指定语音数据 语音数据格式 采样率
[_recognizer recoginizeWithData:audioData voiceFormat:kQCloudVoiceFormatWAV frequence:kQCloudEngSerViceType16k];
}
· c. 通过指定参数调用
代码语言:txt复制- (void)recognizeWithParams {
NSString *url = @"http://liqiansunvoice-1255628450.cosgz.myzijiebao.com/30s.wav";
//获取一个已设置默认参数params
QCloudOneSentenceRecognitionParams *params = [_recognizer defaultRecognitionParams];
//通过语音url请求, 此4个参数必须设置
params.url = url;
//设置语音频数据格式,见kQCloudVoiceFormat定义
params.voiceFormat = kQCloudVoiceFormatWAV;
//设置语音数据来源,见QCloudAudioSourceType定义
params.sourceType = QCloudAudioSourceTypeUrl;
//设置采样率,见kQCloudEngSerViceType定义
params.engSerViceType = kQCloudEngSerViceType16k;
[_recognizer recognizeWithParams:params];
· d. 通过 SDK 内置录音器调用
代码语言:txt复制- (void)recognizeWithRecorder {
[_recognizer startRecognizeWithRecorder];
}