%啸叫频点的检测
%啸叫位置不确定时的抑制方法
%初始条件设置
fs=44100;           %采样频率:44.1kHz
duration=1;         %音频时长1s
%保存的语音信号路径及名称
filename_howling_random='D:\\project_record\\speech_random_howling.wav';
filename_adapfilter_random='D:\\project_record\\speech_adapfilter_howling.wav';
speech_howling=audioread(filename_howling_random);
video_len=length(speech_howling);%自适应滤波器需要参考信号,可以是标准的音频信号也可以是误差信号的线性变换
%本次输入的参考信号是误差信号
%因此最终的输出信号也是误差信号
%输出的误差才是滤波后的信号[speech_howling,~]=audioread(filename_howling_random);
%信号截取的参数设定
%设定更新速度:
%每20ms更新(查看资料介绍,一般10ms~20ms更新速度较为适宜)
updRate=floor(20*fs/1000);         %设置帧长,单位ms
%40ms一帧,这样一帧内的音频信号可以近似看作是平稳的信号
t_zhen=40;
fRate=fix(t_zhen*fs/1000);
%求取样本点个数
n_samples=length(speech_howling);
%计算帧数
nFrames=fix(n_samples/updRate)-1;
%初始化参数
n=1;
flag_zhen=0;
max_temp=0;
for t=1:nFramesif(n+fRate<=n_samples)zhen=speech_howling(n:n+fRate-1);Y_zhen=abs(fft(zhen));P_zhen=Y_zhen.^2;P_zhenaver=mean(P_zhen);[P_max,P_index]=max(P_zhen);if(10*log10(P_max)-10*log10(P_zhenaver)>10)if(max_temp==P_index)flag_zhen=flag_zhen+1;elseflag_zhen=0;max_temp=P_index;endend    n_zhen=0:(fRate-1);N_zhen=fRate;f_zhen=n_zhen*fs/N_zhen;%每一帧画图,若想观察每一帧的频谱则取消注释%figure(t+1)%plot(f_zhen(1:fix(N_zhen/2)),Y_zhen(1:fix(N_zhen/2)));n=n+updRate;end
end
if(flag_zhen>=15)f_howling=(max_temp-1)*1000/t_zhen;disp('howling frequency is(Hz):')disp(f_howling);
end%自适应滤波器的初始化
%定义FIR滤波器阶数,一个频点需要二阶
M = 2;
step = 0.1;                                %算法调节步长控制因子
y_out = zeros(video_len,1);              %滤波器输出
error_out = zeros(video_len,1);          %误差输出
w_out = zeros(video_len,M);              %系数输出
t=(0:1:video_len-1)/video_len;%时间轴单位sfor i=1:video_len%数据输入if i == 1           %如果是第一次进入w = zeros(M,1); %初始化滤波器抽头系数x = zeros(M,1); %初始化信号向量endd = speech_howling(i);                     %输入新的期望信号x = [sin(2*pi*f_howling*(i-1)/fs)cos(2*pi*f_howling*(i-1)/fs)];                 %输入新的信号矢量%算法正体y = x' * w;                              %计算滤波器输出error = d - y;                           %计算误差w_forward = w + step * error * x;         %计算滤波器系数向量%变量更替w = w_forward;%滤波结果存储%其中y_out是啸叫信号%error_out是滤波后的音频信号%w_out是二阶滤波器参数y_out(i) = y;error_out(i) = error;w_out(i,:) = w';
endaudiowrite(filename_adapfilter_random,error_out,fs);
sound(error_out,fs);
figure;
%=======时域图像======
t=(0:1:video_len-1)/video_len*duration;%时间轴单位s
subplot(2,1,1);
plot(t,error_out);
title('滤波后音频信号时域图像');
xlabel('时间:s');
grid on;
%=======频域图像======
n=0:video_len-1;
N=video_len;
Y1=fft(error_out,N);
mag=abs(Y1);
f=n*fs/N;
%取1/2作图
subplot(2,1,2);
plot(f(1:fix(N/2)),mag(1:fix(N/2)));
title('滤波后音频信号频谱图');
xlabel('频率/Hz');
ylabel('幅度');
grid on;
%画出FIR滤波器的零极点图

自适应滤波器做啸叫检测相关推荐

  1. lms自适应滤波器实现噪声干扰的语音恢复_ZLG深度解析语音识别技术

    语音识别已成为人与机器通过自然语言交互重要方式之一,本文将从语音识别的原理以及语音识别算法的角度出发为大家介绍语音识别的方案及详细设计过程. 语言作为人类的一种基本交流方式,在数千年历史中得到持续传承 ...

  2. 各种自适应滤波器总结

    音质优化,回声消除试听: https://pan.baidu.com/s/1nvObNvz 时域: -------------------------------------------------- ...

  3. 信号处理学习笔记6——自适应滤波器4-递归最小二乘(RLS)自适应滤波器

        前面学习的LMS自适应滤波器的核心思想是最速下降法,并根据当前输入信号和期望输出对代价函数的瞬时梯度进行估计.但LMS只使用了当前时刻的输入和期望信号,没有充分利用过去的信息.这就导致LMS自 ...

  4. 李备:期待移动端非线性自适应滤波器

    LiveVideoStack采访了网易云信资深音频算法工程师李备,对于音频技术的未来,他给出了自己的观点,尤其期待移动端上出现非线性自适应滤波器. 文 / 李备 策划 / LiveVideoStack ...

  5. 第5章 Python 数字图像处理(DIP) - 图像复原与重建11 - 空间滤波 - 自适应滤波器 - 自适应局部降噪、自适应中值滤波器

    标题 自适应滤波器 自适应局部降噪滤波器 自适应中值滤波器 自适应滤波器 自适应局部降噪滤波器 均值是计算平均值的区域上的平均灰度,方差是该区域上的图像对比度 g(x,y)g(x, y)g(x,y)噪 ...

  6. 浅谈自适应滤波器---(快速RLS算法)

    在上一篇博客中(浅谈自适应滤波器)我给大家介绍了关于自适应滤波器的一些入门级的知识,并分析了常规RLS算法单次迭代的计算量级为O[N2],当阶数N增大时相应的计算量显著增大,为了将计算量级降低到O[N ...

  7. LMS自适应滤波器算法及其改进

    -- 年初DSP课程期末设计时为了答辩做的PPT,内容背的滚瓜烂熟,给老师留下了深刻的印象,想必整个系也没有第二个人像我这么上心了,因此最后决定把PPT放到博客上:此外因为不希望PPT上有太多字,所以 ...

  8. 自适应滤波器更新算法-EP2

    文章目录 1.变步长 SC-MPNLMS 频域分块算法 1.1 算法原理 1.2 算法代码 1.3 算法优缺点 2.集成多种自适应滤波算法的回声消除器 1.1 算法原理 1.2 算法代码 1.3算法优 ...

  9. 基于Simulink的RBF神经网络的LMS自适应滤波器设计仿真

    目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 LMS(Least Mean Square), 由 Widrow 和 Hoff 于1960年提出,也 ...

最新文章

  1. Convert Plant to Retail Site Master
  2. C++构造函数初始化列表
  3. spring boot部署war包打包插件配置
  4. Redis中的Sentinel 验证
  5. 总线制和多线制示意图_再谈总线制与多线制的区别
  6. php只刷新一次,怎么让php网页指只刷新一次
  7. 【转】char,wchar_t,WCHAR,TCHAR,ACHAR的区别
  8. nginx 子进程 woker process 启动失败的问题
  9. JavaScript浏览器对象(BOM)中有关设备、浏览器屏幕高度和宽度的API介绍
  10. hadoop大数据概述
  11. mysql sql 分析工具下载_DB Query Analyzer下载
  12. 分享:无版权图片素材免费下载网站
  13. unity3d 不规则外发光描边_PS发光字体教程
  14. Python 导出微信电子相册中的照片
  15. 咬住爱的甜蜜 像夹心巧克力 连懒懒的猫咪 也偷偷看你 难以抗拒你的美丽 裙摆摇不停 只为了与你相遇
  16. win10重置进度条不动了_win10系统重置卡在28%不动没反应的解决方法 - 系统家园...
  17. Maven超细致史上最全Maven下载安装配置教学(2022更新...全版本)建议收藏...赠送IDEA配置Maven教程
  18. 手把手带你学习微信小程序 —— 项目实战篇
  19. 随机在圆上生成n个点,这n个点在同一半圆的概率是多少?
  20. (二)Linux设备驱动的模块化编程

热门文章

  1. python怎么算二元一次方程_python如何拟合二元一次方程?
  2. 深度卷积神经网络(CNN tricks)调参技巧
  3. 【WPA TSP】狼群算法求解旅行商问题【含Matlab源码 211期】
  4. Remote desktop web access
  5. 水管混装存在哪些隐患
  6. 跨境电商亚马逊广告的六大痛点,九大思维误区
  7. 飞桨PaddlePaddle(论文复现)-BigGAN解读
  8. 谈谈对软件工程的理解
  9. 润乾报:cell num exceeds limit的三种情况
  10. RHCOS(Red Hat Enterprise Linux CoreOS )简介