QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

从“对讲机”到“打电话”——实时音视频技术在 Agent 上的应用与实践

  • 2024-12-25
    北京
  • 本文字数:4211 字

    阅读完需:约 14 分钟

大小:2.00M时长:11:40
从“对讲机”到“打电话”——实时音视频技术在 Agent 上的应用与实践

文章概要:

  • 智能语音 Agent 的应用场景:AI 社交、儿童陪伴、AI 助手、教学、客服、智能硬件

  • RTC 技术在 Agent 上的重要性,包括超低延时-更流畅、智能打断-更自然、抗弱网-更可靠

  • RTC 在处理实时视频流的场景以及优势——在持续传图场景下比传输图片更省流量,按需抽帧更灵活

  • RTC 在处理多人多 Agent 的场景以及优势——基于房间的多人多 agent 管理

录播回放:https://www.volcengine.com/live/event/force-2412-developer,01:41:20-01:57:30


以下内容来自「火山引擎 2024 冬 Force 原动力大会开发者主论坛」上的演讲,演讲嘉宾:杨若扬


今天和大家分享的话题是 RTC,也就是实时音视频在 AI 智能体上的应用与实践,我们从一个简单的转变说起——从“对讲机”到“打电话”,这个看似微小的转变,背后蕴含着技术的巨大飞跃。而 RTC 技术,在这个过程中起到了非常关键的作用。


上个月底,WebRTC 的早期创建者之一 Justin Uberti 宣布加入 OpenAI,并且领导 Real-Time AI 项目的开发。而就在昨天(12 月 18 日),OpenAI 发布支持通过 WebRTC 接口来连接 Realtime API,这意味着 RTC 技术越来越深入扎根到 AI 领域,对于 AI 的应用场景会带来飞快的拓展。


Justin Uberti 认为,语音和视频的交互是 AI 的未来,他会用他在 RTC 领域的专业能力推动人与 AI 的交互从文本框走向更自然的音视频对话。火山引擎其实在今年 8 月份就发布了 RTC 与方舟结合的「实时对话式 AI」方案。上个月,扣子上线了集成火山 RTC 的智能语音功能。我今天分享的主题,正好踩在这个时代的趋势上。


我们先来看一下,结合了 RTC 技术之后的智能体能在哪些场景发挥作用。



在 AI 社交场景,智能体可以变身成为你的虚拟好友,他/她可以 24 小时提供情绪价值。和这样的虚拟朋友聊天,用打电话的方式比发送语音消息的体验要好得多。


在儿童陪伴场景,智能体可以陪伴小朋友学习、玩耍,还能用小朋友最喜欢的 IP 音色,比如小猪佩奇、小马宝莉的声音,用小朋友的话和他们聊天。小朋友的口齿一般不像大人这么清晰,这在幼儿里面非常常见,有时候大人都不一定听得懂他们在说什么,但 AI 可以听懂。


还有 AI 助手,像豆包 App 就是一个 AI 超级助手,你什么事都可以问它。很多时候,你可能手上正做着事情,这时候用实时语音和它对话的话,你就可以解放双手,让你可以一边处理手上的事情,一边让它在旁边给你提供帮助。


结合了实时语音之后,智能体也可以成为你的同声传译员,和老外交流的时候在旁边给你做双向翻译;他也可以作为你的口语陪练,你不用再请很贵的外教了,口音也不会成为问题,甚至社恐人士也可以大胆和 AI 外教进行交流。


还有 AI 客服,他是一个永远不会发脾气的专业客服,还能为企业降本增效。


这些场景,都需要实时语音。



我们还能把带有实时语音的智能体塞入硬件,这些硬件也就都有了灵魂,它们不再是一个摆设、一个玩偶,而是你的朋友、你的家庭营养顾问。



在以前,要实现上面这些功能,开发起来非常复杂,开发者需要去对接非常多的技术,现在,有了扣子 1.5 的智能语音 API,要实现这些功能就变得非常简单。


首先,扣子本身就是新一代 AI 应用开发平台。开发者用扣子的可视化工作流、知识库、记忆、搜索插件等功能来很快捏一个智能体,把它发布为 Agent as API;然后集成 RTC SDK,调用“创建房间”接口创建一个 RTC 房间;然后再把刚才捏好的智能体加入 RTC 房间。这样,只要你的用户也加入到同一个房间,他就可以和智能体进行实时语音对话了。这个过程就和我们加入视频会议一样,不同的人加入到同一个会议,就可以相互交流。



这里所说的“实时对话”,和标题说的一样,是说像和真人打电话那样,而不是实时对讲机。“对讲机”模式可以理解为微信语音消息,就是按住一个按钮说话,说完了松开,把语音消息发给出去,对方听完过几秒再回过来一句话。这种方式,与“实时对话”的体验差距是非常大的。


而 RTC 就是为极低延时的网络传输而生的技术,它采用了全双工模式的通信技术,通信双方可以同时进行双向数据的发送和接收,这样可以显著地提高通信效率。而且,火山引擎 RTC 在全球有 3000 多个优质网络节点,这 3000 多个节点组成了一张全球范围的网络高速公路,让音视频数据始终跑在最快的通道上进行传输。RTC 的端到端传输一般只需要 100ms,再加上大模型、ASR、TTS 的计算耗时,可以让用户和智能体对话的端到端延时最低降至 1 秒。


像和真人“打电话”的另一个特点是,在对话过程中你可以随时打断它。我们可以用语音和智能体说“你这个话题我们先跳过”,或者说“我刚才那句话不是这个意思”,你甚至可以在他说话时和他说“直接用英文回答我这个问题”,这些都可以用语音来控制,而不需要通过手按按钮让它“别说了”。这个功能依赖 VAD 技术 ,也就是语音活性检测,它的复杂点在于,我们采集到的音频很多时候会带有环境噪声,当这些噪声存在的时候,可能 VAD 会造成误打断,所以我们要解决噪声的问题;除此以外,还有回声的问题,因为在双向通话时,对方在说本地还在采集,这时候会产生回声,所以还要解决回声的问题。这些音频上的算法要处理好还是非常麻烦的,除了要加上刚才说的这些算法以外,这些算法本身还和硬件设备有很大的兼容性的依赖关系。现在线上手机型号就有上万款,再加上一些 IoT 的智能设备,型号就更多了,适配起来很麻烦。火山引擎 RTC 已经在抖音、飞书、以及即将要上线的豆包上已经做了非常充分的技术积累,可以让我们的开发者不用操心这些麻烦的问题,把精力留在自己最关键的业务上。


还有一个不得不提的关键细节是弱网环境。我们都是通过互联网来和 AI 交流的,如果你所处的网络信号不好,或者网络发生了波动,这种情况我们称之为弱网,如果出现弱网就会出现网络丢包,丢包就可能会丢字,如果你说的一句话中的关键字丢了,大模型的理解可能就会谬之千里。弱网在我们的生活中其实很常见,如果你的用户多到一定程度,弱网引发的问题就会越来越突出。所以,对抗弱网的能力在这里相当重要。火山引擎 RTC 拥有丰富的丢包重传和前向冗余等抗弱网策略,可以在 80% 丢包的环境下依然保持流畅的通话,确保大模型在各种网络环境下的表现。



说完语音,我们再来说说视频。


昨天的发布会上,豆包大模型正式发布了视觉理解模型。当我们的智能体能看见之后,我们和大模型的交流体验就又升级了!


这里我分享两个场景,第一个是在 AI 社交中,如果你的虚拟朋友它能够看见你的影像,那会发生什么?

我们看到,虚拟朋友可以通过你的表情或动作,会推测你不开心,即便你不说“我不开心”,他也会主动送上关心,这和真人体验就更接近了一步。


再看一个场景,当我们用智能体去实时捕捉我们的电脑桌面,这时候又能出现什么新的玩法?

我们在玩游戏的时候,智能体可以实时分析我们的游戏画面,给我们提供及时的游戏信息和打法建议。



讲完场景,我们再聊聊实现。


大家可能会问,传视频流的话是不是很费流量,是不是传图片流就可以了?我们的答案是,不一定。

首先看应用场景,如果你的场景需求只需要一张图,那肯定是传图片就行了。但如果你的场景需求要持续传输连续的多张图片,那就不一定了。


我们做了个计算,对比视频流和图片流分别需要消耗多少流量——左边是传输 1 分钟的 1080p 视频,帧率是 15 帧,也就是 1 秒有 15 张图片;右边是传输 1 分钟的 1080p 图片流,每秒只传 1 张图,相当于 1 帧的视频。这本身是个不公平的对比,15 帧和 1 帧,左边视频流的信息量是右边图片流的 15 倍。但计算下来,视频流消耗的流量却只有图片流的一半,相当于 30 倍的差距。这是因为 RTC 对视频数据做了关键帧编码压缩,对于一段连续的视频,只要开头的那一帧是一张完整的图片数据,后面的每一帧只需要参考前一帧的变化,只对差异进行编码,也就是说,后面的参考帧其实占用的数据量是非常小的,这样做就可以大大减少视频传输的数据量,提高视频传输效率。而相对于图片流来说,相当于每一张图片都是一个关键帧。如果想要让大模型理解连续画面,需要在 1 秒钟内传输多张图片信息的话,视频流是一个更好的选择。



传视频流还有一个好处,有时候,大模型并不是需要理解视频的每一帧,可以根据场景需求来灵活调整抽帧策略。比如刚才说的识别人物表情、动作,这时候不需要太低的抽帧间隔,设置一个高一些的间隔就可以。而屏幕抓取场景就需要一个较低的间隔,尤其是游戏这种高帧率的场景,就需要更低的间隔了。



刚刚我们说的这些场景,目前市面上的产品形态看到的都是 1v1 的,也就是 1 个真人和 1 个智能体对话。但我们发现,市场的需求其实肯定不满足于只有 1v1。


比如在视频会议场景,会议助手不止是服务一个用户,而是要倾听会议中的所有用户,它需要知道谁是谁,谁说了什么,会议的主要结论是什么,ToDo 是什么;还需要去随时响应任何一个用户向它提出的问题和指令。


再比如剧本杀、狼人杀这种多人社交游戏,有时候可能玩家凑不齐足够的人数,像狼人杀至少 8 个人才能玩,以前玩家只能选择和陌生的朋友玩,现在,如果你不想和陌生的朋友玩,也可以让智能体玩家来加入填补空缺。这时候,智能体既需要和真人玩家配合,还需要和别的智能体玩家配合,这里的业务逻辑也会更复杂一些。


还有比如主持啊、调解纠纷的场景。视频里的这个智能体就很忙,要同时照顾到多个真人用户的谈话、情绪,要记忆他们各自的内容,还要注意对话的连续性。



这样的多人场景要做的好,我们需要关注智能体的响应速度、上下文连续性,以及多人多 Agent 之间“连接”的管理。当连接数量越来越多的时候,需要做的管理逻辑也是越来越复杂,“连接”数量也在疯长(相当于 n 平方的数量,n 是用户和智能体的数量),复杂度会大大增加,开发者需要去处理类似“信令风暴”这样很麻烦的问题。而 RTC 把这些复杂的技术问题都解决了——把它封装成一个“房间”,还会在内部做很多的性能的处理,因此我们的开发者就不需要再操心这些麻烦的问题了。



最后,我想 call back 一下开头,借用 Justin Uberti 的一句话来作为我今天分享的结尾。Someday we would talk to AIs like human communication。他原文说的是:我们意识到语音和视频对人类交流的影响,有一天我们也会用同样的方式和 AI 对话。


在 AI 领域,大模型、语音、视频、网络传输这些不言而喻都是非常关键的技术,而 RTC 也将会在这个飞速发展的领域中越来越重要,让人和大模型的交流体验越来越像人与人的交流。这就是 Justin 所坚信的那样,我相信未来的发展潜力是非常无限的。


希望我今天的分享能够给大家带来启发,谢谢大家!

2024-12-25 17:0210552

评论

发布
暂无评论
发现更多内容

企业级 Angular 应用路由路径自定义配置和开发的案例分享

汪子熙

typescript 前端开发 angular Web应用 11月月更

数据结构学习笔记(二)

lxmoe

数据结构 学习笔记 11月月更

浅谈HTTP缓存与CDN缓存的那点事

京东科技开发者

缓存 性能 Web CDN HTTP缓存

关于软件物料清单(SBOM),你所需要了解的一切

SEAL安全

安全 软件物料清单 SBOM

Apache Pulsar 社区年度峰会 Pulsar Summit Asia 2022 即将召开

腾源会

大数据 开源

如何使用ModelBox快速提升AI应用性能

华为云开发者联盟

人工智能 华为云 ModelBox

vue实战-完全掌握Vue自定义指令

yyds2026

Vue

能否手写vue3响应式原理-面试进阶

helloworld1024fd

JavaScript

腾讯前端高频手写面试题

helloworld1024fd

JavaScript

荣耀开发者大会预约有礼

荣耀开发者服务平台

开发者 手机 开发者大会 荣耀 honor

数据结构学习笔记(一)

lxmoe

数据结构 学习笔记 11月月更

用了8年MQ!聊聊消息队列的技术选型,哪个最香!

小小怪下士

Java RocketMQ RabbitMQ 消息队列

Linux系统保存文件命令的详细介绍

源字节1号

软件开发 前端开发 后端开发 小程序开发

产品待办列表PBL与产品需求文档PRD的本质区别

ShineScrum

Scrum PRD 产品待办列表 PBL 产品需求文档

zabbix添加自定义监控项&告警(邮件)

A-刘晨阳

Linux 运维 zabbix 11月月更

vue实战中的一些小技巧

yyds2026

Vue

手撕常见JS面试题

helloworld1024fd

JavaScript

Linux系统中CPU占用率较高问题排查思路与解决方法

A-刘晨阳

Linux 运维 cpu 11月月更

【docker】导入镜像报错磁盘空间不足的解决方法 && 【docker】修改默认的存储路径

A-刘晨阳

Docker Linux 运维 11月月更

vue实战-深入响应式数据原理

yyds2026

Vue

记一次京东前端面试被问到的题目

helloworld1024fd

JavaScript

redhat运维-ftp服务故障

阿柠xn

Linux 运维 ftp 11月月更

Wallys/ DR9074-6E QCN9074 WIFI 6E 802.11AX 4X4 6GHz/ industrial M.2 card / DR9074-6E(PN02.7)

Cindy-wallys

m.2 QCN9074 WIFI 6e

python中类与对象的动态性,混入机制

乔乔

11月月更

技术分享| Etcd如何实现分布式负载均衡及分布式通知与协调

anyRTC开发者

分布式 etcd 通知 式负载均衡 协调

Java中的BigDecimal比较大于小于等于,四舍五入保留几位(setScale方法详解),加减乘除取余

共饮一杯无

Java BigDecimal 11月月更

算法基础:离散化及模板详解

timerring

算法 11月月更 离散化

Wallys/IPQ4018/IPQ4028 2x2 2.4Ghz 2x2 5Ghz Industrial WIFI5 router/Support 11ABGN/AC

Cindy-wallys

IPQ4018 IPQ4028 2.4G&5G

HarmonyOS 3.1版本发布,全面进入声明式开发

HarmonyOS开发者

HarmonyOS

细说react源码中的合成事件

flyzz177

React

ElasticSearch深度分页详解

京东科技开发者

数据库 elasticsearch 分布式搜索引擎 分布式实时搜索引擎

从“对讲机”到“打电话”——实时音视频技术在 Agent 上的应用与实践_字节跳动_火山引擎视频云_InfoQ精选文章