随着线上泛娱乐的兴起,语聊房、在线 KTV 以及直播等场景在人们的日常生活中占据越来越重要的地位,用户对于音质的要求也越来越高,因此超越传统语音降噪算法的 AI 降噪算法应运而生,所以目前各大 RTC 厂商普遍使用 AI 技术进行降噪处理,使用 AI 降噪技术消除除人声外的一切声音。

但对于一些特殊场景,如在线 KTV、线上直播等声卡场景,或者弹唱、伴奏、乐器等使用场景中,我们可以明显的感受到,一般降噪处理或 AI 降噪处理的过程中会将音乐/伴奏误识别为噪音,并进行降噪处理,给用户带来很不好的线上体验。因此,在此类使用场景中用户越来越不满足于背景降噪,而是提出更高要求,那就是深度降噪的同时保留音乐的音质。为了满足用户消噪与音乐音质高保真的需求,ZEGO 即构科技自研了一套自适应降噪方案,能在音乐与非音乐场景中智能切换,既保证了无音乐场景下的语音的质量,又保留了音乐的高保真音质。

音乐场景降噪方案简介

首先简单了解一下即构音乐场景降噪的方案流程:

从图中可以看到,经过前处理后的音频数据会被送入 AI 音乐检测模块,接着根据检测结果将场景分为音乐和非音乐场景。若检测出音乐场景则会使用传统降噪对音频数据进行处理,以减少对音乐的损伤,非音乐场景则继续使用 AI 降噪进行更深度的噪声消除。最后数据会经过自动增益模块完成最终的语音增强。

关于 AI 音乐检测算法

由上文描述中可以看到,完成音乐场景降噪功能最重要的一环就是 AI 音乐检测算法。为了满足音乐场景的实时切换与极高检测率的需求,我们自研了基于AI的音乐检测算法 ZegoAIMusicDetecion。 算法流程如下:

我们对数据进行帧长为 20ms,帧移为 10ms 的 STFT 处理后,使用 Bark 频带尺度将数据分为8 个子带,再分别求取一阶差分,二阶差分和谱平坦度最终得到 25 维特征。将计算得到的特征送入到我们设计的轻量型网络模型 CRNN,模型结构如下:

这里使用多层 Conv1d 卷积层能进一步的对特征进行提取。训练时,我们搜集了大量的开源音乐、语音与噪声数据进行训练,同时使用不同信噪比进行数据混合增强,确保模型有足够的泛化性。在训练优化器上,我们选择了 AdamW 以更好地对模型进行正则化处理,学习率为 0.001,批大小是 64,损失函数我们使用了交叉熵函数,公式如下:

算法效果与性能开销

有了 AI 音乐检测算法的帮助,我们最终可以实现针对音乐场景的降噪方案,方案最终的效果如下:

从上面的频谱图以及实际的听感来看,都可以直观的感受到即构音乐场景降噪方案对音乐音质的保护。在提供良好效果的同时,ZegoAIMusicDetecion 秉承着极轻量级模型的设计理念,整体计算量大约为 1.2M FLOPS,RTF 指标在各个平台和终端上均控制在 0.2% 以内。在此基础上,我们采用多帧平滑的后处理技术使音乐检测误检率低于 1%,音乐检测率达到 95% 以上。

技术展望

音乐场景在泛娱乐社交和互动中十分常见,需要注重用户和听众的使用感觉,做好音乐场景降噪处理。综上所述,ZEGO 即构科技为了同时兼顾降噪与音乐音质体验,自研了基于 AI 的音乐检测算法(点这里),设计出一套音乐场景降噪方案,充分体现即构对于用户良好体验的高度重视。

未来,我们会结合具体行业和场景,引入更多的可行性方案,提升产品的场景适应能力,给用户提供更好的音频体验!了解更多ZEGO即构IM即时通讯服务

ZEGO 即构音乐场景降噪技术解析的更多相关文章

  1. 用UE4来做Zego即构的房间列表

    Zego即构是一家做直播的服务商,Zego即构自己的房间列表,本文只是测试功能用,相应代码并没完全测试,请选择性参考. 我们在UE4中来实现一下,我感觉这个过程有点意思,UE4中C++与蓝图和UI的互 ...

  2. 网络框架OKHTTP使用场景全解析

    [本文版权归微信公众号"代码艺术"(ID:onblog)所有,若是转载请务必保留本段原创声明,违者必究.若是文章有不足之处,欢迎关注微信公众号私信与我进行交流!] 一.引言 说句实 ...

  3. ReadWriteLock场景应用解析

    本人免费整理了Java高级资料,涵盖了Java.Redis.MongoDB.MySQL.Zookeeper.Spring Cloud.Dubbo高并发分布式等教程,一共30G,需要自己领取.传送门:h ...

  4. 网易云音乐JS逆向解析歌曲链接

    Request URL:   https://music.163.com/weapi/song/enhance/player/url?csrf_token= FormData : params: BV ...

  5. ZEGO音视频服务的高可用架构设计与运营

    前言: ZEGO 即构科技作为一家实时音视频的提供商,系统稳定性直接影响用户的主观体验,如何保障服务高可用且用户体验最优是行业面临的挑战,本文结合实际业务场景进行思考,介绍 ZEGO 即构在高可用架构 ...

  6. 主流的第三方直播SDK对比(腾讯云、即构、阿里云、声网、网易云信、网宿)

    直播业务概述 大家所熟知的直播平台虎牙.斗鱼.快手.抖音.B站,直播功能看似普遍,但从零到一开发却不简单.直播中运用到的技术难点非常之多,音频视频处理/编解码,前后处理,直播分发,即时通讯等技术,学好 ...

  7. 网站app被劫持怎么办?HTTPDNS阿里云域名防劫持, DNSPod 移动解析服务 D+

    网站app被劫持怎么办?HTTPDNS阿里云域名防劫持, DNSPod 移动解析服务 D+ HTTPDNS_移动开发_域名解析_域名防劫持-阿里云https://www.aliyun.com/prod ...

  8. [PY3]——内置数据结构(8)——解构与封装

    ### 解构的理解与用法 ### 解构是python很有特色的一个功能,被很多语言借鉴(例如ES6) # 元素按照顺序赋值给变量 In [31]: lst=list(range(5)) In [32] ...

  9. 【系统学习ES6】第二节:解构赋值

    [系统学习ES6] 本专题旨在对ES6的常用技术点进行系统性梳理,帮助大家对其有更好的掌握,希望大家有所收获. ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构.解构是一种打 ...

  10. ES6(二) Destructuring-变量的解构赋值

    1.解构的含义 允许按照一定的模式,从数组和对象中取值,对变量进行赋值,称为解构. 解构赋值时,只要等号右边的值不是对象,就先将其转换成对象. 本质上,这种写法属于 “模式匹配”,只要两边模式相同,左 ...

随机推荐

  1. 基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合

    SqlSugar的开发框架本身主要是基于常规关系型数据库设计的框架,支持多种数据库类型的接入,如SqlServer.MySQL.Oracle.PostgreSQL.SQLite等数据库,非关系型数据库 ...

  2. Prism Sample 12-UsingCompositeCommands

    本例中,主页是一个按钮,绑定了一个复合命令,然后下面一个TabControl <Grid> <Grid.RowDefinitions> <RowDefinition He ...

  3. 【深入浅出 Yarn 架构与实现】6-3 NodeManager 分布式缓存

    不要跳过这部分知识,对了解 NodeManager 本地目录结构,和熟悉 Container 启动流程有帮助. 一.分布式缓存介绍 主要作用就是将用户应用程序执行时,所需的外部文件资源下载缓存到各个节 ...

  4. IPS 和 IDS

    IPS/IDS 什么是IPS和IDS IDS/IPS是检测和防止对网络服务器进行未授权的访问的系统.有许多产品同时有IDS和IPS的作用,作为加强企业信息安全所必须的系统 什么是IDS(Intrusi ...

  5. cat,more,cp,mv,rm,命令

    cat命令 查看文件内容 语法:cat[linux路径] more命令查看文件内容 more命令同样可以查看文件内容, 同cat不同的是: •cat是直接将内容全部显示出来 •more支持翻页,如果文 ...

  6. python中的一些解码和编码

    开头 最近爬取百度贴吧搜索页的时候遇到一个url的编码问题,颇为头疼,记录下来防止下次忘记 工具网站 解码编码的工具网站推荐 http://tool.chinaz.com/tools/urlencod ...

  7. 2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] ;B:[1 2 3] [3 4 5]; C:[1 2 3] [3 4 5 6 7 8 9];D:[1 2 3] [3

    2022-10-06:以下go语言代码输出什么?A:[1 2 3] [1 2 3] :B:[1 2 3] [3 4 5]: C:[1 2 3] [3 4 5 6 7 8 9]:D:[1 2 3] [3 ...

  8. 2021-06-25:只由小写字母(a~z)组成的一批字符串,都放在字符类型的数组String[] arr中,如果其中某两个字符串所含有的字符种类完全一样,就将两个字符串算作一类,比如:baacbba

    2021-06-25:只由小写字母(a~z)组成的一批字符串,都放在字符类型的数组String[] arr中,如果其中某两个字符串所含有的字符种类完全一样,就将两个字符串算作一类,比如:baacbba ...

  9. 2021-11-12:前 K 个高频元素。给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。提示:1 <= nums.length <=

    2021-11-12:前 K 个高频元素.给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素.你可以按 任意顺序 返回答案.提示:1 <= nums.length ...

  10. 2022年第十四届四川省大学生程序设计大赛 A

    A Adjacent Swapping 题意: 给定一个字符串,每次可以移动相邻字符,求最小移动次数可以把它变成s+s这样左右两边相同的字符串. 思路: 1:我们知道他一定是偶数长度,所以我们把字符串 ...