大三时数字信号处理做过一个简单的语音信号处理。复制过来。
课题内容
录制一段语音信号,对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出 滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;最后,实现对原始信号进行处理,包括:加噪声、快放、慢放、变声等。
具体实现
1.语音信号的采集
利用手机录音机,录制一段话音(我们所录的是---“现在所录的是男声”)。然后在Matlab软件平台下,利用函数audioread对语音信号进行采样。通过audioread函数的使用,我们很快理解了采样频率、采样位数等概念。
2.原始语音信号的频谱分析
我们首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
程序如下:
[x,fs]=audioread('nansheng.wav'); %打开语音信号
sound(x,fs); %播放语音信号
N=length(x); %长度
n=0:N-1;
w=2*n*pi/N;
y1=fft(x); %对原始信号做FFT变换
subplot(2,1,1);
plot(n,x) %做原始语音信号的时域波形图
title('原始语音信号时域图');
xlabel('时间t');
ylabel('幅值');
subplot(2,1,2); %做原始语音信号的频谱图
plot(w/pi,abs(y1));
title('原始语音信号频谱')
xlabel('频率Hz');
ylabel('幅度');
波形如下:
![14ec586e8f0b2d559c2c178d8c38c1f3.png](https://i-blog.csdnimg.cn/blog_migrate/8b79991af2f91c6d188ae3380a33d137.jpeg)
3.加噪语音信号并对其FFT频谱分析
程序如下:
[x,fs]=audioread('mei.wav');
n=length(x);
x_p=fft(x,n);
f=fs*(0:n/2-1)/n;
figure(1)
subplot(2,1,1)