前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TRTC 接入实时语音识别

TRTC 接入实时语音识别

原创
作者头像
许岳操
修改2021-02-01 11:55:15
3.9K0
修改2021-02-01 11:55:15
举报
文章被收录于专栏:技术拓展技术拓展

跑通TRTC

环境要求

  • Xcode 11.0及以上版本
  • 请确保您的项目已设置有效的开发者签名

前提条件

您已 注册腾讯云 账号,并完成 实名认证

操作步骤

步骤1:创建新的应用

  1. 登录实时音视频控制台,选择【开发辅助】>【快速跑通Demo】。
  2. 单击【立即开始】,输入应用名称,例如TestTRTC,单击【创建应用】。

步骤2:下载 SDK 和 Demo 源码

  1. 鼠标移动至对应卡片,下载相关 SDK 及配套的 Demo 源码。
    • iOS:单击【Github】跳转至 Github(或单击【ZIP】)
    • Mac:单击【Github】跳转至 Github(或单击【ZIP】)
  2. 下载完成后,返回实时音视频控制台,单击【我已下载,下一步】,可以查看 SDKAppID 和密钥信息。

步骤3:配置 Demo 工程文件

  1. 解压 步骤2 中下载的源码包。
  2. 找到并打开GenerateTestUserSig.h文件:适用平台文件相对路径iOSiOS/TRTCScenesDemo/TXLiteAVDemo/Debug/GenerateTestUserSig.hMacMac/TRTCScenesDemo/TRTCDemo/TRTC/GenerateTestUserSig.h
  3. 设置GenerateTestUserSig.h文件中的相关参数:
    • SDKAPPID:默认为0,请设置为实际的 SDKAppID。
    • SECRETKEY:默认为空字符串,请设置为实际的密钥信息。
  1. 返回实时音视频控制台,单击【粘贴完成,下一步】。
  2. 单击【关闭指引,进入控制台管理应用】。

步骤4:编译运行

  1. 在终端窗口进入源码的 TRTCScenesDemo > Podfile 文件所在目录。
  2. 执行pod install命令安装 TRTC SDK,或者执行pod update命令,更新本地库版本。
  3. 使用 XCode(11.0及以上的版本)打开源码目录下的 TXLiteAVDemo.xcworkspace 工程,编译并运行 Demo 工程即可。

接入流程

1,打开您的 Xcode 工程项目,选择要运行的 target , 选中Build Phases项。

项目结构

2,单击Link Binary with Libraries项展开,单击底下的“+”号图标去添加依赖库。

添加依赖库

3,依次添加所下载的 TRTC SDK Framework 及其所需依赖库libc++Accelerate.frameworklibresolv.tbdAVFoundation.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.myqcloud.com/videos/TRTC%2BASR/video.mp4

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
目录
  • 跑通TRTC
    • 环境要求
      • 前提条件
        • 操作步骤
          • 步骤1:创建新的应用
          • 步骤2:下载 SDK 和 Demo 源码
          • 步骤3:配置 Demo 工程文件
          • 步骤4:编译运行
      • 接入流程
        • 在 TRTC 接口协议 里设置音频源代理,并设置 ASR 读取音频源。
        • 识别结果演示
        相关产品与服务
        语音识别
        腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档