随着线上泛娱乐的兴起,语聊房、在线 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. 【Python爬虫(一)】XPath

    解析方式:XPath XPath的基本使用 1 安装lxml库 conda install lxml 下载慢的话可以试一下热点或切换下载源 2 导入etree from lxml import etr ...

  2. fzy&czn生日赛t1 CZN

    fzy&czn生日赛t1 CZN 膜拜hybb首杀 目录 fzy&czn生日赛t1 CZN 题目背景 题目描述 分析 my code wnag's code 题目 题目背景 有一天,c ...

  3. 笔记:C++学习之旅---引用

    笔记:C++学习之旅---引用 什么是引用? 引用就是别名,引用并非对象,相反的,他只是为一个已经存在的对象所起的另外一个名字. /*引用就是别名*/ #include <iostream> ...

  4. react 兄弟组件传值(发布订阅,使用于任何组件传值,包括vue)

    react中兄弟组件传值常规操作一般是,A组件传给父组件,父组件再传给B组件 非常规操作 利用  pubsub-js 在Home组件内调用 PubSub.publish("第一个参数是事件名 ...

  5. 将音频格式从flac转到wav的两种方法

    最近在智能语音中用到了数据集cn-celeb.这个数据集的音频格式是flac,而在做数据增强(augmentation)以及模型训练时用的数据格式是wav,因此需要把音频格式从flac转到wav.我在 ...

  6. ET–异步协程使用–TimerComponent篇

    之前可能也有群友写过一些关于ET框架中TimerComponent的使用教程,我这里写下关于TimerComponent的常规使用跟一些不常规使用的方法以及一些情况下需要使用到的不同的函数. 先来看看 ...

  7. SpringBoot定义优雅全局统一Restful API 响应框架四

    如果没有看前面几篇文章请先看前面几篇 SpringBoot定义优雅全局统一Restful API 响应框架 SpringBoot定义优雅全局统一Restful API 响应框架二 SpringBoot ...

  8. 2023-01-09:以下go语言代码输出什么?A:+Inf; B:zero; C:something else; D:doesn‘t compile。 package main import (

    2023-01-09:以下go语言代码输出什么?A:+Inf: B:zero: C:something else: D:doesn't compile. package main import ( & ...

  9. 2021-04-21:手写代码:Dijkstra算法。

    2021-04-21:手写代码:Dijkstra算法. 福大大 答案2021-04-21: Dijkstra算法是一种基于贪心策略的算法.每次新扩展一个路程最短的点,更新与其相邻的点的路程.时间紧,未 ...

  10. 2021-06-30:给定长度为m的字符串aim,以及一个长度为n的字符串str ,问能否在str中找到一个长度为m的连续子串, 使得这个子串刚好由aim的m个字符组成,顺序无所谓, 返回任意满足条件

    2021-06-30:给定长度为m的字符串aim,以及一个长度为n的字符串str ,问能否在str中找到一个长度为m的连续子串, 使得这个子串刚好由aim的m个字符组成,顺序无所谓, 返回任意满足条件 ...