欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~

本文由腾讯游戏云发表于云+社区专栏

经常逛游戏论坛的朋友会深有感触,很多玩家经常会在论坛里吐槽在网吧开黑的体验很差,噪音太多。在游戏语音开黑的过程中,如果其中一个队友身处网吧,则其他人的耳机总是难免会被各种嘈杂的噪音所充斥,这是十分糟糕的体验,甚至会影响整个团队的发挥,那么在这样的场景下,降噪就成为了提升游戏体验的基本操作。

网吧场景下的降噪难度往往大于普通噪音环境下的降噪难度,其源于网吧的噪音环境和普通的噪声环境差别很大,网吧的噪音来源比较广泛,包括有众多人的聊天、呼喊声,大幅度的鼠标键盘敲击声,桌椅挪动人员走动等等,有些网吧还像理发店那样广播背景音乐及一些语音广播。并且网吧座位离得较近,几乎每个人左右都有很近的邻居,这些近距离的声音互相干扰更加恼人。

消除这些复杂的噪音却不是一件简单的事情,网吧环境下的噪声几乎都是非平稳的,所以传统噪声消除方法难以很好的应用在网吧场景下。腾讯云游戏多媒体引擎GME(Gaming Multimedia Engine,以下简称 GME)针对网吧场景提出了一套降噪技术解决方案,能在复杂的环境下将噪音对语音的影响降到最低。

如何在复杂的网吧环境下实现降噪?

在网吧嘈杂环境下的降噪诉求是:队友不讲话时,听不到任何其他声音,当队友讲话的时候,希望听到的是队友清晰的声音,当队友话毕其他声音随即静默。

以上要解决的问题可以抽象成嘈杂环境里单一主讲人的通话处理。针对可容忍的体验诉求,需要一个排除主讲人以外声音的语音活性检测算法(VAD)。而这个VAD算法和常规意义的语音检测有所不同,因为它不但要排除掉非语音,还要排除掉主讲人以外的语音,否则队友附近的人的话音甚至环境较远处的嘈杂语音仍会被发送给耳机这头的你。

针对这样的情况,GME朝着满足诉求的方向,给出了这个“VAD”算法,流程如下:

在判断声音性质时,一个要进行的过程是,计算语音的相关性,相关性测度定义如下:

E(τ)=N−1∑n=0[s(n)−βs(n−τ)]2

其中 β 为增益因子,N 为分析帧长。令∂E(τ)∂β=0 ,求得:

β=N−1∑n=0s(n)−βs(n−τ)N−1∑n=0s2(n−τ)

从而,有

E(τ)=N−1∑n=0s2(n)−[N−1∑n=0s(n)s(n−τ)]2N−1∑n=0s2(n−τ)

相对误差能量为

R[E(τ)]=E(τ)N−1∑n=0s2(n)=1−ρ2(τ)

其中

ρ(τ)=N−1∑n=0s(n)s(n−τ)√N−1∑n=0s2(n)N−1∑n=0s2(n−τ)

为了得到这个结果,还需要做一些预处理:

1,去均值:分析窗口内非零均值或非常低的低频噪声出现时,ρ(τ) 会在所有τ 上都很大,这对依赖ρ(τ) 进行清浊分类时的安静段语音尤其麻烦。解决办法是去掉均值:

s′(n)=s(n)−1NN−1∑n=0s(n)

2,低通滤波:为减小高频共振峰和高频噪声的影响,要进行一个800赫兹的低通滤波,去掉大部分共振峰影响,并可以再基音频率最高500赫兹时仍能保留其一次,二次谐波,其技术指标要求为:

1T=8000Hz ,ωc2π=800Hz,ωr2π=1200Hz,1−δ1=−0.25dB,δ2=−50dB

据此,由双线性变换法设计一个五阶的滤波器,幅频响应如图:

3,数值滤波:

上述低通滤波可以较为有效的去掉第三个第四个共振峰的影响,但前两个共振峰的影响仍然存在,浊音语音周期性会模糊,为了去掉这一影响,进行数值滤波。数值滤波能正确显现信号的趋势,如上升沿:

y(n)=12K+1K∑i=−Kx(n+i)

但这个是个非因果的数字系统,为了因果性改写如下:

y(n)=1NN∑i=0x(n−i)

注意,这个过程引入了算法延时。在一些参数编码原理的语音编码器中,会用LPC过程的残差来估计基音周期,就是因为残差经过“白化”排出了共振峰影响。因为lpc分析主要产出并非为计算基音,而其又涉及加重叠窗又需要求解尤利沃克方程或burg迭代所以本文并未使用。

我们最终关心的是,周期性水平的度量,我们定义如下

Zperiod=ρmax1+ρmax2+ρmax33+ρmax

当这个周期性水平满足条件后,还要看周期是否满足语音信号基音周期范围:语音信号的基音频率范围是60Hz到500Hz;对于8k采样,用采样周期表示的区间为[80,147],[40,79],[20,39],同时满足周期性和周期范围,我们认为该声音性质具备语音特性。

其他环节,诸如底噪包络跟踪,主讲声强跟踪这里不再详述。

在此方案下,我们将大部分嘈杂的声音从时间段上全部排除掉了,如图:

上侧:原始声音,下方:排除掉嘈杂后的声音

通过效果图可以明显看到,噪声被大大的抑制了,但没有影响玩家正常的语音对话,网吧嘈杂环境的诉求得到了满足。

通过自研技术,GME已经能在复杂的网吧环境下也准确的检测到特定的人声并有效的去掉环境音或其他玩家带来的噪声,给玩家带来了极致的开黑体验,让好友之间的语音互动不再有噪点,目前游戏多媒体引擎GME 已正式登陆腾讯云,为广大游戏厂商开发者提供服务,详细信息可点击这里浏览。

问答
策略游戏服务器概念是什么?
相关阅读
3行代码,为QQ轻游戏加上语音互动能力
实时语音趣味变声,大叔变声“妙音娘子”Get一下
内行看门道:看似“佛系”的《QQ炫舞手游》,背后的音频技术一点都不简单
云学院 · 课程推荐 | 腾讯专项技术测试组长,结合8年经验为你细说冷热分离法则

此文已由作者授权腾讯云+社区发布,更多原文请点击

搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!

海量技术实践经验,尽在云加社区!

转载于:https://www.cnblogs.com/qcloud1001/p/9556056.html

再也不用担心网吧开黑队友听不清了!降噪解决方案了解一下?相关推荐

  1. 每一个工程师都要学的安全测试,老板再也不用担心服务器被黑

    2019独角兽企业重金招聘Python工程师标准>>> 本文由云+社区发表 本篇包含了XSS漏洞攻击及防御详细介绍,包括漏洞基础.XSS基础.编码基础.XSS Payload.XSS ...

  2. Java实现印刷体转手写体—妈妈再也不用担心我被罚抄作业了

    Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 文章目录 Java实现印刷体转手写体-妈妈再也不用担心我被罚抄作业了 缘起 开始开发 测试效果 开源地址和总结 郑重声明 因本文中涉及到爬虫 ...

  3. gm怎么刷东西 rust_刷了这种黑板漆再也不用担心吃粉笔灰了

    刷了这种黑板漆再也不用担心吃粉笔灰了 黑板漆正在越来越多的被人们使用,黑板墙很酷很实用,可以用在家里的各个地方,不仅仅是墙面.很多人想要,但又担心实际用起来会有各种问题,被提及最多的就是粉笔灰的问题啦 ...

  4. git for windows_手把手教会舍友玩 Git (包教包会,再也不用担心他的学习)

    作 者: BWH_Steven 原文链接:https://www.cnblogs.com/ideal-20/p/13644420.html 舍友长大想当程序员,我和他爷爷奶奶都可高兴了,写他最喜欢的喜 ...

  5. rm: 无法删除swap: 不允许的操作_safe-rm老板再也不用担心我删库跑路啦[视频]

    saferm 老板再不怕我删库跑路https://www.zhihu.com/video/1177717527541731328 在 linux 上,使用 rm 是一件非常危险的事情(最近又有朋友遇到 ...

  6. python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  7. android 机器人gif,看完这15张GIF图 就再也不用担心机器人叛乱了

    流量预警 非WIFI请果断退出 今天大福我闲逛Reddit论坛时,看到一个帖子:有哪些GIF图是你百看不厌的? 回答中投票最高的一个网友贴了一张GIF图:机器人开阀门 图片较大 请耐心等待 然后他说道 ...

  8. 想敲代码又怕女朋友找?那就让她去玩桌面图标贪吃蛇,再也不用担心打扰自己敲代码了

    想敲代码又怕女朋友找?那就让她去玩桌面图标贪吃蛇,再也不用担心打扰自己敲代码了 最近在逛博客的时候看见了一个有趣的项目,使用桌面图标进行贪吃蛇游戏.采用的代码是vb,但我实在不会vb,就找了C++中关 ...

  9. 录音文件转文字,有了这个工具,再也不用担心记不上笔记了

    对于文字工作者及办公人员来说,录音及语音文件的整理既必要又繁琐.录音一小时整理需要大半天,消耗人力时间,而且效率低.大部分采用手机录音或录音笔录音的,等待整理录音的过程是很难受的,一段录音可能要反复听 ...

最新文章

  1. Oracle SQL Tuning Advisor 测试
  2. 一行代码实现微光效果
  3. 网络营销——网络营销专员如何加强企业网站推广能力
  4. TensorRT推理报错:pycuda._driver.LogicError: cuMemcpyHtoDAsync failed: invalid argument
  5. Linux系统颜色默认表示的文件类型
  6. linux目录和文件管理命令
  7. 逻辑回归(logistic regression)的本质——极大似然估计
  8. win10下 mysql5.7.19 winx64解压缩版安装配置教程
  9. SQL service
  10. php 5.3.29 怎么开启debug_PHP代码审计之环境安装(一)
  11. python中定义字典数据类型使用什么符号_python数据类型之字典类型-dict
  12. 计算二叉树的叶子结点个数_C++数据结构二叉树统计总结点个数,叶子结点个数,单分支结点个数,双分支结点个数。...
  13. IDEA热更新插件-JRebel安装
  14. 【新手基础教程】maix asr(自动语音识别)
  15. 符号函数的作用及Matlab中的基本用法
  16. 优启通制作系统u盘_IT天空优启通(U盘PE制作助手)制作U盘PE启动图文教程
  17. echarts折线图鼠标悬浮竖线_设置Echarts鼠标悬浮样式
  18. Linux安装Flash脚本,linux 下安装adobe flash的关键。
  19. LeetCode 810 Chalkboard XOR Game【思维】
  20. kermit使用总结

热门文章

  1. java移动元素_如何通过箭头键连续/平滑地移动元素?
  2. echarts横轴展示不全使用滚动条(dataZoom)的方法
  3. FastDFS多tracker配置
  4. jmeter下TPS插件的安装
  5. div加border样式
  6. ORA-12514:tns监听程序当前无法识别连接描述符中请求服务;ORA-03113:通信通道的文件结尾
  7. Android开发笔记(七十九)资源与权限校验
  8. Spring零配置之@Configuration注解详解。
  9. python廖雪峰教程 学习笔记
  10. 你都怎样看知乎日报?