对语音信号进行分析及处理.docx

上传人:b****2 文档编号:1869989 上传时间:2022-10-24 格式:DOCX 页数:18 大小:265.64KB
下载 相关 举报
对语音信号进行分析及处理.docx_第1页
第1页 / 共18页
对语音信号进行分析及处理.docx_第2页
第2页 / 共18页
对语音信号进行分析及处理.docx_第3页
第3页 / 共18页
对语音信号进行分析及处理.docx_第4页
第4页 / 共18页
对语音信号进行分析及处理.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

对语音信号进行分析及处理.docx

《对语音信号进行分析及处理.docx》由会员分享,可在线阅读,更多相关《对语音信号进行分析及处理.docx(18页珍藏版)》请在冰豆网上搜索。

对语音信号进行分析及处理.docx

对语音信号进行分析及处理

1、设计目的

1.进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使自身对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解;

2.增强应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力;

3.培养自我学习的能力和对相关课程的兴趣;

二、设计过程

1、语音信号的采集

采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。

采样位数可以理解为声卡处理声音的解析度。

这个数值越大,解析度就越高,录制和回放的声音就越真实

采样定理又称奈奎斯特定理,在进行模拟/数字信号的转换过程中,当采样频率fs不小于信号中最高频率fm的2倍时,采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍。

利用Windows下的录音机,录制了一段发出的声音,内容是“数字信号”,时间在3s内。

接着在D盘保存为WAV格式,然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。

[x1,fs,bits]=wavread('E:

\数字信号.wav');%读取语音信号的数据,赋给变量x1,返回频率fs44100Hz,比特率为16。

2、语音信号的频谱分析

(1)首先画出语音信号的时域波形;

程序段:

x=x1(60001:

1:

120000);%?

?

?

?

?

?

60000?

?

?

?

plot(x)%?

?

?

?

?

?

?

?

?

?

?

?

title('?

?

?

?

?

?

?

?

?

?

?

');

xlabel('?

?

?

n');

ylabel('?

?

A');

(2)然后用函数fft对语音号进行快速傅里叶变换,得到信号的频谱特性;

y1=fft(x,6000);%?

?

?

?

N=6000?

FFT?

?

figure

(2)

subplot(2,1,1),plot(k,abs(y1));

title('|X(k)|');

ylabel('?

?

?

');

subplot(2,1,2),plot(k,angle(y1));

title('arg|X(k)|');

ylabel('?

?

?

');

(3)产生高斯白噪声,并且对噪声进行一定的衰减,然后把噪声加到信号中,再次对信号进行频谱特性分析,从而加深对频谱特性的理解;

d=randn(1,60000);%?

?

?

?

?

?

?

d=d/100;%?

?

?

?

?

?

?

x2=x+d;%?

?

?

?

?

?

?

3、设计数字滤波器

(1)IIR低通滤波器性能指标通带截止频,阻带截止频率,通带最大衰减,阻带最小衰减。

(2)FIR低通滤波器性能指标通带截止频率,阻带截止频率,通带衰减1dB,阻带衰减100dB。

(3)IIR高通滤波器的设计指标,,,阻带最小衰减,通带最大衰减。

(4)(4)FIR高通滤波器的设计指标,,,阻带最小衰减,通带最大衰减。

(5)用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

比较滤波前后语音信号的波形及频谱,在一个窗口同时画出滤波前后的波形及频谱。

在Matlab中,函数sound可以对声音进行回放。

其调用格式:

sound(x,fs,bits);可以感觉滤波前后的声音有变化。

3、结果分析

1、原始语音信号采样后的时域波形及FFT变换后频谱

图1.原始信号时域图

图2.原始信号的频谱图

2、加入噪声后信号的时域波形及FFT变换后频谱

图3.加入噪声后的时域信号

分析:

由图可以看出加入噪声后有明显的不一样,运行sound(x2,fs);播放加入高斯噪声后的语音,可以明显听出兹兹的噪声

图4.加入噪声后的频谱图

3、IIR滤波器及原始信号通过IIR后的时域波形频谱变化

图5.IIR低通滤波器

图6.IIR低通滤波器滤波前后时域波形

分析:

经过滤波器后的信号和原始信号很近似

图7.IIR低通滤波器滤波前后的频谱

分析:

从图7可以看出,经过IIR低通滤波器滤波后将高频部分滤除了。

4、FIR滤波器及原始信号通过FIR后的时域波形频谱变化

图8.FIR低通滤波器

图9.FIR低通滤波器滤波前后时域波形

图10.FIR低通滤波器滤波前后频谱

分析:

从图10可以看出,经过FIR低通滤波器滤波后将高频部分滤除了。

 

5、IIR高通滤波器的设计

图11.IIR高通滤波器

图12.IIR高通滤波器滤波前后时域波形

 

图13.IIR高通滤波器滤波前后频谱

6、FIR高通滤波器的设计

图14.FIR高通滤波器

图15.FIR高通滤波器滤波前后时域波形

图16.FIR高通滤波器滤波前后频谱

4、结束语

这次的数字信号处理大作业的题目是应用Matlab对语音信号进行频谱分析及滤波,首先通过网络和书籍查找有关本次作业所需的资料,编写相关程序,并通过Matlab软件运行得到相关波形频谱图。

在做作业的过程中,我将上课所学的理论知识运用到实践中。

通过这次应用Matlab对语音信号进行频谱分析及滤波,让我对Matlab的应用以及数字滤波器的设计有了更深层次的理解,每个程序中的语句表示什么意思也有了很清楚的了解。

在实践中增强了我的动手能力,并提高了我的综合能力,使自身得到了很大的锻炼。

另外,在设计滤波器的过程中由于个人知识学得不到位,后面的仿真结果不是很理想,我希望以后多查阅资料,多积累,多思考,只有这样,才能取得更大的进步,才能学有所用,学有所长。

 

5、程序附录

(1)采样+噪声

clear

clc

[x1,fs,bits]=wavread('E:

\?

?

?

?

.wav');%?

?

?

?

?

?

?

?

?

?

?

?

?

x1

sound(x1,fs);%?

?

?

?

?

?

?

?

N=length(x1)

fs%?

?

?

?

?

44100Hz

bits%?

?

?

?

16

x=x1(60001:

1:

120000);%?

?

?

?

?

?

60000?

?

?

?

N1=length(x)

figure

(1)

plot(x)%?

?

?

?

?

?

?

?

?

?

?

?

title('?

?

?

?

?

?

?

?

?

?

?

');

xlabel('?

?

?

n');

ylabel('?

?

A');

sound(x,fs);%?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

“?

?

?

?

k=0:

5999;

y1=fft(x,6000);%?

?

?

?

N=6000?

FFT?

?

figure

(2)

subplot(2,1,1),plot(k,abs(y1));

title('|X(k)|');

ylabel('?

?

?

');

subplot(2,1,2),plot(k,angle(y1));

title('arg|X(k)|');

ylabel('?

?

?

');

mean(x)%?

?

?

?

?

?

?

?

?

?

-2.1368e-04

d=randn(1,60000);%?

?

?

?

?

?

?

mean(d)

d=d/100;%?

?

?

?

?

?

?

x2=x+d;%?

?

?

?

?

?

?

sound(x2,fs);%?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

figure(3)

plot(x2)

title('?

?

?

?

?

?

?

?

?

');

xlabel('?

?

?

n');

ylabel('?

?

A');

k=0:

5999;

y2=fft(x2,6000);%?

?

?

?

N?

FFT?

?

figure(4)

subplot(2,1,1),plot(k,abs(y2));

title('?

?

?

?

?

|X(k)|');

ylabel('?

?

?

');

subplot(2,1,2),plot(k,angle(y2));

title('?

?

?

?

?

arg|X(k)|');

ylabel('?

?

?

');

(2)IIR?

?

?

?

?

%IIR?

?

?

?

?

clear

clc

[x1,fs,bits]=wavread('E:

\?

?

?

?

.wav');%?

?

?

?

?

?

?

?

?

?

?

?

?

x1

x=x1(60001:

1:

120000);%?

?

?

?

?

?

60000?

?

?

?

d=randn(1,60000);%?

?

?

?

?

?

?

mean(d);

d=d/100;%?

?

?

?

?

?

?

x2=x+d;%?

?

?

?

?

?

?

sound(x2,fs);%?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

fs=44100;

Ts=1/fs;

wp=2*pi*45000/fs;%?

?

?

?

?

?

ws=2*pi*50000/fs;%?

?

?

?

?

?

Rp=1;%?

?

?

?

Rs=100;%?

?

?

?

wp1=2/Ts*tan(wp/2);%?

?

?

?

?

?

?

?

?

?

?

?

ws1=2/Ts*tan(ws/2);

[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%?

?

?

?

?

?

?

?

?

?

[Z,P,K]=buttap(N);%?

?

butterworth?

?

?

?

?

?

?

[Bap,Aap]=zp2tf(Z,P,K);

[b,a]=lp2lp(Bap,Aap,Wn);%?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

[bz,az]=bilinear(b,a,fs);%?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

[H,W]=freqz(bz,az);%?

?

?

?

?

?

?

?

figure

(1)

plot(W*fs/(2*pi),abs(H))

grid

xlabel('?

?

/Hz')

ylabel('?

?

?

?

?

?

')

title('IIR?

?

?

?

?

')

f1=filter(bz,az,x2);

figure

(2)

subplot(2,1,1)

plot(x2)%?

?

?

?

?

?

?

?

?

title('IIR?

?

?

?

?

?

?

?

?

?

?

?

?

');

subplot(2,1,2)

plot(f1);%?

?

?

?

?

?

?

?

?

title('IIR?

?

?

?

?

?

?

?

?

?

?

?

?

');

sound(f1,44100);%?

?

?

?

?

?

?

?

F0=fft(f1,1024);

f=fs*(0:

511)/1024;

figure(3)

y2=fft(x2,1024);

subplot(2,1,1);

plot(f,abs(y2(1:

512)));%?

?

?

?

?

?

?

?

?

title('IIR?

?

?

?

?

?

?

?

?

?

?

')

xlabel('?

?

/Hz');

ylabel('?

?

');

subplot(2,1,2)

F1=plot(f,abs(F0(1:

512)));%?

?

?

?

?

?

?

?

?

title('IIR?

?

?

?

?

?

?

?

?

?

?

')

xlabel('?

?

/Hz');

ylabel('?

?

');

(3)FIR?

?

?

?

%FIR?

?

?

?

clear

clc

fs=44100;

x1=wavread('E:

\?

?

?

?

.wav');

x=x1(60001:

1:

120000);%?

?

?

?

?

?

60000?

?

?

?

d=randn(1,60000);%?

?

?

?

?

?

?

d=d/100;%?

?

?

?

?

?

?

x2=x+d;%?

?

?

?

?

?

?

sound(x2,fs);%?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

wp=2*pi*1000/fs;

ws=2*pi*1200/fs;

Rp=1;

Rs=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1