文 / Google Research 软件工程师 Pablo Barrera 和 DeepMind 研究工程师 Florian Stimberg

在线通话帮助人们简化工作,与所爱的人保持联系,这种方式现已成为数百万人日常生活的一部分。为在互联网上完成通话传输,通话中的数据通常被拆分为许多叫做 数据包 (Packets) 的简短区块。这些数据包通过网络从发送方传输到接收方,并在接收方重新组合,以生成连续的视频和音频流。

然而,当数据包到达另一端时,经常会出现顺序错误或时间错误的问题,这种问题通常被称为 抖动 (Jitter)。有时,个别数据包甚至会完全丢失。诸如此类的问题在音频和视频传输中普遍存在,并且会导致通话质量变差,因为接收方必须设法填补出现的间隔。

举例来说,99% 的 Google Duo 通话均需要处理丢包、抖动过多或网络延迟。在这些通话中,有 20% 是因为网络问题而丢失了通话时长中超过 3% 的音频数据,另 10% 的通话丢失超过 8% 时长的音频数据。

  • Google Duo
    https://duo.google.com/about/

网络问题导致丢包的简化示意图:接收方需要抵消丢包的影响,才可实现可靠的实时通信

为确保可靠的实时通信,当丢包数据重要时,接收方需对其进行处理。具体而言,如果没有持续提供新的音频,接收方要么收听到故障声要么是短暂的无声,但是一遍又一遍地重复同样的音频也并非理想的解决方案,因为这会产生假象,进而降低通话的整体质量。处理丢包的过程被称为丢包补偿 (Packet Loss Concealment, PLC)。接收方的 PLC 模块负责创建音频(或视频),以填补由丢包、过多抖动或临时网络故障造成的间隔,这三种情况都会导致数据的缺失。

为解决这些音频问题,我们推出了如今正在 Duo 中使用的全新 PLC 系统 WaveNetEQ。WaveNetEQ 是一种基于 DeepMind WaveRNN 技术的生成模型,该模型使用大量的语音数据语料库进行训练,以将短语音片段逼真地延续下去,使其能够完整合成丢失语音的原始波形。

  • DeepMind WaveRNN
    https://arxiv.org/abs/1802.08435

Duo 的通话受到端到端加密保护,因此所有的处理均需在设备上完成。WaveNetEQ 模型速度很快,足以在手机上运行,同时还能提供最为前沿的音频质量。其 PLC 系统生成的音频对比其他 PLC 系统的生成音频听上去更加自然。

适用于 Duo 的全新 PLC 系统

像许多其他基于网络的通信系统一样,Duo 基于 WebRTC 开放源代码项目。为隐藏丢包带来的影响,WebRTC 的 NetEQ 组件采用可以分析语音,并对小于 20ms 的丢包非常有效,生成平滑连续的信号处理方法。但对 60 毫秒或更长的间隔,生成的音频效果则不够理想。在后一种情况中,语音将变得机械且重复。不幸的是,这是尝试过语音通话的人都非常熟悉的独特声音。

  • WebRTC 开放源代码项目
    https://webrtc.org/

为更好地管理丢包,我们用改良版的 WaveRNN 取代了 NetEQ PLC组件。WaveRNN 是一种用于语音合成的循环神经网络模型,由自回归网络 (Autoregressive Network) 和调节网络 (Conditioning Network) 两部分组成。自回归网络负责信号的连续性,并通过使每个生成的样本依赖网络的先前输出,来提供语音的短期和中期结构。调节网络会影响自回归网络,以使生成的音频与速度更慢的输入特征相一致。

不过,WaveRNN 与其前身 WaveNet 一样,在创建时都考虑了文字转语音 (TTS) 应用。作为 TTS 模型,WaveRNN 提供了 应该 说什么以及 怎么 说的信息。调节网络直接接收这个信息,将其以组成单词的音素以及额外的韵律特征(即像语调或音高这样的非文本信息)的形式进行输入。在某种程度上,调节网络可以“预测未来”,然后将自回归网络引导至正确的波形,使其与“未来”匹配。但 PLC 系统和实时通信并未提供这样的语境。

  • WaveNet
    https://deepmind.com/blog/article/wavenet-launches-google-assistant

PLC 系统如要正常运行,必须既能从当前的语音中提取上下文信息(即“过去”),又能生成合理的声音将语音进行下去。我们的解决方案 WaveNetEQ 可以同时做到这两点:在丢包事件期间,使用自回归网络提供音频的连续部分,同时使用调节网络来建模像语音特性这样的长期特征。调节网络使用过去音频信号的声谱图作为输入,提取有关韵律和文本内容的有限信息。自回归网络收到该压缩信息后,将其与不久前的音频相结合,以预测波形域的下一个样本。

这与 WaveNetEQ 模型 训练过程中 遵循的流程略有不同,在该流程中,自回归网络接收训练数据中实际存在的样本,然后将其作为下一步的输入,而不是使用生成的上一个样本。这一过程称为教师强制 (Teacher Forcing),可确保模型即使处于训练的早期阶段(其预测质量仍较差),仍可学习到有价值的信息。一旦对模型进行了充分的训练并将其用于音频或视频通话后,教师强制便只会用于为第一个样本“预热”模型。在此之后,模型会将其自身的输出作为下一步的输入传递回去。

  • 教师强制
    https://towardsdatascience.com/what-is-teacher-forcing-3da6217fed1c

WaveNetEQ 架构:在推理过程中,我们通过教师强制使用了最近的音频来“预热”自回归网络。之后,模型将使用其自身的输出作为下一步的输入。来自较长音频部分的 MEL 声谱图将用作调节网络的输入

该模型将应用于 Duo 抖动缓冲区中的音频数据。丢包事件发生后,一旦真实音频还在继续,我们将合成的音频流和真实的音频流无缝合并。为完美地将两个信号对齐,该模型会生成比所需稍多的输出,然后从其中一个到另一个进行交叉淡化。这样可使过渡期变得平滑,并避免明显的噪音。

在 60 毫秒的移动范围内模拟音频上的 PLC 事件:蓝色线条表示真实音频信号,包括 PLC 事件的过去和未来部分。橙色线条表示合成音频,WaveNetEQ 将在每一个时间步长预测音频是否要在垂直灰色线条处进行裁切

音频片段:WebRTC 默认 的 PLC 系统 NetEQ 与我们的模型 WaveNetEQ 之间的比较。音频片段来自 LibriTTS,在 60 或 120 毫秒的区块中, 10% 的音频被丢弃,然后由 PLC 系统填充。

  • LibriTTS
    https://research.google/tools/datasets/libri-tts/

确保稳健性

PLC 期间的一个重要因素是网络适应各种输入信号的能力,这些信号包括不同的说话者或背景噪声的变化。为确保模型在众多用户中的稳健性,我们在包含 48 种不同语言的 100 多位说话者的语音数据集上对 WaveNetEQ 进行了训练,从而使模型可以学习一般的人类语音特性,而非特定语言属性。为确保 WaveNetEQ 能够处理嘈杂的环境(例如在火车站或自助餐厅接听电话),我们会通过将数据与各种背景噪声混合来增强数据。

尽管我们的模型学习了如何合理地将语音延续下去,但只能在短时间内应用:模型可以完成一个音节,但不能预测单词 本身。相反,对于更长的丢包,我们的模型会慢慢消声。120 毫秒之后,模型不会再生成声音。为了进一步确保该模型不会生成错误的音节,我们使用了 Google Cloud 语音转文本 API 对 WaveNetEQ 和 NetEQ 的样本进行评估,结果发现两者的单词错误率(即转录口述文本时出现的错误数量)没有显着差异。

  • Google Cloud 语音转文本 API
    https://cloud.google.com/speech-to-text

我们一直在 Duo 上进行着 WaveNetEQ 的相关试验,现已证明该功能对通话质量和用户体验有着积极的影响。WaveNetEQ 已经可以在 Pixel 4 手机的所有 Duo 通话中使用,并将陆续推广到其他型号的设备。

  • Pixel 4 手机的所有 Duo 通话中使用
    https://www.blog.google/products/pixel/more-helpful-pixel-features/

致谢

核心团队成员包括来自 Google 的 Alessio Bazzica、Niklas Blum、Lennart Kolmodin、Henrik Lundin、Alex Narest、Olga Sharonova 和来自 DeepMind 的 Tom Walters。我们还要感谢 Martin Bruse (Google)、Norman Casagrande、Ray Smith、Chenjie Gu 和 Erich Elsen (DeepMind) 作出的贡献。

更多 AI 相关阅读:

  • 推出 2020 年图像匹配基准和挑战赛

  • 预测未来八小时降水情况的神经网络天气模型

  • 提升机器学习训练数据多样性,增加医学应用可训练数据量

  • 基于 MediaPipe 的移动端实时 3D 对象检测

  • 发布 Open Images V6:新增局部叙事标注

用机器学习改善网络通话质量相关推荐

  1. 可持续5G环境下基于机器学习的网络分片框架

    Machine Learning-Based Network Sub-Slicing Framework in a Sustainable 5G Environment 5G环境下的物联网框架 5G切 ...

  2. 机器学习与网络信贷那些事

    机器学习与网络信贷那些事 机器学习与网络信贷那些事 项目简介 数据分析 模型性能对比 LDA算法改进 项目结论 机器学习与网络信贷那些事 注:1. 本文源自笔者 2020年本科毕业论文,已收录在兰州大 ...

  3. 改善服务器响应用时,服务器缓存论文,关于改善网络服务器响应速度建议相关参考文献资料-免费论文范文...

    导读:本论文是一篇免费优秀的关于服务器缓存论文范文资料,可用于相关论文写作参考. 摘 要:目前 ,应网络为平台的信息应用是普遍存在的,不论是园区网内的信息应用,还是 internet 之上的信息应用, ...

  4. 如何有效利用SD-WAN改善网络性能?

    跨行业的任何规模的企业都可以受益于使用具有多个电路的软件定义WAN(SD-WAN).SD-WAN提供更高的可见性,灵活性,可伸缩性,安全性,应用程序服务质量(QOS)等. 当您将SD-WAN与多个电路 ...

  5. 机器学习--弹性网络(Elastic-Net Regression)

    机器学习–Elastic-Net Regression 基本概念 弹性网络 是一种使用 L1, L2 范数作为先验正则项训练的线性回归模型. 这种组合允许拟合到一个只有少量参数是非零稀疏的模型,就像 ...

  6. 利用机器学习实施网络犯罪 6种有效途径触目惊心

    机器学习 被定义为"(计算机)没有明确编程的学习能力",这对于 信息安全 行业来说是一个巨大进步.这项技术,可以帮助安全分析师从恶意软件和日志分析,到尽可能的早期识别和修补漏洞.同 ...

  7. 基于机器学习的网络异常流量识别系统——数据篇

    数据集 获取数据集的两个方案(网络异常流量) 一.自己配置虚拟机爬取数据(有条件的可以直接搞服务器上的数据) 缺点:很耗时而且爬的还没有什么普适性,电脑不行直接挂,我就是( ̄▽ ̄)" 自己用 ...

  8. hung-yi lee_p15_机器学习深层网络比浅层网络好在哪

    文章目录 疑问-为什么要那么多层 简单解释 以语音识别为例 语音识别基础 GMM的方法的缺陷 深度学习的高明之处 回到问题-为什么一层能解决还要多层 从电子工程(EE)角度解释 一个电路的例子 日常角 ...

  9. SD-WAN,改善网络现状

    客户背景 客户公司是一家享有盛誉的高质量PCB产品开发商和供货商,总部在香港,在国内外均设厂及分公司. 客户需求 组网 香港总部.国内以及海外以MPLS VPN形式组网: 用户 香港总部.国内(较多) ...

最新文章

  1. 【Whalepaper】CV论文研读 - You Only Look One-level Feature (YOLOF), CVPR2021
  2. HTTP Host 头攻击
  3. 使用 Eclipse PhoneGap 构建 Android
  4. win8改win7笔记
  5. linux 解决依赖性错误,linux – 由于单模块依赖性,XSP配置失败
  6. WPF/WPFE笔记(一):准备工作
  7. DotNet Core 介绍
  8. Arduino笔记-调节呼吸灯频率实验
  9. 使用CImage类将RGB图像转化为灰度图像
  10. “返回顶部”实现一例
  11. ZooKeeper入门(二)
  12. php物料编码生成器,物料编码生成器下载|
  13. 非线性激活函数的作用
  14. 卡尔曼滤波原理及公式推导
  15. 物联网智能数据处理技术
  16. html设置线条颜色渐变,CSS3 - 设置渐变颜色背景,线性/放射性/循环(附在线渐变生成工具)...
  17. TotalCommander常用操作
  18. 你的朋友国庆假期都去了哪里玩?微信大数据告诉你!最远的朋友圈签到竟然来自……
  19. excel综合应用(一):信息查询
  20. 滑膜炎的表现、诊断与治疗

热门文章

  1. 如何获得cnvd原创漏洞证书之信息泄露篇(结尾福利)
  2. 2022年制冷与空调设备安装修理考试练习题及答案
  3. 关于贪吃蛇的学习(1)
  4. NDS游戏与FLASH游戏
  5. 使用hexo搭建一个博客超详细步骤
  6. 学环境工程我后悔了_一个学环境工程的女研究生的自述
  7. mysql主键设置名称_MySQL的主键命名挺任性,就这么定了
  8. html一行字不同颜色6,html语言的字体设置
  9. Ant Design of Vue 中 日期时间控件 禁止选中的(日期——)设置
  10. ArrayList集合点名器