信号处理——MATLAB音频信号加噪、滤波

news2025/1/18 6:54:55

音频信号叠加噪声及滤波

  • 一、前言
  • 二、信号分析及加噪
  • 三、滤波去噪
  • 四、总结

很抱歉大家,最近经常有朋友私信问我关于这篇信号处理的一些问题,因为最近比较忙所以没能一一回复,给大家说句抱歉,希望那些给我私信的人可以看到。
大家问的问题大多是运行了我笔记上的代码但是结果不太好,可能是因为之前编辑错误所以笔记上的代码出现问题,在此向大家提供源码与音频,有需要的同学可以自取

链接如下:
https://download.csdn.net/download/zsisinterested/87222376

一、前言

之前一直对硬件上的内容比较关注,但是可能是因为硬件方面的东西可能真的是比较杂,而且需要渗透的东西太多了,所以学习进展比较缓慢。

因为也很少有单纯的硬件学习研究,总是会伴随着各种理论需要硬件做支撑,所以还是想要慢慢接触理论学习。但是之前总找不到切入点,不知道从哪里开始,就一直拖着。最近稍微接触了一点信号处理,就用这个当作切入点,开始接触理论学习。

二、信号分析及加噪

信号处理选用了matlab做工具,选了一个最简单的语音信号处理方式,用MATLAB先对原语音信号添加一个正弦噪声,在通过合适的滤波器去除噪声。

原语音信号需要自己录制一段或者找一段简短的音频,然后先对原语音信号进行分析。原语音信号尽量频率成分少一点,因为是初学,所以目的在于对信号处理有一个大概的了解,复杂的可以留待以后深入学习在做研究。

原语音信号做成.mp4或者.wav格式都可以,尽量做单声道的信号方便分析。如果录制时候是双声道,为了方便,就在处理时候选取单声道处理。

clc;clear
[x,Fs]=audioread('E:\test\tests.wav'); %读文件
N=length(x);
X=fft(x,N); %做傅里叶变换
k=0:N-1;
D=Fs/N;%计算频率分辨率
stem(k*D,abs(X),'Marker','none');
axis([0,4000,0,150])

用傅里叶变换可以看一下语音信号的频谱,由于人声的频率比较低,所以频率大多都集中在低频段,得到这个信息就得考虑一下需要如果有噪声的话,需要用什么样的滤波器。

下面对这个语音信号加上噪音,噪音采用正弦波 0.01* sin(2* pi* f) 函数,频率为1800HZ,加上噪声以后再对信号频谱观察

f=1800;
noise=0.01*sin(2*pi*f*k/Fs);
noise=noise';
xa=x+noise;  
Xa=fft(xa,N);
stem(k*D,abs(Xa),'Marker','none');
axis([0,4000,0,150])

对信号进行分析,得到频谱:

可以很明显的看到在1800HZ左右出现一个信号幅度,这个就是我们添加的噪音。但是真实的信号处理应该的有用信号的频带比较宽,而噪声的频带也会和有用信号更加的接近,或者说更复杂。

三、滤波去噪

对带有噪声的信号进行处理,一般选用合适的滤波器对信号进行过滤,根据频率滤除噪声。上面可以看到有用信号大部分都在1500HZ频段以下,而噪声在1800,所以就可以选用带阻滤波器对信号进行处理。
低通滤波器可以只过滤掉1800HZ的信号,留下其他信号。

先设计一个巴特沃斯带阻滤波器

Fs=8000; %采样频率
fp1=1500;fp2=2100;
fs1=1750;fs2=1850;
wp1=fp1/Fs*2*pi;   wp2=fp2/Fs*2*pi;   %通带截止频率
wp=[wp1,wp2];
ws1=fs1/Fs*2*pi;   ws2=fs2/Fs*2*pi;   %阻带截止频率
ws=[ws1,ws2];
Rp=1;As=30;         
[n,wc]=buttord(wp/pi,ws/pi,Rp,As) 
[b,a]=butter(n,wc,'stop') %求数字带阻滤波器系数
[H,w]=freqz(b,a);   
dbH=20*log10(abs(H)/max(abs(H))); 
plot(w/2/pi*Fs,dbH,'r'); 
axis([0,4000,-40,2]);

整个程序可以画出来滤波器的样子,但实际用到的时候,只需要用到里面的b、a参数,也就是滤波器系统函数的系数,只需要用filter( )函数设定滤波器系数就可以了。

可以看到滤波器的样子:

使用该滤波器对信号进行滤波,xa为叠加过噪声的信号,进行滤波以后,可以在通过傅里叶变换观察一下频谱

y=filter(b,a,xa);
Y=fft(y,N);
stem(k*D,abs(Y),'Marker','none');
axis([0,4000,0,150])

频谱如下:
可以明显看到1800HZ的频率被抑制

最后,通过对比频谱图观察一下整个滤波过程:

四、总结

很久没有写过博客了,之前总想着切入信号处理方面或者其他理论方面,结果总是找不到切入点,硬件方面因为太复杂进度又比较慢,所以这么长时间几乎没什么进展。只是趁着最近学习数字信号处理正好找到一个切入点,以后可能也会多多的注意这个方面。当然,硬件学习也会一直持续下去。

【注】 个人学习笔记,请不吝赐教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142340.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

golang 垃圾回收-三色标记法(白话版)

对于golang 垃圾回收的了解,我理解更多的就是了解,实际做项目能用到垃圾回收的知识点不多,但有些晦涩难懂的语言,是我们的绊脚石,对于技术怎么能理解就怎么记忆。 1. golang垃圾回收的基础:标记&#xff08…

ESNI 和ECH的前世今生

这边文章中提到过虽然 TLS 能够加密整个通信过程,但是在协商的过程中依旧有很多隐私敏感的参数不得不以明文方式传输,其中最为重要且棘手的就是将要访问的域名,即 SNI(Server Name Indication)。同时还有用于告知客户端…

javaEE高阶---MyBatis

一 : 什么是MyBatis MyBatis是更简单完成程序和数据库交互的工具,也就是更简单的操作和读取数据库的工具.MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 去除了几乎所有的 JDBC 代码以及设置参数和获取结果集的动作 . MyBatis …

[oeasy]python0037_终端_terminal_电传打字机_tty_shell_控制台_console_发展历史

换行回车 回忆上次内容 换行 和 回车 是两回事 换行 对应字节0x0ALine-Feed 水平 不动垂直 向上喂纸 所以是 feed 回车 对应字节0x0DCarriage-Return 垂直 不动水平 回到纸张左侧 可移动的打印头 运输字符 的 装置 (Carriage)回到 行首 所以是 Return tty、terminal、shell、…

【视觉SLAM】DM-VIO: Delayed Marginalization Visual-Inertial Odometry

L. v. Stumberg and D. Cremers, “DM-VIO: Delayed Marginalization Visual-Inertial Odometry,” in IEEE Robotics and Automation Letters, vol. 7, no. 2, pp. 1408-1415, April 2022, doi: 10.1109/LRA.2021.3140129. 论文阅读方法:Title,Abstract…

百趣代谢组学文献分享:学科交叉研究,微生物回收重金属机制研究

发表期刊:Environment International 影响因子:7.297 发表时间:2019年 合作单位:福建农林大学 百趣代谢组学文献分享,该文章是BIOTREE协助客户2019年发表在Environment International上的关于微生物回收重金属机制研…

Tomcat的Connector启动过程分析

一. 前言 前面分析了tomcat的整体架构和tomcat的启动过程,在分析启动过程的时候只讲了整体的启动过程,本篇来重点分析一下tomcat的Connector(连接器)组件的启动过程。 二.从Connector的构造开始 那么org.apache.catalina.connector.Connector是在什么…

文献学习06_利用句法指示符和句子上下文加强关系抽取

论文信息 Subjects: Computation and Language (cs.CL) (1)题目:Enhancing Relation Extraction Using Syntactic Indicators and Sentential Contexts (利用句法指示符和句子上下文加强关系抽取) (2&…

论文精读:RPM-Net: Robust Point Matching using Learned Features

论文地址:https://arxiv.org/pdf/2003.13479.pdf 点云配准任务 点云配准可以当做一个基础的上游任务,根据从不同视角下获取的点云数据配准为完整的点云数据,下游任务众多 基本任务:求一个变换矩阵,使得两个具有未知点的点云数据重合。 刚性与非刚性: 刚性配准:旋转和平…

Leetcode 121买卖股票的最佳时机

题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…

solr集群配置(使用solr自带的Jetty实现集群配置)

看了很多的资料发现基本集群搭建都是通过tomcat的方式实现的,但是在高版本的solr中,可以通过solr自带的jetty实现集群的搭建 准备 1.虚拟机安装linux 2.安装jdk 3.下载solr并解压 步骤 1.进入到解压后solr的bin目录下,并执行 ./solr -e clo…

赛狐ERP | 如何高效管理亚马逊广告!用这款亚马逊ERP就够了!

亚马逊的广告管理是是每一位亚马逊运营的必修课,除自然流量外,广告来带的流量与转化占比都极高,广告做活了,就是打虎上山;广告搞砸了,就是骑虎难下:不开广告吧没有流量卖不动、开了广告吧财务账…

#B. 部落联盟

一,题目Description在草原上有N个部落,每个部落都有其坐标(xi,yi)每个部落都有个武力值,可正可负由于部落间只能通过马匹来传递信息于是只有当两个部落间的距离为1的时候,两个部落才有可能进行联系,距离计算公式为abs(xi-xj)abs(y…

人生的喜悦、不快与成长,都在那一篇篇的文字中得到记录 | 2022 年终总结

又是一年的总结,不知道自己今年又该写点什么。但提笔总是好的,也算对今年的一个交代和对未来的一份期许。窗外的阳光正好,对面楼的敲打声叮叮咚咚,窗台上的两只猫睡得依旧奔放和舒适。这样一个看似美好的下午,一个平凡…

Internet Download Manager2023最好用的HTTP下载神器

Internet Download Manager 介绍2023最佳下载利器。Internet Download Manager (简称IDM) 是一款Windows 平台功能强大的多线程下载工具,国外非常受欢迎。支持断点续传,支持嗅探视频音频,接管所有浏览器,具有站点抓取、批量下载队…

机器学习100天(二十六):026 k近邻分类算法-理论

机器学习100天,今天讲的是:K 近邻分类算法-理论。 《机器学习100天》完整目录:目录 一、什么是 K 近邻算法 K 近邻算法也叫 KNN(k-Nearest Neighbor)算法,它是一个比较成熟也是最简单的机器学习算法之一。K 近邻分类算法的思路是:如果一个样本在特征空间中与 K 个实例最…

FastAPI集成Socket.io坑点汇集和技术选型

背景 单纯的 websocket 通信方式存在大量的辅助性的工作需要处理,例如心跳机制、粘包处理、协议规范等,所以直接使用 websocket 开发,等于重复造轮子,毫无价值,而 socket.io 整理了一整套规范和机制,可以满…

DSP-频域中的离散时间信号

目录 连续和离散时间傅里叶变换: 四种常用的傅立叶变换: 连续时间傅立叶变换(FT): 离散时间傅里叶变换(DTFT): 对称关系: DTFT的收敛条件: 常用DTFT对: DTFT的性质: 线性: 时间反转: 时移: 频移&#xff1a…

鲁大师2022牛角尖颁奖盛典落幕,各大硬件厂商齐聚襄阳

1月4日,鲁大师2022年度牛角尖颁奖晚会在湖北襄阳成功举办。 鲁大师的”牛角尖”奖是由过去一年上亿用户通过鲁大师测试得到的真实数据,以及鲁大师实验室通过专业的测试规范共同缔造的硬件奖项。颁发给的都是各大PC、手机、电动车领域最优秀、最顶尖的产…

【自学Python】Python HelloWorld

Windows Python HelloWorld Windows Python HelloWorld 教程 使用记事本,新建一个 helloworld.py 文件,输入以下内容: print(嗨客网(www.haicoder.net))打开命令行,进入到 helloworld.py 文件所在目录,输入以下命令…