Fork me on GitHub

随笔 - 997  文章 - 5  评论 - 181  阅读 - 300万 

概述

  在音频前端处理算法中,beamforming算法是一个无法绕过的存在,随着AI技术的广泛发展,前端语音技术的需求也在呈现个性化的动态范围。作为一个深耕音频算法多年的老兵,发现站在巨人的肩膀上,才能做出对得起客户的产品。今天就分析一下一个开源的beamforming算法。

         

算法流程

  步骤一:预处理

预处理内容:

A 加窗:为傅里叶变换做准备,防止频谱泄露。
B 傅里叶变换:通过傅里叶变换,获取每路麦克风的频域值大小.
C 求权重因子:获取每路麦克风的权重因子.

  步骤二:beamforming流程

beamforming算法流程

A 加载加权过的频谱数据
B 计算不同麦克风之间的互相关系数
C 寻找音频方向源头: 计算每个麦克风的最大能量
D 复位最大值相关的延时系数.
E 计算人声可能范围的概率系数

  步骤三:跟踪人声声源

跟踪算法效果:

A 滤波器滤波:预测滤波器先进行滤波.
B 计算每个麦克风的先验概率.
C 根据当前值计算概率
D 计算概率系数f的值.
E 计算并更新每个粒度的因子
F 添加或删除跟踪源
G 确认是否停止跟踪某个源
H 计算每个源的位置
L 对每个源进行重采样

  步骤四:人声分离

降噪处理流程:

A 加载分离后的源
B 噪声统计
C 计算噪声泄露
D 计算拉姆达因子
E 噪声叠加
F 计算噪声总量
G 提取人声
H 增益因子应用

  步骤四:后置滤波器

人声提取流程:

A 加载跟踪源
B 计算矩阵信息
C 计算每个帧信息
D 导出帧信息.

 

算法总结

 总的来说,该算法还是比较新的,各项指标比较完善,并且代码水平写的比较高。笔者分析完成之后,真是受益很大。

 

参考文档


1 经典书籍:http://www.labbookpages.co.uk/audio/beamforming/delaySum.html

posted on   虚生  阅读(1750)  评论(1编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
历史上的今天:
2019-02-26 markdown实战问题备忘
2019-02-26 将Python 程序打包成 .exe格式入门
2018-02-26 指针数组和数组指针的区别
2018-02-26 指针函数与函数指针的区别
2018-02-26 C语言判断大小端的几种方法
点击右上角即可分享
微信分享提示