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

TRTC 接入实时语音识别

原创
作者头像
许岳操
修改于 2021-02-01 03:55:15
修改于 2021-02-01 03:55:15
4.1K00
代码可运行
举报
文章被收录于专栏:技术拓展技术拓展
运行总次数:0
代码可运行

跑通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-CSwift 代码中使用 SDK 有两种方式:

  • 模块引用:在项目需要使用 SDK API 的文件里,添加模块引用。 @import TXLiteAVSDK_TRTC;
  • 头文件引用:在项目需要使用 SDK API 的文件里,引入具体的头文件。 #import TXLiteAVSDK_TRTC/TRTCCloud.h

TRTC 接口协议 里设置音频源代理,并设置 ASR 读取音频源。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//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
代码运行次数:0
运行
AI代码解释
复制
#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
代码运行次数:0
运行
AI代码解释
复制
@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 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
详解音频编解码的原理、演进和应用选型等
本文来自网易云音乐音视频实验室负责人刘华平在LiveVideoStackCon 2017大会上的分享,并由LiveVideoStack根据演讲内容整理而成(本次演讲PPT文稿,请从文末附件下载)。
JackJiang
2019/01/18
3.6K0
音频基础知识
Nyquist 采样率大于或等于连续信号最高频率分量的 2 倍时,采样信号可以用来完美重构原始连续信号。
Gnep@97
2023/09/06
3.3K0
音频基础知识
音视频基础
采样精度(采样深度):每个“样本点”的大小, 常用的大小为8bit, 16bit,24bit。
vitofliu
2021/07/05
2.4K0
从Satin到Lyra 为何微软、谷歌都盯向音频编解码器?
回顾今年的2月份,可以说是音频编解码器最为热闹的一个月。先是微软宣布推出最新款由AI支持的音频编解码器——Satin。仅一周后,谷歌推出了用于语音压缩的新型超低比特率音频编解码器——Lyra,并且Android版本已开源。在此,也非常感谢来自国内音频领域的知名业内人士对本文发表评论及审校。
LiveVideoStack
2021/09/01
7670
从Satin到Lyra 为何微软、谷歌都盯向音频编解码器?
音频编码:入门看这篇就够了丨音视频基础
(本文基本逻辑:音频编码的理论基础 → PCM 编码 → AAC 编码工具集、编码流程、编码规格和数据格式)
关键帧
2022/06/13
4.5K0
音频编码:入门看这篇就够了丨音视频基础
5G时代来临,前端开发工程师必须了解的音视频入门基础知识
本文将给大家进行音视频基础的常规知识点的梳理。当然,短短的一篇文章并不能让大家立即变成音视频领域的专家,但这些知识点已经基本涵盖了音视频的入门知识。我们将按照下面的内容给大家
IMWeb前端团队
2019/12/06
1.7K0
从wav到Ogg Opus 以及使用java解码OPUS
自然界中的声音非常复杂,波形极其复杂,通常我们采用的是脉冲代码调制编码,即PCM编码。PCM通过抽样、量化、编码三个步骤将连续变化的模拟信号转换为数字编码。
JadePeng
2021/04/14
3.5K1
从wav到Ogg Opus 以及使用java解码OPUS
干货 | 携程呼叫中心移动坐席解决方案
作者简介 本文作者为携程基础业务研发部呼叫中心团队,其在传统呼叫中心基础上,结合软交换、智能分配、自动语音语义处理等技术,为携程用户提供人性化、人机互动、便捷的电话语音服务。 一、前言 智能手机早已成为日常生活中不可或缺的一部分,随着移动互联网的快速发展,人们的生活习惯与工作方式也在不断发生改变。从移动通信、移动支付,再到移动办公,“移动化”已渗透至各行各业,并逐步成为企业业务发展的趋势。 携程呼叫中心研发团队根据业务的需求,研发完成了一套完整的呼叫中心移动坐席解决方案,使业务坐席不再受制于工作时间、办公地
携程技术
2018/03/16
3.3K0
干货 | 携程呼叫中心移动坐席解决方案
音视频编码相关名词详解
PAR - pixel aspect ratio(像素宽高比)大多数情况为1:1,就是一个正方形像素,否则为长方形像素
用户2929716
2018/08/23
1.6K0
音视频编码相关名词详解
音视频的那几个关键参数
视频文件常含有视频流和音频流(有的甚至存在字幕流),每路流均具有一套参数来描述其特性:如音频流的采样率、通道数、位深、编码方式等,视频流的分辨率、帧率、颜色空间等,这些参数不仅影响到文件的质量,也影响到文件的大小和播放效果。因此,在音视频处理中,了解这些参数的含义和作用至关重要。
程序员的园
2024/11/15
1490
音视频的那几个关键参数
Android音视频开发:踩一踩“门槛”
将声音保存成音频的过程,其实就是将模拟音频数字化的过程,为了实现这个过程,就需要对模拟音频进行采样、量化和编码。接下来我们详细讲解这一过程。
字节流动
2021/04/23
6950
Android音视频开发:踩一踩“门槛”
音视频封装格式:AAC音频基础和ADTS打包方案详解
现在主流的封装格式支持的音视频编码标配是H264+AAC,其中像TS、RTP、FLV、MP4都支持音频的AAC编码方式。当然,后继者不乏Opus这种编码方式,它主要应用在互联网场景,比如现在谷歌的WebRTC音视频解决方案就用的Opus,最新发布的Android10支持的音视频编码方式就是AV1和Opus,但是AAC目前在广电,安防,电影院等还是应用最多,Opus目前还不足以威胁到AAC的地位。本篇文章准备讲解下AAC的封装格式ADTS字段含义和解封装,顺便讲解下AAC编码的一些基本情况,如果你只关心解封装,直接看【AAC的封装格式】这节即可。
潇湘落木
2020/11/12
4K0
音视频封装格式:AAC音频基础和ADTS打包方案详解
掌握音视频已是一种趋势,Android音视频基础解析帮大家破除学习“高门槛”
音视频行业已经发展很多年了,随着近几年移动端越来越多的音视频APP的出现,将音视频推向一个高潮,但是由于音视频的学习成本很高,很多开发者望而却步,为了跟紧时代的步伐,我写了这篇音视频基础,讲解了音视频的相关知识,给大家破除音视频的“高门槛”,希望可以共同进步。
Android技术干货分享
2020/12/17
1K0
掌握音视频已是一种趋势,Android音视频基础解析帮大家破除学习“高门槛”
使用 FFmpeg 提取音频的简易指南
FFmpeg 是一个开源的多媒体处理工具,支持视频、音频的编码、解码、转换等多种功能。通过 FFmpeg,提取视频中的音频并保存为各种格式非常简单和高效。这在音视频剪辑、媒体处理、转码等场景中具有广泛的应用。
繁依Fanyi
2024/09/22
1.3K0
腾讯云GME之网络编解码
评判一个地方好坏的致命原则---体验感。同样,体验感也是网络游戏中不可或缺的元素。生活中我们通过旅行来放松身心缓解压力,换个城市最大的不同在于什么?在于人类对多元化场景的新奇体验带来的满足感。网络里多变的场景对我们视觉的冲击和吸引力更是被无限放大。极致场景体验感的背后一定站着一个支撑它的更伟大的GME。
可可爱爱没有脑袋
2019/12/12
3.1K0
腾讯云GME之网络编解码
常见的音乐格式
WAVE文件作为最经典的Windows多媒体音频格式,应用非常广泛,它使用三个参数来表示声音:采样位数、采样频率和声道数。声道有单声道和立体声之分,采样频率一般有11025Hz(11kHz)、22050Hz(22kHz)和44100Hz(44kHz)三种。WAVE文件所占容量=(采样频率×采样位数×声道)×时间/8(1字节=8bit)。
赵彤刚
2022/12/12
1.2K0
科普常识:常见音频参数解析
        如果在计算机加上相应的音频卡—就是我们经常说的声卡,我们可以把所有的声音录制下来,声音的声学特性如音的高低等都可以用计算机硬盘文件的方式储存下来。反过来,我们也可以把储存下来的音频文件用一定的音频程序播放,还原以前录下的声音。
朵朵花儿
2019/12/28
2.9K0
音视频编解码常用知识点
视频播放器播放一个互联网上的视频文件,需要经过以下几个步骤:解协议,解封装,解码视音频,视音频同步。如果播放本地文件则不需要解协议,为以下几个步骤:解封装,解码视音频,视音频同步。他们的过程如图所示。
全栈程序员站长
2022/09/14
1.8K0
音视频编解码常用知识点
语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(一)音频数据编码与预处理
深度学习技术在当今技术市场上面尚有余力和开发空间的,主流落地领域主要有:视觉,听觉,AIGC这三大板块。目前视觉板块的框架和主流技术在我上一篇基于Yolov7-LPRNet的动态车牌目标识别算法模型已有较为详细的解说。
fanstuck
2024/06/03
4563
语音深度鉴伪识别项目实战:基于深度学习的语音深度鉴伪识别算法模型(一)音频数据编码与预处理
音视频编解码技术基础
比特率,每秒传送的比特数。单位为bps,比特率越高,传送数据速度越快。1Mbit = 128KB1Mbit = 0.125MB
后端码匠
2022/03/28
1.1K0
推荐阅读
相关推荐
详解音频编解码的原理、演进和应用选型等
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验