随着信息技术的发展,人们对实时通信的需求不断增加,并逐渐成为工作生活中不可或缺的一部分。每年海量的音视频通话分钟数对互联网基础设施提出了巨大的挑战。尽管目前全球的互联网用户绝大多数均处于良好的网络状况,但仍有不少地区处于极差的网络条件下,除此之外,即使在网络良好区域,也仍会存在弱网现象。那么如何在有限的带宽下提供高质量的音频体验就成为了一个非常重要的研究方向。

在过去的几十年间,语音或音频的编码技术都涉及大量特定领域的知识,例如语音生成模型。近些年,随着深度学习类算法的快速发展,逐渐涌现出了多种基于神经网络的音频处理算法。阿里云视频云技术团队在综合分析了实际业务场景存在的共性问题的基础上,开始探索借助数据驱动的方式提高音频的编码效率,并提出了智能音频编解码器 AliIAC (Ali Intelligent Audio Codec),可以在有限的带宽条件下提供更高质量的音频通话体验。

什么是音频编解码器?

即使没有听说过音频编解码器这个概念,在日常生活中,也一定有使用到这项技术,从收看电视节目到使用移动手机打电话,从刷短视频到观看直播,都会涉及到音频编解码技术。

音频编码的目标是将输入音频信号压缩成比特流,其所占存储空间远小于输入的原始音频信号,然后在解码端通过接收到的比特流恢复出原始音频信号,同时希望重建的信号在主观听感上与原始信号尽可能相近,编码过程如下公式所示:



其中,代表时域语音信号,长度为 会进一步被转换为比特流远小于,解码过程如下公式所示:

传统的音频编解码器可以分为两大类:波形编解码器和参数编解码器(waveform codecs and parametric codecs)

波形编解码器

波形编解码器的重点是在解码器端产生输入音频样本的重建。

在大多数情况下,波形编解码器较依赖于变换编码技术,可以将输入的时域波形映射到时频域。然后,通过量化技术对变换系数进行量化,最后经过熵编码模块将其转化成可用于传输的比特流。在解码器端,通过相应的反变换来重建时域波形。

一般情况下,波形编解码器对待编码的音频的类型(如:语音、音乐等)做很少或不做任何假设,所以可以处理的音频范围很广泛。在中高比特率时这种方法可以产生非常高质量的音频,但在低比特率下往往会引入一些由编码引起的 artifacts,导致听感变差。

参数编解码器

参数编解码器的核心思想是通过对待编码的音频(如:语音)进行特定假设,并通过参数模型的形式将先验知识融合进编码的过程中。

编码器首先会估计模型的参数,然后经过量化模型进行进一步压缩,解码器则使用量化后的参数来驱动合成模式进行时域波形的重建。与波形编解码器不同的是,参数编解码器的目标不是在逐个样本的基础上获得高相似度的波形重建,而是生成在感知上与原始音频相近的音频。

传统音频编解码器面临的挑战

得益于 WebRTC 生态的蓬勃发展,opus 音频编解码器在业界被广泛使用,它着重于处理广泛的交互式音频应用场景,包括 VOIP (Voice over Internet Protocol)、视频会议、游戏内聊天,甚至远程现场音乐表演。

它由两种不同的编解码器构成,一个是用于语音的 SILK,另一个是用于音乐的 CELT。尽管 opus 及其他传统音频编解码器(如:EVS、AMR-WB、speex、MELP 等)都拥有着优异的效果,但在有限带宽条件下、信噪比低条件下和混响混音严重条件下均表现出了不同程度的局限性,无法应对当前复杂多变的应用场景,带来流畅清晰的音频通话体验。

AliIAC 智能音频编解码器

考虑到传统音频编解码在高码率下的优异表现及业内的主流地位,阿里云视频云音频技术团队提出了两款智能音频编解码器,E2E 版本和 Ex 版本。

其中,E2E 版本,可直接替换 opus 等传统编解码器模块,支持在 6kbps ~ 18kbps 下工作,对 16khz 音频进行编解码;Ex 版本则可在沿用传统编解码器的基础上,通过后处理的方式对 6kbps~8kbps 解码后的 16khz 音频进行修复增强,提升可懂度和音质。

算法原理

1、E2E 版本:是基于端到端的 encoder-decoder 模型,同时考虑了实际应用场景中会遇到的语音频谱损伤、存在混响及残留噪声等问题,结合 GAN 网络的训练策略,进一步提升解码后的音频质量;为了方便部署与使用,采用残差量化模块,支持单一模型可变比特率,范围在 6kbps ~ 18kbps。

2、Ex 版本:是针对被传统编解码器如:Opus, 在 6kbps ~ 8kbps 条件下解码后的音频,进行频率域修复 / 增强的深度模型。对 0 ~4kHz 频域进行幅度谱的损失补偿,在 4~8kHz 频域进行频谱的预测补偿,修复 / 增强后的音频在主观听感上(可懂度和音质)有明显提升。

算法性能

算法效果

场景一:真实场景有损频谱+混响情况

原始音频音频

opus 6kbps 效果音频

opus+Ex 增强效果音频

E2E 6kbps 效果音频

E2E 18kbps 效果音频

不同方法的频谱图对比:

从主观听感和频谱图均可看出,opus 6k Ex、E2E 6k、E2E 18k 版本较opus 6k版本在效果上均有明显提升,其中 opus 6k Ex 和 E2E 6k 在前半段频谱明显有损伤的情况下解码后有些许杂音残留,E2E 18k 版本则基本接近原始音频。

场景二:真实场景带噪情况

原始音频音频

opus 6kbps 效果音频

opus+Ex 增强效果音频

E2E 6kbps 效果音频

E2E 18kbps 效果音频

不同方法的频谱图对比:

从主观听感和频谱图均可看出,opus 6k Ex、E2E 6k、E2E 18k 版本较 opus 6k 版本在效果上均有明显提升,且音色音调均与原始音频接近。

AliIAC智能音频编解码器将继续演进

AliIAC 作为阿里云视频云音频解决方案的一部分,旨在充分利用数据驱动的思想来提高音频的编码效率,使得可以在更低带宽代价的前提下获得更好的音频通话体验。

目前,AliIAC 还处于算力、码率与效果的平衡阶段,需要进一步去解决实时性与音频生成效果稳定性等问题,但在带宽受限条件下,AliIAC 相较传统音频编解码器已经表现出了优异的效果。其中,在大多数实际场景中,E2E 18kbps 的效果与 opus 24kbps 的效果持平,E2E 6kbps 的效果与 opus 12kbps 的效果持平,平均可以节省 25% ~ 50% 的带宽消耗;而 Ex 版本则可以在不额外消耗带宽资源的前提下,主观 MOS 分平均提升 0.2 ~0.4。在未来,阿里云视频云音频技术团队将继续探索基于深度学习 + 信号处理的音频技术,创造极致的音频体验。

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。公众号后台回复【技术】可加入阿里云视频云产品技术交流群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。

AliIAC 智能音频编解码器:在有限带宽条件下带来更高质量的音频通话体验的更多相关文章

  1. 移动通信最先进的音频编解码器EVS及用好要做的工作

    语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势.如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音 ...

  2. WebRTC音视频引擎研究(2)--VoiceEngine音频编解码器数据结构以及参数设置

    1.VoiceEngine Codec数据结构 WebRTC中,用一个结构体struct CodecInst表示特定的音频编解码器对象: struct CodecInst { int pltype;  ...

  3. 虚拟机在 OpenStack 里没有共享存储条件下的在线迁移

    虚拟机在 OpenStack 里没有共享存储条件下的在线迁移 本文尝试回答与 Live migration 相关的几个问题:Live migration 是什么?为什么要做 Live migratio ...

  4. 【智能合约】编写复杂业务场景下的智能合约——可升级的智能合约设计模式(附Demo)

    智能合约的现状 以太坊在区块链上实现了智能合约的概念,用于:同质化通证发行(ERC-20).众筹.投票.存证取证等等,共同点是:合约逻辑简单,只是业务流程中的关键节点,而非整个业务流程.而智能合约想解 ...

  5. jQuery打造智能提示插件二(可编辑下拉框)

    在上一篇 jQuery打造智能提示插件 上改进,增加下拉按钮,修复点击下拉区域外不隐藏BUG 效果 下拉按钮素材: js封装,注意红色部分为BUG修复,然后传入boxwidth不带px: /* /// ...

  6. 使用n2n在没有公网IP条件下访问树莓派

    实现:在树莓派2和客户机都没有公网IP条件下实现远程访问控制 不足:暂时没实现网页代理 因为校园网环境没有公网IP,无法直接访问树莓派.之前有想过SSH反向代理:使用VPN,ddns(花生壳.no-i ...

  7. .NET DLL 保护措施详解(五)常规条件下的破解

    为了证实在常规手段破解下能有效保护程序核心功能(演示版本对AES加解密算法及数据库的密钥(一段字符串)进行了保护),特对此DLL保护思路进行相应的测试,包含了反编译及反射测试,看是否能得到AES加解密 ...

  8. 《Python CookBook2》 第四章 Python技巧 - 若列表中某元素存在则返回之 && 在无须共享引用的条件下创建列表的列表

    若列表中某元素存在则返回之 任务: 你有一个列表L,还有一个索引号i,若i是有效索引时,返回L[i],若不是,则返回默认值v 解决方案: 列表支持双向索引,所以i可以为负数 >>> ...

  9. 如何在已安装Python条件下,安装Anaconda,,并将原有Python添加到Anaconda中

    在安装Anaconda之前,有的已经安装过一个Python版本了,但是又不想删除这个Python版本,该怎么办呢? 概括:轻松两步--在系统环境变量中找到对应之前安装Python的路径并删除:直接将你 ...

随机推荐

  1. SpringBoot打包成可执行的Jar文件

    需要时SpringBoot项目 通过创建可以在生产环境中运行的完全独立的可执行jar文件来结束示例.可执行jar(有时称为"胖jar")是包含您的已编译类以及代码需要运行的所有ja ...

  2. 面试问题之数据结构与算法:B树、B+树、B*树

    一.B树 B树是一种多叉平衡查找树,由于是多叉结构,对于元素数量非常多的情况下,树的深度不会像二叉结构那么大,可以保证查询效率. 二.B+树 B+是是B树的一种变形, 1.特点: (1).所有叶子结点 ...

  3. Spring 框架中的单例 bean 是线程安全的吗?

    不,Spring 框架中的单例 bean 不是线程安全的.

  4. Java 中的 TreeMap 是采用什么树实现的?

    Java 中的 TreeMap 是使用红黑树实现的.

  5. jvm性能调优工具

    1.jstat 命令 jstat: 查看类装载,内存,垃圾收集,gc相关信息 命令参数 # jstat -option -t #option:参数选项,-t:显示系统的时间 # jstat -opti ...

  6. 【代码开源】GreaterWMS 抖音SDK调用教程

    应用介绍 GreaterWMS 抖音SDK调用教程 SDK具体功能: 1,一仓多店,多仓多店 2,库存同步,商品同步 3,快递发货,物流轨迹 4,订单拦截 5,字节云仓 6,精选联盟 7,供应分销 8 ...

  7. 顺利通过EMC实验(11)

  8. Vue.js快速介绍-超级马里奥像素艺术

    原文出处:Quick Introduction to Vue.js - Super Mario Pixel Art ::代码我已经归纳在github上:[vue2-pixel-art]::::__查看 ...

  9. 【uniapp 开发】Date.parse Firefox返回Nan的解决办法

  10. MySQL数据库设置编码格式和时区

    MySQL数据库设置编码格式和时区 MySQL5版本: url=jdbc:mysql://localhost:3306/test?characterEncoding=utf-8 MySQL6版本及以上 ...