MATLAB课程设计报告语音信号的采集与处理Word文件下载.docx
- 文档编号:14669271
- 上传时间:2022-10-23
- 格式:DOCX
- 页数:24
- 大小:240.32KB
MATLAB课程设计报告语音信号的采集与处理Word文件下载.docx
《MATLAB课程设计报告语音信号的采集与处理Word文件下载.docx》由会员分享,可在线阅读,更多相关《MATLAB课程设计报告语音信号的采集与处理Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
二、实验内容
1、利用windows自带的录音机或者其它录音软件,录制几段语音信号(要有几种不同的声音,要有男声、女声)。
2、对录制的语音信号进行频谱分析,确定该段语音的主要频率范围,由此频率范围判断该段语音信号的特点(低沉or尖锐?
)
3、利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。
这里涉及到采样下重采样的问题,请大家思考如何去做。
4、实现语音信号的快放、慢放、倒放、回声、男女变声。
5、对采集到的语音信号进行调制与解调,观测调制与解调前后信号的变化。
6、对语音信号加噪,然后进行滤波,分析不同的滤波方式对信号的影响。
7、如果精力和时间允许,鼓励利用MATLABGUI制作语音信号采集与分析演示系统。
三、MATLAB仿真
任务一(陈康负责)
1.利用频谱的分析
利用Windows下的录音机,录制一段男生和女生的语音,存为*.WAV的文件。
然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。
首先画出语音信号的时域波形;
然后对语音号进行快速傅里叶变换(FFT变换),得到信号的频谱特性,分析语音信号频谱。
源程序:
fs=44100;
[x,fs,Nbits]=wavread('
E:
\GQQQ\leo'
);
derta_fs=fs/length(x);
t=0:
1/44100:
(length(x)-1)/44100;
sound(x,fs);
%对加载的语音信号进行回放
figure
(1)
plot(t,x)%做原始语音信号的时域图形
title('
原始语音信号'
);
xlabel('
timen'
ylabel('
fuzhin'
n=length(x);
%求出语音信号的长度
y1=fft(x,n);
%傅里叶变换
w=1/n*[0:
n-1]*fs;
figure
(2)
plot([-fs/2:
derta_fs:
fs/2-derta_fs],abs(fftshift(y1)*2/n));
%做原始语音信号的FFT频谱图
原始语音信号FFT频谱'
)
频谱分析对比
运行结果:
女生:
频谱分析:
从300hz到2000hz都有分布,主要集中在300—1200Hz,声音尖锐,是女生频谱。
男生:
从200hz到1000hz都有分布,集中在300—1000Hz声音低沉,是男生频谱。
任务二(詹筱珊负责)
利用采样定理,对该段语音信号进行采样,观察不同采样频率(过采样、欠采样、临界采样)对信号的影响。
clear;
[y,fs,bits]=wavread('
\GQQQ\WOMAN'
%x语音数据fs采样频率bits采样点数
sound(y,fs,bits);
%话音回放
n=length(y);
derta_fs=fs/length(y);
Y=fft(y,n);
figure
(1);
subplot(2,1,1);
plot(y);
原始信号波形'
subplot(2,1,2);
fs/2-derta_fs],abs(fftshift(Y)*2/n));
原始信号频谱'
grid
y1=decimate(y,2);
%采样频率为22050Hz,过采样
fs1=fs/2;
sound(y1,fs1,bits);
n1=length(y1);
derta_fs=fs/length(y1);
Y1=fft(y1,n1);
figure
(2);
plot(y1);
过采样信号波形'
fs/2-derta_fs],abs(fftshift(Y1)*2/n1));
过采样信号频谱'
y2=decimate(y,4);
%每4个取一个,采样频率为11025Hz接近临界采样
fs2=fs/4;
sound(y2,fs2,bits);
n2=length(y2);
derta_fs=fs/length(y2);
Y2=fft(y2,n2);
figure(3);
plot(y2);
临界采样信号波形'
fs/2-derta_fs],abs(fftshift(Y2)*2/n2));
临界采样信号频谱'
y3=decimate(y,8);
%抽取函数,频率变为原来1/8,欠采样
fs2=fs/8;
n3=length(y3);
derta_fs=fs/length(y3);
Y3=fft(y3,n3);
figure(4);
plot(y3);
欠采样信号波形'
fs/2-derta_fs],abs(fftshift(Y3)*2/n3));
欠采样信号频谱'
任务三(郭前负责)
实现语音信号的快放、慢放、倒放、回声、男女变声
%变速-快放%
fs=25600;
[z,fs,nbits]=wavread('
%读取声音文件
derta_fs=fs/length(z);
x=z(:
1);
%读入的y矩阵有两列,取第1列
y1=voice(x,1.5);
%调整voice()第2个参数转换音调,>
1降调,<
1升调,y1为x转换后的声音
w=1.5;
F=w*fs;
%w>
1为快放,w<
1为慢放
sound(y1,F)
N=length(x);
M=length(y1);
n=0:
N-1;
m=0:
M-1;
X=fft(x);
Y=fft(y1);
%傅里叶变换
T=1/fs;
T1=1/(fs*w);
f=n/N*fs;
f1=m/M*fs*w;
t=n*T;
t1=m*T1;
figure;
plot(t,x);
xlabel('
t/s'
幅值'
转换前的波形'
plot(t1,y1);
转换后的波形'
fs/2-derta_fs],abs(fftshift(X))*2/N);
frequency/Hz'
转换前的频谱'
fs/2-derta_fs],abs(fftshift(Y))*2/N);
转换后的频谱'
快放:
快放之后时间缩短。
慢放:
慢放之后时间变长。
倒放
fs=22050;
[x,fs,Nbits]=wavread('
1/22050:
(length(x)-1)/22050;
%对加载的语音信号进行回放
y=flipud(x)%对加载的语音信号实现翻转函数
plot(x);
%声音的时域波形
原声音的波形'
倒放后声音的波形'
wavplay(y,fs);
回声:
[y,fs,nbits]=wavread('
x=y(:
z=[zeros(50000,1);
x];
%延时50000个点
x1=[x;
zeros(50000,1)];
%使原声音长度与延时后相等
y1=x1+0.4*z;
%原声+延时衰减
figure
(2)
加入回声的波形'
sound(5*y1,fs,nbits);
男声转换为女声
y1=voice(x,0.71);
Fs=2*fs;
%2倍频
T=1/Fs;
T1=1/Fs*0.71;
f=n/N*Fs;
f1=m/M*Fs/0.71;
derta_Fs=Fs/length(x);
derta_Fs1=Fs/length(y1);
magnitude'
plot([-Fs/2:
derta_Fs:
Fs/2-derta_Fs],abs(fftshift(X)*2/N));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 课程设计 报告 语音 信号 采集 处理