随着线上泛娱乐的兴起,语聊房、在线 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. Kubernetes入门实践(搭建Wordpress网站)

    容器只是对单个进程的隔离和封装,实际的应用场景要求许多的应用进程互相协同工作,因此出现了容器编排,Kubernetes将集群中的计算资源定义为节点(Node),其中又划分成控制面和数据面两类,控制面是 ...

  2. 设计模式之[构建者模式(Builder)]-C#

    说明:构建一个大对象时,可以分解成一个部分一个部分的构建,比如一台电脑由CUP.内存.主板.屏幕等,这些配件本身就是一个复杂的制造过程,一个一个构建后然后才组装成一台新的电脑. 步骤 1.定义要构建的 ...

  3. Portainer安装

    个人博客地址: https://note.raokun.top 拥抱ChatGPT,国内访问网站:https://www.playchat.top Portainer是一个可视化的容器镜像的图形管理工 ...

  4. 2022-08-09:以下go语言代码输出什么?A:否,会 panic;B:是,能正确运行;C:不清楚,看投票结果。 package main import ( “fmt“ “syn

    2022-08-09:以下go语言代码输出什么?A:否,会 panic:B:是,能正确运行:C:不清楚,看投票结果. package main import ( "fmt" &qu ...

  5. 2022-08-05:以下go语言代码输出什么?A:65, string;B:A, string;C:65, int;D:报错。

    2022-08-05:以下go语言代码输出什么?A:65, string:B:A, string:C:65, int:D:报错. package main import ( "fmt&quo ...

  6. 2021-06-03:布尔运算。给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false)、1 (true)、& (AND)、 | (OR) 和 ^ (XOR) 符号组成。

    2021-06-03:布尔运算.给定一个布尔表达式和一个期望的布尔结果 result,布尔表达式由 0 (false).1 (true).& (AND). | (OR) 和 ^ (XOR) 符 ...

  7. 2021-11-18:给定一个长度len,表示一共有几位。所有字符都是小写(a~z),可以生成长度为1,长度为2,长度为3...长度为len的所有字符串。如果把所有字符串根据字典序排序,每个字符串都有

    2021-11-18:给定一个长度len,表示一共有几位.所有字符都是小写(a~z),可以生成长度为1,长度为2,长度为3-长度为len的所有字符串.如果把所有字符串根据字典序排序,每个字符串都有所在 ...

  8. 2021-11-05:摆动排序 II。给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]... 的顺序。你可以假设所有输入数组都可以

    2021-11-05:摆动排序 II.给你一个整数数组 nums,将它重新排列成 nums[0] < nums[1] > nums[2] < nums[3]- 的顺序.你可以假设所有 ...

  9. 云端炼丹,算力白嫖,基于云端GPU(Colab)使用So-vits库制作AI特朗普演唱《国际歌》

    人工智能AI技术早已深入到人们生活的每一个角落,君不见AI孙燕姿的歌声此起彼伏,不绝于耳,但并不是每个人都拥有一块N卡,没有GPU的日子总是不好过的,但是没关系,山人有妙计,本次我们基于Google的 ...

  10. 警惕看不见的重试机制:为什么使用RPC必须考虑幂等性

    0 文章概述 在RPC场景中因为重试或者没有实现幂等机制而导致的重复数据问题,必须引起大家重视,有可能会造成例如一次购买创建多笔订单,一条通知信息被发送多次等问题,这是技术人员必须面对和解决的问题. ...