数字信号处理实验——语音信号的数字滤波

简介: 数字信号处理实验——语音信号的数字滤波

前言


学习数字信号处理课程的课程实验

使用MATLAB实验平台,对一段语音信号进行处理,滤除其中的噪声,下面是完整的实验过程。


一、实验项目


语音信号的数字滤波


二、实验目的


1.掌握使用 FFT 进行信号谱分析的方法

2.设计数字滤波器对指定的语音信号进行滤波处理


三、实验平台


MATLAB R2019b


四、实验内容


1.分析信号

1.首先使用 MATLAB 的 audioread(FILENAME)函数读取音频信号,其输入输出如下列函数文档;

audioread Read audio files
[Y, FS]=audioread(FILENAME) reads an audio file specified by the
character vector or string scalar FILENAME, returning the sampled data
in Y and the sample rate FS, in Hertz

2.调用自己编写的 plot_function()函数,画出它的时域波形与经过 FFT 变换后的频域波形进行观察

(已对坐标进行处理,使之对应真实的物理含义);



3.观察时域波形,可见在约8秒后,出现了强烈的干扰信号,如图1中的红框所示;

观察频域波形,可见干扰信号为强烈的余弦脉冲信号,如图2中的红框所示;

2.信号处理

代码如下(示例):

1.使用切比雪夫I型滤波器滤波:

· 调用自己编写的Chebyshev_bandstop_filter(x,fplowow,fphighigh,fplow,

fphigh,rp,rs,Fs)函数(具体见后面的代码详解),对信号进行3次带阻滤波,效果如下:

(1)第一次滤波:

(2)第二次滤波

(3)第三次滤波

2.观察此时频域与时域波形(如图6所示)可知还存在较大的直流分量:

可通过一个高通滤波器去除直流,但在这里尝试新方法,直接在信号时域中减去直流分量:

%时域操作去除直流
for i = 86080:length(audio_data_new)
    audio_data_new(i)=audio_data_new(i)-0.1295;    
end

操作后时域波形如图7所示:

观察此时时域波形(如图7所示),可知还存在两个“爆破音”,直接通过时域填0的方法去除:

操作后最终的时域与频域波形分别如图8和图9所示:


3.观察此时的时域波形频率波形可知,我们处理的效果很好,去除噪音的同时,对原始语言信号的影响也很小,达到了预期效果。

最后使用audiowrite(‘SunshineSquare_New.wav’,audio_data_new,fs),生成处理后的音频文件。

聆听可知噪音被去除,且原始人声十分清晰。


实验结果分析


观察原始信号时域和频域波形,可知噪声是在信号一段时间内加入的直流分量和三个余弦信号,我们分别通过3次带阻滤波器滤除余弦信号,再通过时域操作去除直流分量,最后通过时域置“0”去除剩余的“爆破音”。 通过观察波形与聆听验证,可知我们去除噪音的同时,对原始语言信号的影响也很小,达到了预期效果,效果不错。

代码地址

实验代码地址

目录
相关文章
|
关系型数据库 MySQL Linux
让安装变简单:Linux下安装Mysql一篇文章搞定
让安装变简单:Linux下安装Mysql一篇文章搞定
445 0
|
4月前
|
存储 人工智能 资源调度
从 0 到 1:搭建具备“指挥+调度”双重属性的 AI 智能体
本文深度解析2026年企业级AI落地关键——兼具“指挥官”(战略拆解)与“调度官”(动态执行)双重能力的Agentic Workflow系统。涵盖分层架构、意图引擎、动态路由、记忆闭环及实战部署,助你打造真正能干事的数字军团中枢。(239字)
319 5
|
Linux 测试技术 数据库
达梦(DM)数据库安装
简述windows环境下达梦(DM)数据库安装操作
|
分布式计算 Hadoop Java
hadoop伪分布式搭建(超详细)
hadoop伪分布式搭建(超详细)
2770 0
|
7月前
|
Web App开发 安全 Java
并发编程之《彻底搞懂Java线程》
本文系统讲解Java并发编程核心知识,涵盖线程概念、创建方式、线程安全、JUC工具集(线程池、并发集合、同步辅助类)及原子类原理,帮助开发者构建完整的并发知识体系。
|
Java 索引
SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
本文使用SpringBoot2.3.x + ElasticSearch7.6.2 实现对PDF,WORD进行全文检索 实现了对文件内容快速搜索
1719 0
SpringBoot2.3.x整合ElasticSearch7.6.2 实现PDF,WORD全文检索
|
7月前
|
人工智能 数据安全/隐私保护 开发者
一条AI指令,解决"发朋友圈不知道写啥"的千古难题
技术人发朋友圈总犯难?项目上线怕炫耀,生活瞬间不知如何表达。其实,用AI辅助写作是个妙招。关键在于给出清晰指令:明确场景、风格与需求,让AI生成真实自然、有温度的文案。本文提供一套即拿即用的AI指令模板,覆盖生活、工作、旅行等六大场景,帮你快速生成不“AI味”的朋友圈内容。省下纠结时间,真诚分享生活,才是正解。
942 10
|
10月前
|
JSON 缓存 Go
Go语言实战案例-向文件写入内容
本案例讲解如何使用 Go 语言向文件写入内容,涵盖覆盖写入与追加写入两种模式,适用于日志记录、报告生成等场景。涉及 `os.WriteFile`、`os.OpenFile` 等核心函数,并演示如何处理文件权限与编码问题。
|
存储 编译器 C++
C++进阶之路:何为拷贝构造函数,深入理解浅拷贝与深拷贝(类与对象_中篇)
C++进阶之路:何为拷贝构造函数,深入理解浅拷贝与深拷贝(类与对象_中篇)
482 0
|
存储 监控 Oracle
Oracle 的集群文件系统(Cluster File System)有哪些特点?
Oracle 集群文件系统(CFS)是 Oracle 集群架构的关键组件,允许多节点共享存储资源。其特点包括:多节点访问和高可用性、确保数据一致性的并发控制与锁管理、通过缓存和负载均衡优化性能、支持动态扩展和分布式架构、提供权限管理和加密保障安全性、与 Oracle RAC 和 ASM 集成,以及具备图形化管理界面和监控工具。