跑通TRTC
环境要求
- Xcode 11.0及以上版本
- 请确保您的项目已设置有效的开发者签名
前提条件
您已 注册腾讯云 账号,并完成 实名认证。
操作步骤
步骤1:创建新的应用
- 登录实时音视频控制台,选择【开发辅助】>【快速跑通Demo】。
- 单击【立即开始】,输入应用名称,例如
TestTRTC
,单击【创建应用】。
步骤2:下载 SDK 和 Demo 源码
- 鼠标移动至对应卡片,下载相关 SDK 及配套的 Demo 源码。
- iOS:单击【Github】跳转至 Github(或单击【ZIP】)
- Mac:单击【Github】跳转至 Github(或单击【ZIP】)
- 下载完成后,返回实时音视频控制台,单击【我已下载,下一步】,可以查看 SDKAppID 和密钥信息。
步骤3:配置 Demo 工程文件
- 解压 步骤2 中下载的源码包。
- 找到并打开
GenerateTestUserSig.h
文件:适用平台文件相对路径iOSiOS/TRTCScenesDemo/TXLiteAVDemo/Debug/GenerateTestUserSig.hMacMac/TRTCScenesDemo/TRTCDemo/TRTC/GenerateTestUserSig.h - 设置
GenerateTestUserSig.h
文件中的相关参数:- SDKAPPID:默认为0,请设置为实际的 SDKAppID。
- SECRETKEY:默认为空字符串,请设置为实际的密钥信息。
- 返回实时音视频控制台,单击【粘贴完成,下一步】。
- 单击【关闭指引,进入控制台管理应用】。
步骤4:编译运行
- 在终端窗口进入源码的 TRTCScenesDemo > Podfile 文件所在目录。
- 执行
pod install
命令安装 TRTC SDK,或者执行pod update
命令,更新本地库版本。 - 使用 XCode(11.0及以上的版本)打开源码目录下的 TXLiteAVDemo.xcworkspace 工程,编译并运行 Demo 工程即可。
接入流程
1,打开您的 Xcode 工程项目,选择要运行的 target , 选中Build Phases项。
项目结构
2,单击Link Binary with Libraries项展开,单击底下的“ ”号图标去添加依赖库。
添加依赖库
3,依次添加所下载的 TRTC SDK Framework 及其所需依赖库libc 、Accelerate.framework和libresolv.tbd、AVFoundation.framework。
添加描述
4,授权摄像头和麦克风使用权限
使用 SDK 的音视频功能,需要授权麦克风和摄像头的使用权限。在 App 的 Info.plist 中添加以下两项,分别对应麦克风和摄像头在系统弹出授权对话框时的提示信息。
- Privacy - Microphone Usage Description,并填入麦克风使用目的提示语。
- Privacy - Camera Usage Description,并填入摄像头使用目的提示语。
权限设置
5,在 Objective-C 或 Swift 代码中使用 SDK 有两种方式:
- 模块引用:在项目需要使用 SDK API 的文件里,添加模块引用。 @import TXLiteAVSDK_TRTC;
- 头文件引用:在项目需要使用 SDK API 的文件里,引入具体的头文件。 #import TXLiteAVSDK_TRTC/TRTCCloud.h
在 TRTC 接口协议 里设置音频源代理,并设置 ASR 读取音频源。
代码语言:javascript复制//1.TRTCAudioFrameDelegate 协议是 TRTC 获取音频源的协议,由于 ASR 识别16k或8k采样率的音频数据,所以需要设置 setAudioQuality 为 TRTCCloudDef#TRTC_AUDIO_QUALITY_SPEECH (流畅:采样率:16k;单声道;音频裸码率:16kbps)
- (void) onCapturedRawAudioFrame:(TRTCAudioFrame *)frame {//此方法为 TRTC 本地麦克风采集到的原始音频数据回调:
NSUInteger readLength = [frame.data length];
void *pcmBytes = (void *)frame.data.bytes;
[dataSource didRecordAudioData:pcmBytes length:readLength];
}
此方法在TRTCCloudDelegate中
ASR 音频源设置为第三方,并实现具体逻辑。
接入第三方音频源需要在 ASR 接入部分实现 QCloudAudioDataSource 协议。代码示例如下:
代码语言:javascript复制#import<QCloudSDK/QCloudSDK.h>
//1.使用第三方外部数据源传入语音数据,自定义 data source 需要实现 QCloudAudioDataSource 协议
QDAudioDataSource *dataSource = [[QDAudioDataSource alloc] init];
//2.创建 QCloudRealTimeRecognizer 识别实例
QCloudRealTimeRecognizer *realTimeRecognizer = [[QCloudRealTimeRecognizer alloc] initWithConfig:config dataSource:dataSource];
接入 ASR 的 QCloudAudioDataSource 协议如下,协议详情。代码可参考工程中 QDAudioDataSource.m 文件。
代码语言:javascript复制@interface QDAudioDataSource : NSObject<QCloudAudioDataSource>
@end
@implementation QDAudioDataSource
@synthesize running = _running;
//SDK 会调用此方法获取当前状态
- (BOOL)running{
return _recording;
}
//SDK 会调用 start 方法,实现此协议的类需要初始化数据源
- (void)start:(void(^)(BOOL didStart, NSError *error))completion{
_data = [[NSMutableData alloc] init];
}
//SDK 会调用 stop 方法,实现此协议的类需要停止提供数据
- (void)stop{
_recording = NO;
_data = nil;
}
//SDK 会调用实现此协议的对象的此方法读取语音数据
- (nullable NSData *)readData:(NSInteger)expectLength{
NSData *data = nil;
if ([_data length] >= _offset expectLength) {
data = [_data subdataWithRange:NSMakeRange(_offset, expectLength)];
[_data replaceBytesInRange:NSMakeRange(_offset, expectLength) withBytes:NULL length:0];
}
return data;
}
//此处仅为演示,需用户自行完善音频数据源填充
- (void)didRecordAudioData:(void * const )bytes length:(NSInteger)length{
[_data appendBytes:bytes length:length];
}
@end
识别结果演示
https://video-1302335295.cos.ap-guangzhou.myzijiebao.com/videos/TRTC+ASR/video.mp4