搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
小丑西瓜9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
软件测试工程师--面试题_uftuif
2
用Python 开发植物大战僵尸游戏_python中怎么做植物大战僵尸
3
在MAC系统中使用mysql,出现mysql: command not found的情况_command not found: mysql
4
【点云论文速读】6D位姿估计
5
共识问题:区块链如何确认记账权?_区块链候选记账权
6
python sys os time random模块_pycharm安装sys os time 模块
7
Git重修系列 ------ Git的使用和常用命令总结
8
uniapp tabBar角标问题_uniapp再tabbar上添加动态的数字角标
9
15个超实用Python文本处理案例分享,快点码住!_python关于文件经典例子
10
auditd 用户审计详解
当前位置:
article
> 正文
声学回声消除原理
作者:小丑西瓜9 | 2024-05-02 13:58:17
赞
踩
回声消除原理
【01】回声信号的产生
回声消除不仅仅是算法调试,更多的是工程设计的调试。
上图中第一行为近端信号 s(n),已经混合了近端人声和扬声器播放出来的远端信号,黄色框中已经标出对齐之后的远端信号,其语音表达的内容一致,但是频谱和幅度(明显经过扬声器放大之后声音能量很高)均不一致,意思就是:参考的远端信号与扬声器播放出来的远端信号已经是“貌合神离”了,与降噪的方法相结合也是不错的思路,但是直接套用降噪的方法显然会造成回声残留与双讲部分严重的抑制。接下来,我们来看看 WebRTC 科学家是怎么做的吧。
【02】算法流程
流程为三个步骤:
时延的产生和作用:
参考信号因为反射叠加和衰减会产生时延,估计参考信号和回收信号之间的时间延迟量。将参考信号和mic信号进行时间上的对其。算法核显是衡量参考信号和近端mic信号之间的相似度,寻找相似度最高时对应的时间差。
常用算法为广义互相关、二源谱统计法(webrtc)
。
线性自适应滤波:
消除线性回声,以x(n)为远端参考信号,经过一个传输信道w(n),得到一个回声信号的估计值y(n),同时近端麦克风采集的信号的d(n)。因为参考信号经过信道加权得到所以称为线性自适应滤波。自适应是因为需要不断的调整滤波器系数也就是w(n)。为了评估回收信号的估计值我们定义损失函数为估计值和真实值的差值,也就是 e(n)=d(n)-y(n),也就是 e(n)=d(n)-w(n)x(n)。
其中n是表示任意shape的矩阵,对于 d(n) 和 x(n)来说就是一段语音信号(已知),对于w(n)来说就是同shape的矩阵(未知),以n为5*5为例,w就表示为[w1、w2、w3....w25]的权向量。损失函数为均方误差(二次函数)也就是开口向上的关于w的凸函数:
迭代的方式就是给一组初始w=0,从零点开始左右滑动,滑动方向是梯度下降的方向,也就是斜率大于0说明函数递增那么w左滑才能使e(n)更小,斜率小于0说明函数递减那么w右滑才能使得e(n)更小。所以w的滑动公式为:
w(i+1) = w
(i) - 斜率*学习率
其中斜率就是e(n)对w求导,因为x(n)和d(n)已知,所以这一部分是个常数。给定一个学习率,求出斜率不断使得w左右滑动直到e(n)达到最小而收敛(指定e(n)为常数极小值以判断收敛)。注意随机梯度下降是每次求斜率随机取一个样本进行计算,经典梯度下降是取所有样本进行计算。
非线性处理:
消除非线性残留回声。包含两部分:
残留回声信号:根据误差信号和参考信号的相关性、相干性、短时能量等参数来判断当前单双讲状态以及残留回声量,得到衰减系数。相两个相关性大小比值可以判断是单讲还是双讲。给一个衰减系数阈值当衰减系数大于阈值说明衰减得不够小任然可以听到,则
衰减系数乘误差信号就可以得到残留回声
,后续减掉这个残留回声即可
非线性处理:进一步抑制残留的可感知小回声。
【03】算法细节
单讲和双讲的,为什么单讲时滤波加自适应、双讲是只滤波?
首先滤波就是在现有的信道估计w(n)情况下对参考信号x(n)进行估计,而自适应则是通过参考信号和mic信号进行参数w(n)的更新。
单讲:只有远端单讲,这个阶段的参考信号和mic信号没有近端语音,适合快速收敛进行回声信道估计。这个时候执行滤波加自适应。
双将:使用已经收敛的自适应滤波对远端参考信号进行估计,然后mic信号直接减去回收信号的估计值即可。这个时候只执行滤波不执行自适应,防止近端讲话对模型w(n)产生影响。
为什么需要自适应:
因为近端设备位置移动、环境变换造成回声传输信道的变更,回声信道变化所以信道估计w(n)也需要一直变换,需要在每次传输信道变化后都快速收敛。
如何检测单讲和双讲:
回声估计信号和对端参考信号和近端mic输入一次判断相关性。
延迟估计:
早先webrtc使用声纹对比在频域上通过时间的滑动来打分,找出打分最高部分则任务已经对齐但是检测效果和速度都不理想:
后来使用nlms来实现延迟估计:
算法能够估计512毫秒内的延迟,利用窗口和移动得到5个128毫秒的采样片段,每个128毫秒之间有32毫秒的重叠。每一块先16k下采样到4k,然后5块片段分别和
matlab的lms算法:
参考文档:
【优化】超详细的LMS算法的matlab实现_LZ君的博客-CSDN博客_lms算法matlab
LMS自适应滤波算法的学习与FPGA实现过程_1_仿真学习_哔哩哔哩_bilibili
自适应滤波器(一)LMS自适应滤波器 - 知乎
其中rrin为参考信号,ssin为期望信号,需要在单讲时获取纯净无近端mic输入的信号,这样才能得到回声传输信道w(n)一个比较好的估计。
注意为什么卷积计算 RRin(1,i-N+1:i)表示取第 i-N ~ i 一共 N 个列,这个N就是滤波器阶数,至少N个点参与计算也就是说允许的时延是有限的。如果时延越长则滤波器的长度就必须越长。
matlab的nmls算法:
对于lms算法,如果 x(n)太大会造成梯度放大,而x(n)太小会造成收敛速度太慢。
WebRTC的算法:
时延估计:
算法会缓存参考信号512毫秒内的音频数据,利用窗口和移动得到5个128毫秒的采样片段,每个128毫秒之间有32毫秒的重叠。每一块先16k下采样到4k,然后5块片段分别和1块mic信号进行对比(利用二元谱),如果相似则这两片128的采样片段就认为是对齐了,则计算出时延。这样就把时延缩短到了128毫秒内。此时nmls就不需要设置过大的阶数了。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/小丑西瓜9/article/detail/524433
推荐阅读
article
Helm
安装Mysql_
helm
安装
mysql
5.7
...
【代码】3、
Helm
安装Mysql。_
helm
安装
mysql
5.7
helm
安装
mysql
5.7
...
赞
踩
article
使用
Helm
管理
创建
MYSQL
并
使用
外置存储_
helm
mysql
...
使用
Helm
管理
创建
MYSQL
并
使用
外置存储_
helm
mysql
helm
mysql
...
赞
踩
article
项目
经理
和产品
经理
...
在现在的软件项目或者互联网项目中,
项目
经理
和产品
经理
是经常被人搞混淆的两个职位,而且两个职位的简称都是一样,都是PM...
赞
踩
article
微
服务
(
3
)——
分布式
组件
...
文章目录1.Spring Cloud Alibaba2.Nacos:1.安装:nacos-server2.启动:
3
.配置...
赞
踩
article
先行
发生
原则
(
happens
-
before
)介绍
_
先于
发生
...
一、什么是
先行
发生
原则
二、Java内存模型中的
先行
发生
关系三、如何应用
先行
发生
规则如果Java内存模型中所有的有序性都仅...
赞
踩
article
ai
写
论文
软件
有推荐吗?
这
几款
软件
帮你解锁
写
作
新境界_材料期刊
论文
ai
写
作
软件
哪个好...
但幸运的是,现在有许多AI
软件
可以辅助你进行创作,它们能够帮助你快速整理和组织思路,自动检查语法错误和拼
写
错误,还能提供...
赞
踩
article
3d激光
SLAM
:
LIO
-
SAM
框架---
IMU
预
积分
流程_雷达
里程计
因子图...
从全称上可以看出,该算法是一个紧耦合的雷达惯导
里程计
(Tightly-coupled Lidar Inertial Od...
赞
踩
article
代码
随想录
-
二叉树
...
中序遍历与前序遍历不同的点在于push_back val的时机,前序遍历时第一次碰到的就是中节点,直接push_back...
赞
踩
article
618排版必备
SVG
模版
...
该组件可以添加超链接/小程序,如果你不太喜欢花哨的轮播特效,那传统的或许就是最好的!E2.COOL 的专业级会员/企业级...
赞
踩
article
MySQL
.
zip
解压
版的
安装
教程_mysql
zip
安装
...
一直以来都习惯了我们使用
MySQL
安装
文件(.exe),这样一键式的非常方便,也省去好多麻烦,因为我是搞编程的,习惯自己...
赞
踩
article
23
种
设计模式
...
23
种
设计模式
23
种
设计模式
一、创建型模式: 1.工厂方法模式:定义一个用于创建对象的接口,让...
赞
踩
article
老黄将世界上
第一台
英
伟达
H200
亲手
交付给
OpenAI
_
dgx
h200
...
就在昨天,英
伟达
CEO黄仁勋亲自将
第一台
英
伟达
DGX
H200
交付给
OpenAI
位于旧金山的总部,预示着两大科技巨头未来...
赞
踩
article
学习
pano2vr
制作
html5
全景笔记...
demo截图:demo下载: 百度网盘:http://pan.baidu.com/s/1o8yBwIA密码:nf62(...
赞
踩
article
Python
最全的
pip
换源-国内
镜像
源 提高
下载速度
_阿里云
镜像
python
...
在使用安装
Python
包时,如果
下载速度
较慢,你可以考虑使用国内的
镜像
源,以提高
下载速度
。_阿里云
镜像
python
...
赞
踩
article
UML
建模
工具
Visual
Paradigm
(
VP
-
UML
)
使用
教程:
安装
详解...
Visual
Paradigm
for
UML
(
VP
-
UML
)为开发人员提供了最便捷、直观的
UML
建模
功能。为了帮助V...
赞
踩
article
五问“
ChatGPT
+
医学影像
”:新一代
的
AI
能否成为
放射科
医生
的
一把利器?_
chatgpt
195...
likeshop基于「ThinkPHP + Vue + Nuxt + uni-app」实现
的
免费开源商城系统,支持H5、...
赞
踩
article
深入解读
DAMA
-
DMBOK2
...
正文开始前言数据管理领域是信息技术发展中的一个新兴领域,随着互联网、全球化和信息化的快速发展,数据管理的重要性日益显现。...
赞
踩
article
Scrum
Master
PSM考试题目分享 Part 4_psm
i
profess
i
onal
s...
PSM考试题目分享_psm
i
profess
i
onal
scrum
master
i
认证真题题库.psm
i
prof...
赞
踩
article
通过
自然语言
处理
执行
特定任务的AI
Agents
;大模型控制
NPC
执行
一系列的动作;个人化的
电子邮件
...
它的工作原理基于一种称为“数据回放”的数据集生成技术,通过此技术,
Panza
利用预训练的大型语言模型(LLM)来总结您过...
赞
踩
article
git
常用命令_
git
基本操作
命令...
如果执行
git
stash后没有执行
git
stash apply,就直接去修改文件,修改后又执行
git
stash进行...
赞
踩
相关标签
mysql
数据库
kubernetes
云原生
微服务
分布式
spring cloud
jvm
happens before
并发
java
java并发
经验分享
3d
IMU预积分
LIO-SAM
惯导
算法
数据结构
c++
前端
微信公众平台
新媒体运营
节日