基于matlab的语音信号处理

article/2025/10/22 0:34:18

摘要

利用所学习的数字信号处理知识,设计了一个有趣的音效处理系统,首先设计了几种不同的滤波器对声音进行滤波处理,分析了时域和频域的变化,比较了经过滤波处理后的声音与原来的声音有何变化。同时设计实现了语音的倒放,变速播放,回响,音调转换等处理效果,其中音调转换部分使用了重新采样改变基频,再进行时长规整的算法。


基于MATLAB的语音信号处理


语音信号的采集

  录制或者截取一段音乐,时间在1分钟左右,存为.wav的文件。然后利用wavread对语音信号进行采样。我们一共选择了3段语音,其中

d.wav 真心英雄(周华健)(男声)

man.wav我的歌声里(自己录制)(男声)

girl.wav看的最远的地方(张韶涵)(女声)

语音信号的频谱分析

使用matlab画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,画出频谱图,分析频率成分。这里我们分析的是d.wav,通过分析知道频率分布在0—10KHz,主要分布在低频。


v2-1ef8fa2aba3de9027195a3dd6ff3480b_b.jpg

数字滤波器设计

这里我们设计了4种滤波器对语音进行处理,分别为椭圆低通滤波,椭圆高通滤波,等波纹逼近法FIR带通滤波器,双线性变换法切比雪夫数字高通滤波器,绘制出相应的幅度、相位谱图,滤波后的波形、频谱图。

各滤波器的设计如下:

椭圆低通滤波器:fb=1 200 Hz,fc=1 400 Hz,As=100 dB,Ap=1 dB


v2-da6f73b30a71b8f59b9c6e16cf6093d4_b.jpg


v2-25625653f3326c71ab516b451ea604b6_b.jpg


椭圆高通滤波器:fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB



v2-56d7fc9ea47842ae901822098514ae2a_b.jpg


v2-c1a0b8034fc71050fec2ebe3e8e4d610_b.jpg


等波纹逼近法设计FIR带通滤波器


fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3000Hz,As=100dB,Ap=1dB



v2-9f4b98a678cc79a4c17e64b5e0e8bb90_b.jpg

v2-7113fe1ab4d997e6fcbd304f27fd60f3_b.jpg


双线性变换法切比雪夫数字高通滤波器


fc=4 800 Hz,fb=5 000 Hz As=100 dB,Ap=1 dB



v2-e65fbde17049a54372198eb068512a02_b.jpg

v2-1d82e80e5947a8d3117f9a3ebdb1de42_b.jpg

滤波处理后,我们用函数sound()可以对声音进行回放,调用格式:sound(x,fs,bits);感觉滤波前后的声音。语音的低频部分沉稳,空间感较强;中频部分音质一般;高频部分音质非常尖锐,略微有尖音。此外中高频的幅度都不大,回放时音量较低。

语音变速播放

改变语音的播放速度也就是改变采样间隔(即改变了采样频率),但是这个频实现率依然要在2f(Nyquist rate)之上,否则就会产生失真。

%变速-慢放%

w=0.9;

M=w*fs; %w>1为快放,w<1为慢放

sound(x,M,nbits);

语音倒放

使用flipud()倒置语音矩阵,逆序输出音频即可。

回响效果

回声在时域上幅值减小了,频域上的特征不变,只需要把原信号添加一个延时(delay)和对时域的幅度添加一个参数.然后和原信号叠加即可获得回响效果。


v2-3d383a68edb320d986cc471ee8a989e3_b.jpg



实现男女声转换音效效果

我们使用另外写的voice(x,f)函数实现音调转换,x为需要转换的声音,通过抽取插值更改采样率来改变基频,当f>1时音调降低;f<1音调升高。然后再进行时长整合使语音文件恢复原来的时长。时长整合使用重叠叠加算法来实现。经过我们试听,转换效果还是很好的。



v2-9f3d5634539bd07d9b84c6e75f8a50ab_b.jpg


v2-2cbd8e2c39d21e08df169429939e97d8_b.jpg


总结体会


通过对声音信号的滤波处理,比较其前后变化,感受到了滤波器在声音信号处理当中的作用,同时在实践中掌握了滤波器的基本设计方法,加深了对各种类型的数字滤波器特性的理解。我们通过对声音的各种变换,产生了多种不同的音效,也体会到了语音处理的魅力。

代码附录


%读取声音信号%

[y,fs,nbits]=wavread('d'); %读取声音文件

x=y(:,1); %读入的y矩阵有两列,取第1列

N=length(x);

n=0:N-1;

X= fft(x); %傅里叶变换

Fs=2*fs; %2倍频

T=1/Fs;

f=n/N*Fs;

figure;

subplot(2,1,1);

plot(n,x); %声音的时域波形

title('原声音的波形');

xlabel('t/s');

ylabel('magnitude');

subplot(2,1,2);

plot(f,abs(X)); %声音的频谱

title('原声音的频谱');

xlabel('frequency/Hz');

ylabel('magnitude');

% 滤波器设计%

% 椭圆低通滤波器%

fp1=1200;fs1=1400; %低通滤波器通带截止频率1200Hz和阻带截止频率1400Hz

wp1=2*fp1/Fs; ws1=2*fs1/Fs;rp=1;as=100;

[N1,wp1]=ellipord(wp1,ws1,rp,as); %计算椭圆低通模拟滤波器的阶数和通带边界频率

[B,A]=ellip(N1,rp,as,wp1); %计算低通滤波器模拟滤波器系统函数系数

y1=filter(B,A,x); %滤波器软件实现

% 低通滤波器绘图部分%

figure;

freqz(B,A);

figure;

subplot(2,1,1);

t=n*T;

plot(t,y1);

xlabel('t/s');ylabel('magnitude');title('低通滤波后的波形');

axis([0,t(end),min(y1),1.2*max(y1)])%坐标范围

subplot(2,1,2);

plot(f,abs(fft(y1)));

%椭圆高通滤波器%

fp2=4800;fs2=5000; %高通滤波器通带截止频率5000Hz和阻带截止频率4800Hz

% 高通滤波器绘图部分%

figure;

freqz(B2,A2);

figure;

subplot(2,1,1);

t=n*T;

plot(t,y2);

xlabel('t/s');ylabel('magnitude');title('高通滤波后的波形');

axis([0,t(end),min(y2),1.2*max(y2)])

subplot(2,1,2);

plot(f,abs(fft(y2)));

%等波纹逼近法设计FIR带通滤波器及滤波

[I,fs,nbits]=wavread('d');

y=I(:,1);

fp1=1200;fp2=3000;fc1=1000;fc2=3200;FS=2*fs;rp=1;rs=100;

f=[fc1,fp1,fp2,fc2];

m=[0,1,0];

dat1=(10^(rp/20)-1)/(10^(rp/20)+1);dat2=10^(-rs/20);

rip=[dat2,dat1,dat2];

[M,fo,mo,w]=remezord(f,m,rip,FS);

M=M+1;

hn=remez(M,fo,mo,w);

figure(1);

freqz(hn);

Y=fft(y);

y1=fftfilt(hn,y); %用remez设计的滤波器进行滤波

figure(2);

subplot(221);plot(y);title('未滤波语音波形');

subplot(222);plot(y1);title('等波纹逼近法滤波后语音波形');

subplot(223);plot(n,Y);title('未滤波语音频谱');

subplot(224);plot(n,Y1);title('等波纹逼近法滤波后语音频谱');

sound(y1,fs,nbits); %滤波后语音回放


%cheby1设计模拟高通滤波器再经双线性变换法设计成数字高通滤波器

fp=5000;fc=4800;rp=1;rs=100;FS=2*fs;

wpz=2*pi*fp/FS;wsz=2*pi*fc/FS;

wp=2*tan(wpz/2)*FS;ws=2*tan(wsz/2)*FS; %预畸校正转换指标

[N,wpo]=cheb1ord(wp,ws,rp,rs,'s');

[BH,AH]=cheby1(N,rp,wpo,'high','s');

[Bz,Az]=bilinear(BH,AH,FS);

w=0:0.01*pi:pi;

[h,w]=freqz(Bz,Az,w);

plot(w/pi,20*log(abs(h)),'k');axis([0,1,-800,100]);

xlabel('w/pi');ylabel('幅度/dB');grid;

title('cheby1数字高通滤波器');

Y=fft(y);

figure(2);

subplot(221);plot(y);title('未滤波语音波形');

subplot(222);plot(y1);title('cheby滤波后语音波形');

subplot(223);plot(n,Y);title('未滤波语音频谱');

subplot(224);plot(n,Y1);title('cheby滤波后语音频谱');

sound(y1,fs,nbits); %滤波后语音回放

%播放声音%

sound(x,fs,nbits); %原声

sound(5*y1,fs,nbits); %低通

sound(5*y2,fs,nbits); %高通

%变速-慢放%

w=0.9;

M=w*fs; %w>1为快放,w<1为慢放

sound(x,M,nbits);

%语音倒放%

y0=flipud(x);

sound(y0);

%回声%

z=[zeros(5000,1);x]; %延时5000个点

x1=[x;zeros(5000,1)]; %使原声音长度与延时后相等

y1=x1+0.4*z; %原声+延时衰减

figure;

plot(y1);

title('加入回声的波形');

sound(5*y1,fs,nbits);

%调用函数voice()实现音调转换%

%男声转换为女声%

[y,fs,nbits]=wavread('man'); %读取声音文件

x=y(:,1); %读入的y矩阵有两列,取第1列

y1=voice(x,0.71); %调整voice()第2个参数转换音调,>1降调,<1升调,y1为x转换后的声音

N=length(x); M=length(y1);

n=0:N-1; m=0:M-1;

X= fft(x); Y=fft(y1); %傅里叶变换

Fs=2*fs; %2倍频

T=1/Fs; T1=1/Fs*0.71;

figure;

subplot(2,1,1);

plot(t,x);

xlabel('t/s');ylabel('magnitude');title('转换前的波形');

subplot(2,1,2);

plot(t1,y1);

xlabel('t/s');ylabel('magnitude');title('转换后的波形');

figure;

subplot(2,1,1);

plot(f,abs(X));

xlabel('frequency/Hz');ylabel('magnitude');title('转换前的频谱');

subplot(2,1,2);

plot(f1,abs(Y));

xlabel('frequency/Hz');ylabel('magnitude');title('转换后的频谱');

sound(y1,fs,nbits);

%女声转换为男声%

[y,fs,nbits]=wavread('girl'); %读取声音文件

x=y(:,1); %读入的y矩阵有两列,取第1列

sound(voice(x,1.3),fs,nbits);

%调整voice()第2个参数转换音调,>1降调,<1升调


function Y=voice(x,f)

%更改采样率使基频改变 f>1降低;f<1升高

f=round(f*1000);

d=resample(x,f,1000);

%时长整合使语音文件恢复原来时长

W=400;

Wov=W/2;

Kmax=W*2;

Wsim=Wov;

xdecim=8;

kdecim=2; X=d';

F=f/1000;

Ss =W-Wov;

xpts = size(X,2);

ypts = round(xpts / F);

Y = zeros(1, ypts);

xfwin = (1:Wov)/(Wov+1);

ovix = (1-Wov):0; newix = 1:(W-Wov);

simix = (1:xdecim:Wsim) - Wsim;

padX = [zeros(1, Wsim), X, zeros(1,Kmax+W-Wov)];

Y(1:Wsim) = X(1:Wsim); lastxpos = 0; km = 0;

for ypos = Wsim:Ss:(ypts-W)

xpos = round(F * ypos);

if (kmpred <= Kmax)

km = kmpred;

else

ysim = Y(ypos + simix);

rxy = zeros(1, Kmax+1);

rxx = zeros(1, Kmax+1);

Kmin = 0;

for k = Kmin:kdecim:Kmax

xsim = padX(Wsim + xpos + k + simix);

rxx(k+1) = norm(xsim);

rxy(k+1) = (ysim * xsim');

end

Rxy = (rxx ~= 0).*rxy./(rxx+(rxx==0));

km = min(find(Rxy == max(Rxy))-1);

end

xabs = xpos+km;

Y(ypos+ovix) = ((1-xfwin).*Y(ypos+ovix)) + (xfwin.*padX(Wsim+xabs+ovix));

Y(ypos+newix) = padX(Wsim+xabs+newix);

end

end


http://chatgpt.dhexx.cn/article/MpJ8l4XF.shtml

相关文章

【无线通信篇 | Zstack协议栈】CC2530 Zigbee Zstack协议栈组网项目及详细讲解篇

演示视频&#xff1a;https://www.bilibili.com/video/BV1Ew411o7Fp 物联网无线通信技术&#xff0c;ZigBee无线传感网络 CC2530最大的特点就是一个拥有无线收发器&#xff08;RF&#xff09;的单片机&#xff0c;既能实现单片机功能&#xff0c;也能实现无线传输 Zstack协议…

【Zigbee】进阶篇(1) Zigbee协议栈创建简单项目,协议栈、事件、消息学习

大家好&#xff0c;我是皮皮猫吖&#xff01; 每文一言&#xff1a;梦想不会逃跑&#xff0c;会逃跑的永远都是自己&#xff01; 本篇文章&#xff1a; 主要是协议栈的介绍&#xff0c;使用协议栈完成一个简单例子&#xff0c;协调器创建网络的相关问题&#xff0c;学会在协议…

ZigBee协议栈TI Z-Stack分析

ZigBee协议栈TI Z-Stack分析 2010-11-05 11:26 转载自 slcfhr 最终编辑 slcfhr 标签(TAG)&#xff1a; ZigBee 协议栈 Z-Stack 2007年4月&#xff0c;德州仪器推出业界领先的ZigBee协议栈&#xff08;Z-Stack&#xff09;。Z-Stack符合ZigBee 2006规范&#xff0c;支持…

lesson7-1 Zigbee协议栈的使用

目录 协议栈的使用 协议栈的安装和协议栈工程创建 协议栈工程配置 选项卡选择 用户代码编写注意 信道选择及PANID分配 协议栈的使用 协议栈的安装和协议栈工程创建 首先进行协议栈的安装 如何创建自己的协议栈工程&#xff1a; &#xff08;1&#xff09;先把整个协议…

物联网--Zigbee协议(一):Zigbee初识

物联网--Zigbee协议 前言一、Zigbee初识什么是物联网&#xff1f;什么是Zigbee&#xff1f; 二、Zigbee协议的基础知识Zigbee三种设备类型Zigbee三种网络拓扑结构Zigbee工作频段 三、Zigbee协议架构总结 前言 最近在学习Zigbee的相关知识&#xff0c;发现网上、论坛找到的知识…

ZigBee 快速入门(协议栈,协调器,路由器,终端设备,加入网络,安全,路由功能,频段)

文章目录 1、ZigBee 是什么2、ZigBee 目标3、ZigBee 协议栈4、设备类型5、Mesh网络 拓扑结构6、加入一个 ZigBee 网络7、ZigBee 安全8、频段和速率9、ZigBee相关特性和名词9.1 CSMA/CD&#xff0c;CSMA/CA9.2 信道访问机制9.3 dB、dBm、dBi9.4 传播损耗9.5 RSSI、LQI9.6 接收灵…

ZigBee协议介绍

简介 ZigBee是一种无线通信标准&#xff0c;是由ZigBee Alliance于 2001 年基于IEEE802.15.4标准定制的&#xff0c;这一标准界定了低功耗、低传输速率、近距离无线通信技术所需的所有相关通信协议。基于ZigBee协议的无线通信网络的工作频段主要有2.4GHz、915MHz、868MHz三个频…

zigbee协议栈工作流程 From zigbee菜鸟笔记(十 一)

一.ZigBee 协议栈简介 有问题发送邮件至468078841qq.com 什么是ZigBee 协议栈呢&#xff1f;它和ZigBee 协议有什么关系呢?协议是一系列的通信标准&#xff0c;通信双方需要共同按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式&#xff0c;通俗点来理解就…

ZigBee协议

ZigBee协议 简介 这个zigbee教程描述了您想要了解的有关Zigbee协议栈的所有内容。现在&#xff0c;一天的zigbee在低数据速率无线应用中变得非常流行。 Zigbee设备用于智能能源&#xff0c;医疗和家庭自动化。在智能能源应用中&#xff0c;zigbee产品用于监控和控制能源和水…

物联网--Zigbee协议(二):Zigbee协议架构以及数据帧结构

上一篇整理了关于Zigbee协议的一些基础知识&#xff0c;接下来主要讨论Zigbee协议的架构&#xff0c;希望通过这篇文章能够帮助小伙伴们更好地理解Zigbee协议&#xff0c;废话不多说&#xff0c;进入正题吧。 文章目录 一、Zigbee协议架构二、Zigbee协议的数据帧结构总结 一、Z…

Zigbee协议栈中文说明

1.概述 1.1解析ZigBee堆栈架构 ZigBee堆栈是在IEEE 802.15.4标准基础上建立的&#xff0c;定义了协议的MAC和PHY层。ZigBee设备应该包括IEEE802.15.4(该标准定义了RF射频以及与相邻设备之间的通信)的PHY和MAC层&#xff0c;以及ZigBee堆栈层&#xff1a;网络层(NWK)、应用层和…

Zigbee 协议栈

介绍完ZigBee的物理特性&#xff0c;现在该转入逻辑层面&#xff0c;分析下协议栈的软件部分了。先看个协议栈的架构图吧&#xff1a; ZigBee协议栈由一组子层构成&#xff0c;每层为其上层提供一组特定的服务&#xff1a;一个数据实体提供数据传输服务&#xff1b;一个管理实体…

ZigBee协议栈(一)--协议栈介绍

1、Zigbee协议栈简介 协议是一系列的通信标准&#xff0c;通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式&#xff0c;通俗讲协议栈就是协议和用户之间的一个接口&#xff0c;开发人员通过使用协议栈来使用这个协议&#xff0c;进而实现无线数…

zigbee之Zstack协议栈使用

zigbee之Zstack协议栈使用 前言基于zstack协议栈开发的步骤一、OSAL操作系统1、操作系统工作流程2、OSAL初始化函数3、系统启动函数&#xff08;1&#xff09;任务&#xff08;2&#xff09;事件 4.OSAL任务与事件的关系 二、组网通信1、初始化PANID和信道2、端点和簇3、无线数…

Zigbee协议栈应用(一)——Zigbee协议栈介绍及简单例子

1、Zigbee协议栈简介 协议是一系列的通信标准&#xff0c;通信双方需要按照这一标准进行正常的数据发射和接收。协议栈是协议的具体实现形式&#xff0c;通俗讲协议栈就是协议和用户之间的一个接口&#xff0c;开发人员通过使用协议栈来使用这个协议&#xff0c;进而实现无线数…

学习记录 | ZigBee协议栈工作流程

第一次来CSDN记录一下学习过程&#xff0c;其实就是笔记啦 之前用Typora 的 但前几天电脑出问题重装系统后打开笔记文件发现照片都打不开了&#xff0c;索性想换一种记笔记方式 好啦 以下是正文&#xff01;&#xff01;&#xff01; 对了 笔记来源是深圳安联德公司提供的学…

ZigBee协议栈Zstack介绍

文中所讲述的协议栈是基于ZigBee2006\Zstack-1.4.3-1.2.1 1.ZSTACK协议栈的架构 ZigBee协议栈就是将各个层定义的协议都集合在一起&#xff0c;以函数的形式实现&#xff0c;并给用户提供一些API&#xff0c;工用户调用。协议栈体系分层结构与协议栈代码文件夹对应表如下&…

ZigBee Zstack协议栈

一、Zstack协议栈概述 什么是Zstack协议栈 为了使Zigbee的开发更加简单高效&#xff0c;TI公司推出了基于cc2530芯片的协议栈Z-STACK.协议栈的实质就是能实现各个功能的实例框架代码&#xff0c;我们想要实现自己的功能程序&#xff0c;只需要在协议栈的基础上修改或添加即可…

快速了解ZigBee的协议栈

带大家来一起快速的看懂ZigBee的协议栈的运行流程。 1.读任何程序都需要从main函数入手&#xff0c;那我们先来看Zmain.c中的main函数。 问题&#xff1a;在main中我们会看到很多的函数&#xff0c;我们究竟要看哪个函数呢? 回答&#xff1a;这么多的函数中其实我们只需要关注…

Zigbee协议栈————广播组网

目录 1.基础概念 2.Zigbee协议栈工作流程 3。代码讲解 1.基础概念 在Zigbee网络中存在3中逻辑设备&#xff1a;协调器、路由器、终端。 (这个实验当中我们只用到协调器以及终端)。 协调器&#xff1a;协调器负责启动网络&#xff0c;当启动和配置好网络后&#xff0c;协调…