写点什么

AI 在 RTC 中的四大技术应用方向

  • 2019-11-30
  • 本文字数:3559 字

    阅读完需:约 12 分钟

AI 在 RTC 中的四大技术应用方向

大到无人驾驶、智能物流,小到人们出国旅游手上拿着的翻译机,AI 早已从曾经的天马行空变得触手可及。AI 也成了很多公司未来的核心战略,并应用到了产品中。其实,在 RTC 领域亦是如此。


提到 RTC 中的 AI,你可能还会记得今年 RTC 领域中的热门话题超分辨率。前几天,据说某款手机已经将其应用于调节照片远景放大后的清晰度上。我们也曾有不止一位演讲人,曾在 RTC 2018 中分享过将超分辨率应用于实时音视频中的研究。不过,超分辨率只是 AI 在 RTC 中的一个应用而已。


概括来讲,目前 AI 与 RTC 的结合点有四个:


  • 语音分析:使用机器学习分析,将实时音视频中的语音转录为文本、字幕。

  • 语音机器人:在对话框中与用户交互的语音机器人,输入与输出皆通过语音,比如 Siri、Alexa、Cortana 等。

  • 计算机视觉:处理视频,分析和理解视频中的内容。

  • RTC 优化:用于提高服务质量或性能的机器学习算法模型。

1 语音分析(Speech Analytics)

如果你对今年 Google I/O 有印象,你可能还会记得官方曾经做过一段演示,YouTube 可以根据视频的图像和声音,将视频内容翻译并以字幕形式显示出来。而且,Google 在语音识别、分析方面做了优化,即使视频中口音模糊,也能根据视频内容进行智能翻译,最终显示为字幕。应用于其中的一个重要技术方向就是语音分析。


在 RTC 中,语音分析主要的应用形式包括电话中心智能语音交互、语音转文本、翻译等等。语音分析是一个相对成熟的技术应用方向,也是一个多学科应用于实际的范例。它涉及了信号处理、模式识别、概率论和信息论、发声机理和听觉机理、深度学习等。就像 Google 所做的,我们可以将它应用于自己的视频会议、视频通话、直播连麦等一系列实时音视频场景中。如果想快速实现,市场上有很多 API 可以帮助到你;如果你的团队技术实力雄厚,那么也有几个比较著名,也比较老的开源工具可以使用。


业界有不少公司都能提供语音分析功能,例如国内的讯飞、百度、搜狗等,再例如 Google Speech API 和 Facebook 推出的 wav2letter 等。Agora 开发者也完全可以基于 SDK 的接口与这些语音识别、分析服务结合,实现创新场景。



如果自研,那么也有不少可以参考的算法模型。例如这 4 个“历史悠久”的语音识别相关的开源项目与非开源项目:HTK、CMU Sphinx、Julius、Kaldi。我们逐一简单介绍下。

1. HTK

首先 HTK 并不是开源项目,它是由剑桥大学工程学院(Cambridge University Engineering Department ,CUED)的机器智能实验室于 1989 年开发的,用于构建 CUED 的大词汇量的语音识别系统。HTK 主要包括语音特征提取和分析工具、模型训练工具、语音识别工具。1999 年 HTK 被微软收购。2015 年 HTK 发布了 3.5 Beta 版本,也是目前最新的版本。

2. CMU-Sphinx

CMU-Sphinx 是卡内基-梅隆大学(CarnegieMellon University,CMU)开发的一款开源的语音识别系统。它包括了一系列语音识别器和声学模型训练工具,被称为第一个高性能的连续语音识别系统。Sphinx 的发展也很快,Sphinx4 已经用 Java 改写,所以适合嵌入到 Android 平台。

3. Julius

Julius 是日本京都大学和 Information-technology Promotion Agency 联合开发的一个实用高效双通道的大词汇连续语音识别引擎。Julius 通过结合语言模型和声学模型,可以很方便地建立一个语音识别系统。Julius 支持的语言模型包括:N-gram 模型,以规则为基础的语法和针对孤立词识别的简单单词列表。它支持的声学模型必须是以分词为单位,且由 HMM 定义的。HMM 作为语音信号的一种统计模型,是语音识别技术的主流建模方法,正在语音处理各个领域中获得广泛的应用。Julius 由 C 语言开发,遵循 GPL 开源协议,能够运行在 Linux、Windows、Mac:OS X、Solaris 以及其他 Unix 平台。Julius 最新的版本采用模块化的设计思想,使得各功能模块可以通过参数配置。

4. Kaldi

Kaldi 是 2009 年由 JohnsHopkins University 开发的,刚开始项目代码是基于 HTK 进行的开发,现在是 C++ 作为主要语言。Kaldi 的维护和更新非常及时,几乎每一、两天就有新的 commits,而且在跟进学术研究的新算法方面也更加快速。国内外很多公司和研究机构也都在用 Kaldi。


上述几种语音识别开源代码是基础的开源版本,基于这些版本诞生了不少衍生的版本,比如 Platypus、FreeSpeech、Vedics、NatI、Simon、Xvoice、Zanzibar、OpenIVR、Dragon Naturally Speaking 等。

2 语音机器人

现在很多呼叫中心都引入了 IVR(互动式语音应答),顾客可在任何时间打电话获取他们希望得到的信息,当遇到无法解决的问题时才转入人工坐席。它可以提高服务质量、节省费用。


但它自身也存在着问题。你可能也遇到过,有时候打给一个客户中心,语音提供了多个选项让你选择,可当你听到第五个之后,就忘了之前的选项都有什么,以至于还要再听一遍。所以很多呼叫中心会把菜单设计成更少选项更多层级。但这会让用户的交互过程变得更长。


所以语音机器人开始成为呼叫中心的新选择(也可能有人管它叫智能客服或其它名字)。用户只需要说出想要什么,它就能根据关键信息筛选出用户想要的信息,就好像电话那头多了一个 Siri。



当然,Siri 也是是除了呼叫中心以外,语音机器人的另一种应用形式。目前已经有很多公司都推出了相应的产品或接口(如上图所示)。不过,要建立一个能与人自然交流的语音机器人,从架构、音频处理到算法模型的训练等,需要面对很多问题:


  • 处理噪音

  • 处理方言和自定义词汇表

  • 语音验证

  • 处理延迟

  • 使用 SSML 进行更自然的语音合成

  • 模型训练

3 计算机视觉

现在计算机视觉的应用应该已经很常见了,例如:


  • 面部识别

  • 物体检测

  • 手势识别

  • 情感分析


我们曾在年初的时候分享过两篇文章,讲述了如何结合 WebRTC 与 TensorFlow 实现物体识别,这是一位开发者的实验。大体过程是,每秒将视频图像经由 HTTP 传输到服务器端,然后通过服务器端的机器学习算法模型处理后得出检测结果,再反馈给本地,具体代码可以看我们之前的文章。


不过这个实验仍然存在很多的局限,如果图像质量过高,会需要更多传输、处理的时间,这会影响检测的实时性。所以,后来有人提出了可以在本地进行图像识别。



上图是一个基本架构,如果你感兴趣,也可以尝试一下。它利用了 google 的 AIY 硬件工具来运行 DNN。也就是说,当你采集到视频之后,可以在本地进行处理,那么就无需担心图像识别的实时性问题了。

4 对 RTC 的优化

利用 AI 可以在实时音视频方面做很多事情,例如利用超分辨率来提升实时视频中模糊图像的细节,给用户呈现更高清的视频效果,提高视觉体验;同时,由于网络传输线路上有丢包,接收的数据有失真,所以 AI 也被用来做算法补偿,提升传输质量。


超分辨率是通过深度学习来提高其分辨率,进而改善实时视频图像质量的技术。为什么需要这项技术呢?因为尽管现在用户都在高分辨率模式下获取图像,但在实时传输过程中,视频编码器可能会降低分辨率,以匹配可用带宽和性能限制。由于这个处理机制,导致图像质量通常会低于实际拍摄的质量。而超分辨率的目的就是将视频质量恢复到原始状态。


超分辨率在整个实时音视频传输过程中属于后处理中的一步。视频源经过编码在网络上传输,解码器收到后经过解码出来是一个相对模糊的图像,经过超分辨率处理把细节提升或者放大,再显示出来。


现在很多的实时视频场景都发生在移动设备上,所以对于一个深度学习算法模型来讲,需要模型体量尽量要小,这就需要面对三个主要的挑战:


  • 模型能够实时运行于移动设备上,且尽量降低功耗,避免引起发热等问题。

  • 模型小,但性能要好,可以得到足够好的结果。

  • 训练要能够基于比较合理数量的数据集。


我司的首席科学家钟声曾在 上海的 DevFest 活动和美国的 Kranky Geek 上分享过相关话题的演讲。如果你希望深入了解,可以查看我们过去的分享。


除了超分辨率,开发者们还可以利用无监督学习来分析通过 WebRTC 的 RTCStats 接口收集到的数据,从而来确定影响通话质量的原因。也可以用 TensorFlow 来分析并规范化 MOS 数据。



上图所示是一个常规的降噪算法的处理逻辑,但在以后,,Mozilla 曾推出过一个 RNNoise Project,利用了深度学习,帮助 WebRTC 用户,特别是在嘈杂环境中进行多方通话的用户实现更好的降噪效果。他们也在官方提供了一个 Sample,与 Speexdsp 的降噪效果进行对比。在 Sample 中,他们模拟了人在马路旁、咖啡馆中、车上的通话效果,然后用不同的方式进行降噪处理。你会明显听出,通过 RNNoise 降噪后,无人说话时几乎听不到噪声,而在有人说话时,还是会有轻微的噪音掺杂进来。如果你感兴趣,可以去搜搜看,体验一下。你可以在 xiph 的 Github 中找到它的代码。尽管这只是一个研究项目,但提供了一种很好的改进思路。


尽管举了这么多的研究案例与开源项目,但 AI 在 RTC 行业的应用还只是刚刚开始。


本文转载自公众号声网 Agora(ID:shengwang-agora)。


原文链接:


https://mp.weixin.qq.com/s/_KqrBhth0CDN53u1YpMLKw


2019-11-30 14:131682

评论

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

模块 4 作业

miliving

也谈谈Python的内存管理

宇宙之一粟

Python 内存管理 1月月更

「程序员35岁被淘汰」已经22岁了

FunTester

程序员 职业发展 FunTester 35岁焦虑 35岁退休

架构实战营 第 4 期 模块四作业

架构实战营 模块四 「架构实战营」

在线JSON转PHP Array工具

入门小站

工具

急速学习C#死锁

喵叔

1月月更

从运维域看 Serverless 真的就是万能银弹吗?

阿里巴巴云原生

阿里云 Serverless 运维 云原生

2021 阿里云容器服务年度盘点:企业级容器应用变化和技术趋势观察

阿里巴巴云原生

阿里云 容器 运维 云原生

[架构实战营] 模块五作业

Geek_0ed632

「架构实战营」

常见网络安全专业术语

喀拉峻

黑客 网络安全 信息安全

白帽子渗透行为监控方案

明亮安全观

网络安全 信息安全 渗透测试 行为监控

Spring Boot Serverless 实战系列“部署篇” | Mall 应用

阿里巴巴云原生

阿里云 Serverless 云原生 MAll

一文看懂椭圆曲线签名算法

Rayjun

区块链 椭圆曲线

一次无脑接口测试导致的无效排查的经历

liuzhen007

1月月更

Linux之tar命令

入门小站

Linux

模块四作业

whoami

「架构实战营」

Elasticsearch核心原理系列:10张图理解Elasticsearch核心概念

慕枫技术笔记

后端 1月月更

ReactNative进阶(九):API学习之注册组件AppRegistry

No Silver Bullet

React Native 1月月更 AppRegistry

电商系统微服务拆分和系统架构设计

drizzle

「架构实战营」

来了!「年度最强技术答辩」看这里

阿里巴巴云原生

阿里云 Serverless RocketMQ 云原生 编程挑战赛

08 Prometheus之警报管理

穿过生命散发芬芳

Prometheus 1月月更

Spring Boot CLI安装(WIN10、macOS系统)

JavaEdge

1月月更

「架构实战营」模块四《如何设计业务高性能高可用存储架构》作业

DaiChen

作业 模块四 「架构实战营」

云原生背景下故障演练体系建设的思考与实践—云原生混沌工程系列之指南篇

阿里巴巴云原生

阿里云 云原生 混沌工程

2022 年值得期待的元宇宙技术

devpoint

defi Web3.0 1月月更 NTF

爆肝一个月,我做了个免费的面试刷题网

程序员鱼皮

Java Python 编程 面试 计算机

第六周作业

lv

深信服智能边缘计算平台与 OpenYurt 落地方案探索与实践

阿里巴巴云原生

阿里云 云原生 边缘计算 openyurt

考试数据存储方案

皓月

#架构实战营 「架构实战营」

今年最值得关注的5个云趋势

云原生

云计算 数据分析 云原生 趋势 SaaS

关于常见状态码,你了解多少?

坚果

服务器 1月月更

AI 在 RTC 中的四大技术应用方向_AI&大模型_声网_InfoQ精选文章