数字信号处理大作业

更新时间:2024-04-19 23:05:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《数字信号处理》课题设计

基于Matlab的音频采样

姓名:谌海龙 学号:20134361 指导教师:仲元红 班级:13电子4班

成绩:

重庆大学通信工程学院

2015年11月

基于MATLAB的音乐采样实验

一、实验内容及原理

内容:

1、用fs=44,100Hz采集一段音乐;

2、改变采样率,用fs=5,512Hz采集一段音乐,体会混叠现象; 3、录制一段自己的声音,试验当fs=?时,发生混叠?

4、在噪声环境中录制一段自己的声音,试采用一种方法将噪声尽可能地消除。

原理:

根据奈奎斯特采样定律,如果连续时间信号xa?t?是最高截止频率为?m的带限信

?a?t?通过一个增益为T,截止频率为号,采样频率?s?2?m,那么让采样信号x?s/2的理想低通滤波器,可以无失真地恢复出原连续时间信号xa?t?。否则,?s?2?m会造成采样信号中频谱混叠现象,不能无失真地恢复连续时间信号。

采样过程

连续信号xa?t??p?t?采样信号?a?t?x采样脉冲

xa?t??2?sXa(j?)1??m0P(j?)?m??s??s0?s2?s?(j?)Xa1/T0???sm?Xa(j?)1/T?s??2?s??s0?s2?s3?s?采样信号的频谱混叠

1Xa?j??op(t)t??mo?m?P?j??

采样信号的频谱

人发出的声音频率在300~3400Hz,可以通过加低通滤波器消除高频噪声。

二、实验过程

脚本文件ffts.m的功能是画y的频谱图 function ffts(y,fs)

NFFT1=2^nextpow2(length(y)); fy=fft(y,NFFT1)/length(y); p=2*abs(fy(1:NFFT1)); f=fs/2*linspace(0,1,NFFT1); plot(f,p);

1、用fs=44,100Hz采集一段音乐;

脚本文件:work1.m clear;clc;close all;

[y,fs,nbits]=wavread('work1.wav'); y1=y(1:600000); ffts(y1,fs);

axis([0 23000 0 0.02]);

title('用44100Hz抽样work1.wav的频谱'); sound(y1,44100);

wavwrite(y1,44100,'work1_1.wav');

分析:根据采样定理,当采样频率fs<2fm时,会产生频率混叠现象,听起来的

声音会有种很多时刻的声音重叠的效果。由于人耳所能听到的声音在20Hz到20000Hz之间,因此当采样频率为44100Hz时刚好满足采样定理所要求的条件fs>2fm,所以这也验证了抽样定理中对于采样频率的要求fs≥2fm,其中fm为信号的频谱中最高频率分量

2、改变采样率,用fs=5,512Hz采集一段音乐,体会混叠现象;

脚本文件:work2.m clear;clc;close all;

[y,fs,nbits]=wavread('work1.wav'); y1=y(1:8:600000); ffts(y1,5512); axis([0 3000 0 0.02]);

title('用5512Hz抽样work1的频谱'); sound(y1,5512);

wavwrite(y1,5512,'work2_2.wav');

分析:由1可知,当用5510Hz对音频进行采样时,不满足采样定理约束的条件,因此频谱会出现混叠,采样后的声音听起来也会出现混叠的效果,音质远远不如当采样频率为44100Hz时。

3、录制一段自己的声音,试验当fs=?时,发生混叠?

脚本文件:work3.m clear;clc;close all;

[y,fs]=audioread('voice.m4a');

Fs=[16000 8000 5333 4000 3200 2666 2285 2000]; de=[1 2 3 4 5 6 7 8]; for m=1:8

y1=y(1:de(m):200000); subplot(4,2,m) ffts(y,Fs(m));

title(['用',num2str(Fs(m)),'Hz抽样voice的频谱']); sound(y1,Fs(m));

pause(15); end

y1=y(1:de(3):200000); wavwrite(y1,Fs(3),'voice.wav');

分析:分别用16000Hz、8000 Hz、5333 Hz、 4000 Hz、 3200 Hz、 2666Hz、 2285 Hz、 2000 Hz8种采样频率进行采样,播放采样后的音频聆听效果,观察频谱图,得出在采样频率为5300Hz时恰好发生频谱混叠。采样频率低于5333Hz时,采样频率越低,混叠越严重。

4、在噪声环境中录制一段自己的声音,试采用一种方法将噪声尽可能地消除。

脚本文件:work4.m clear;clc;close all;

[y,fs]=audioread('work4.m4a'); b=fir1(62,2000*2*pi/fs,hann(62+1)); yy=filter(b,1,y); sound(yy,fs);

subplot(211) ffts(y,fs); title('录音频谱'); subplot(212) ffts(yy,fs);

title('消除噪音后的频谱'); wavwrite(yy,fs,'work4_4.wav');

三、总结和分析

通过本次实验,进一步加深DFT算法原理和基本性质的理解,熟悉了FFT算法原理,理解和掌握了音频信号各参数的意义,通过对音频信号加入噪声而去掉噪声的过程学会了设计低通滤波器的方法,巩固了课程理论知识。理论的学习加上实验的理解,使我对奈奎斯特采样定律有了更加深刻的理解。通过查看帮助学会了如何运用FFTl对一个信号求频谱,进一步加深了我对matlab帮助的使用。在本次试验中自己编写的一个函数,使我对于写函数、用函数有了更深的理解。在实验过程中也遇到了许多问题,通过查阅资料、与同学讨论,最终解决了这些问题。本次试验也让我更加深刻的明白了Matlab的重要性,特别是对于专业上的一些问题,可以更好的让我们理解理论上的一些深奥的问题。

subplot(211) ffts(y,fs); title('录音频谱'); subplot(212) ffts(yy,fs);

title('消除噪音后的频谱'); wavwrite(yy,fs,'work4_4.wav');

三、总结和分析

通过本次实验,进一步加深DFT算法原理和基本性质的理解,熟悉了FFT算法原理,理解和掌握了音频信号各参数的意义,通过对音频信号加入噪声而去掉噪声的过程学会了设计低通滤波器的方法,巩固了课程理论知识。理论的学习加上实验的理解,使我对奈奎斯特采样定律有了更加深刻的理解。通过查看帮助学会了如何运用FFTl对一个信号求频谱,进一步加深了我对matlab帮助的使用。在本次试验中自己编写的一个函数,使我对于写函数、用函数有了更深的理解。在实验过程中也遇到了许多问题,通过查阅资料、与同学讨论,最终解决了这些问题。本次试验也让我更加深刻的明白了Matlab的重要性,特别是对于专业上的一些问题,可以更好的让我们理解理论上的一些深奥的问题。

本文来源:https://www.bwwdw.com/article/2cvp.html

Top