tencent cloud

语音识别

新手指引
产品简介
产品简介
访问管理
购买指南
计费概述
购买方式
欠费说明
快速入门
操作指引
一分钟接入服务端 API
新手常见问题
API 文档
History
Introduction
API Category
Making API Requests
Recording Recognition APIs
实时语音识别相关接口
Data Types
Error Codes
SDK 文档
一分钟跑通集成 SDK
常见问题
识别效果问题排查
服务与计费相关
功能相关
API 与 SDK 相关
其他相关
相关协议
Service Level Agreement
隐私协议
数据处理和安全协议
联系我们
词汇表

实时语音识别

PDF
聚焦模式
字号
最后更新时间: 2025-01-23 17:33:31

接入准备

SDK 获取

实时语音识别的 iOS SDK 以及 Demo 的下载地址:iOS SDK

接入须知

开发者在调用前请先查看实时语音识别的接口说明,了解接口的使用要求使用步骤
该接口需要手机能够连接网络(GPRS、3G 或 Wi-Fi 网络等),且系统为 iOS 9.0 及以上版本。

开发环境

在工程 info.plist添加以下设置:
设置 NSAppTransportSecurity 策略,添加如下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>qcloud.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>
申请系统麦克风权限,添加如下内容:
<key>NSMicrophoneUsageDescription</key>
<string>需要使用您的麦克风采集音频</string>
在工程中添加依赖库,在 build Phases Link Binary With Libraries 中添加以下库:
AVFoundation.framework
AudioToolbox.framework
QCloudSDK.framework
CoreTelephony.framework
libWXVoiceSpeex.a
添加完后如下图所示:


快速接入

开发流程及接入示例

下面分别介绍使用内置录音器采集语音识别调用者提供语音数据接入流程和示例。

使用内置录音器采集语音识别示例

1. 引入 QCloudSDK 的头文件,将使用 QCloudSDK 的文件名后缀由 .m->.mm
#import<QCloudSDK/QCloudSDK.h>
2. 创建 QCloudConfig 实例
//1.创建 QCloudConfig 实例
QCloudConfig *config = [[QCloudConfig alloc] initWithAppId:kQDAppId
secretId:kQDSecretId
secretKey:kQDSecretKey
projectId:kQDProjectId];
config.sliceTime = 600; //语音分片时长600ms
config.enableDetectVolume = YES; //是否检测音量
config.endRecognizeWhenDetectSilence = YES; //是否检测到静音停止识别
3. 创建 QCloudRealTimeRecognizer 实例
QCloudRealTimeRecognizer *recognizer = [[QCloudRealTimeRecognizer alloc] initWithConfig:config];
4. 设置 delegate,实现 QCloudRealTimeRecognizerDelegate 方法
recognizer.delegate = self;
5. 开始识别
[recognizer start];
6. 结束识别
[recognizer stop];

调用者提供语音数据示例

1. 引入 QCloudSDK 的头文件,将使用 QCloudSDK 的文件名后缀由 .m->.mm
#import<QCloudSDK/QCloudSDK.h>
2. 创建 QCloudConfig 实例
//1.创建 QCloudConfig 实例
QCloudConfig *config = [[QCloudConfig alloc] initWithAppId:kQDAppId
secretId:kQDSecretId
secretKey:kQDSecretKey
projectId:kQDProjectId];
config.sliceTime = 600; //语音分片时长600ms
config.enableDetectVolume = YES; //是否检测音量
config.endRecognizeWhenDetectSilence = YES; //是否检测到静音停止识别
3. 自定义 QCloudDemoAudioDataSource,QCloudDemoAudioDataSource 实现 QCloudAudioDataSource 协议
QCloudDemoAudioDataSource *dataSource = [[QCloudDemoAudioDataSource alloc] init];
4. 创建 QCloudRealTimeRecognizer 实例
QCloudRealTimeRecognizer *recognizer = [[QCloudRealTimeRecognizer alloc] initWithConfig:config dataSource:dataSource];
5. 设置 delegate,实现 QCloudRealTimeRecognizerDelegate 方法
recognizer.delegate = self;
6. 开始识别
[recognizer start];
7. 结束识别
[recognizer stop];

主要接口类说明

QCloudRealTimeRecognizer 初始化说明

QCloudRealTimeRecognizer 是实时语音识别类,提供两种初始化方法。
/**
* 初始化方法,调用者使用内置录音器采集音频
* @param config 配置参数,详见QCloudConfig定义
*/
- (instancetype)initWithConfig:(QCloudConfig *)config;

/**
* 初始化方法,调用者传递语音数据调用此初始化方法
* @param config 配置参数,详见QCloudConfig定义
* @param dataSource 语音数据数据源,必须实现QCloudAudioDataSource协议
*/
- (instancetype)initWithConfig:(QCloudConfig *)config dataSource:(id<QCloudAudioDataSource>)dataSource;

QCloudConfig 初始化方法说明

/**
* 初始化方法-直接鉴权
* @param appid 腾讯云 appId
* @param secretId 腾讯云 secretId
* @param secretKey 腾讯云 secretKey
* @param projectId 腾讯云 projectId
*/
- (instancetype)initWithAppId:(NSString *)appid
secretId:(NSString *)secretId
secretKey:(NSString *)secretKey
projectId:(NSString *)projectId;

/**
* 初始化方法-通过STS临时证书鉴权
* @param appid 腾讯云appId
* @param secretId 腾讯云临时secretId
* @param secretKey 腾讯云临时secretKey
* @param token 对应的token
*/
- (instancetype)initWithAppId:(NSString *)appid
secretId:(NSString *)secretId
secretKey:(NSString *)secretKey
token:(NSString *)token;


QCloudRealTimeRecognizerDelegate 方法说明

/**
* 一次实时录音识别,分为多个flow,每个 flow 可形象的理解为一句话,一次识别中可以包括多句话。
* 每个 flow 包含多个 seq 语音数据包,每个 flow 的 seq 从0开始
*/
@protocol QCloudRealTimeRecognizerDelegate <NSObject>

@required
/**
* 每个语音包分片识别结果
* @param response 语音分片的识别结果
*/
- (void)realTimeRecognizerOnSliceRecognize:(QCloudRealTimeRecognizer *)recognizer response:(QCloudRealTimeResponse *)response;

@optional
/**
* 一次识别成功回调
@param recognizer 实时语音识别实例
@param result 一次识别出的总文本
*/
- (void)realTimeRecognizerDidFinish:(QCloudRealTimeRecognizer *)recognizer result:(NSString *)result;
/**
* 一次识别失败回调
* @param recognizer 实时语音识别实例
* @param error 错误信息
* @param voiceId 如果错误是后端返回的,附带voiceId
*/

- (void)realTimeRecognizerDidError:(QCloudRealTimeRecognizer *)recognizer error:(NSError *)error voiceId:(NSString * _Nullable) voiceId;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 开始录音回调
* @param recognizer 实时语音识别实例
* @param error 开启录音失败,错误信息
*/
- (void)realTimeRecognizerDidStartRecord:(QCloudRealTimeRecognizer *)recognizer error:(NSError *)error;
/**
* 结束录音回调
* @param recognizer 实时语音识别实例
*/
- (void)realTimeRecognizerDidStopRecord:(QCloudRealTimeRecognizer *)recognizer;
/**
* 录音音量实时回调用
* @param recognizer 实时语音识别实例
* @param volume 声音音量,取值范围(-40-0)
*/
- (void)realTimeRecognizerDidUpdateVolume:(QCloudRealTimeRecognizer *)recognizer volume:(float)volume;


//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 语音流的开始识别
* @param recognizer 实时语音识别实例
* @param voiceId 语音流对应的 voiceId,唯一标识
* @param seq flow 的序列号
*/
- (void)realTimeRecognizerOnFlowRecognizeStart:(QCloudRealTimeRecognizer *)recognizer voiceId:(NSString *)voiceId seq:(NSInteger)seq;
/**
* 语音流的结束识别
* @param recognizer 实时语音识别实例
* @param voiceId 语音流对应的 voiceId,唯一标识
* @param seq flow的序列号
*/
- (void)realTimeRecognizerOnFlowRecognizeEnd:(QCloudRealTimeRecognizer *)recognizer voiceId:(NSString *)voiceId seq:(NSInteger)seq;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* 语音流开始识别
* @param recognizer 实时语音识别实例
* @param voiceId 语音流对应的 voiceId,唯一标识
* @param seq flow 的序列号
*/
- (void)realTimeRecognizerOnFlowStart:(QCloudRealTimeRecognizer *)recognizer voiceId:(NSString *)voiceId seq:(NSInteger)seq;
/**
* 语音流结束识别
* @param recognizer 实时语音识别实例
* @param voiceId 语音流对应的 voiceId,唯一标识
* @param seq flow 的序列号
*/
- (void)realTimeRecognizerOnFlowEnd:(QCloudRealTimeRecognizer *)recognizer voiceId:(NSString *)voiceId seq:(NSInteger)seq;

@end


QCloudAudioDataSource 协议说明

调用者不适用 SDK 内置录音器进行语音数据采集,自己提供语音数据需要实现此协议所有方法,可见 Demo 工程中的 QDAudioDataSource 实现。
/**
* 语音数据数据源,如果调用者需要自己提供语音数据, 调用者实现此协议中所有方法
* 提供符合以下要求的语音数据:
* 采样率:16k
* 音频格式:pcm
* 编码:16bit位深的单声道
*/
@protocol QCloudAudioDataSource <NSObject>

@required

/**
* 标识 data source是否开始工作,执行完 start 后需要设置成 YES, 执行完 stop 后需要设置成 NO
*/
@property (nonatomic, assign) BOOL running;

/**
* SDK 会调用 start 方法,实现此协议的类需要初始化数据源。
*/
- (void)start:(void(^)(BOOL didStart, NSError *error))completion;
/**
* SDK 会调用 stop 方法,实现此协议的类需要停止提供数据
*/
- (void)stop;
/**
* SDK 会调用实现此协议的对象的此方法读取语音数据, 如果语音数据不足 expectLength,则直接返回 nil。
* @param expectLength 期望读取的字节数,如果返回的 NSData 不足 expectLength个字节,SDK 会抛出异常。
*/
- (nullable NSData *)readData:(NSInteger)expectLength;

@end

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈