基于MATLAB的语音信号分析与处理系统的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字信号处理大作业
基于MATLAB的语音信号分析与处理系统的设计
班级:物联网1401
学号:
姓名:zk
目录
一、设计目的 (2)
二、设计内容及要求 (2)
2.1设计内容 (2)
2.2设计要求 (3)
三、详细设计过程 (3)
3.1语音信号的采集 (3)
3.2 原始语音信号的时域频域分析 (3)
3.3原始语音信号加噪 (5)
3.4设计滤波器 (6)
3.5 MATLAB语音信号处理界面设计 (8)
3.6 利用C语言得出声音带宽 (11)
四、调试结果 (11)
五、结论 (12)
参考文献 (13)
一、设计目的
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用 MATLAB和C语言作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。
二、设计内容及要求
2.1设计内容
①录制一段自己的语音信号(我是物联网1401班的张坤),并对录制的信号进行采样。
②画出采样后语音信号的时域波形和频谱图。
③给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应。
④利用设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化,回放语音信号。
⑤用 MATLAB 设计一信号处理系统界面。
⑥利用C语言对录制语音信号进行FFT变换(取其中的1024进行),计算出自己声带的带宽。
2.2设计要求
①学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。
②掌握在 Windows 环境下语音信号采集的方法。
③掌握数字信号处理的基本概念、基本理论和基本方法。
④掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。
⑤学会用 MATLAB 对信号进行分析和处理。
⑥学会用C语言进行FFT程序的编写和算法效果的仿真。
三、详细设计过程
3.1语音信号的采集
利用PC 机上的声卡和Windows 操作系统实现语音信号的的采集。打开“开始”菜单,选择“程序\附件\娱乐\录音机”项,打开Windows中自带的录音机程序,点击录音机程序界面中的录音按钮,开始声音录制。录完后点击放音按钮,可以实现所录音的重现。以文件名“zhangkun”保存入D:\ 中。文件存储器的后缀默认为.wav ,这是Windows 操作系统规定的声音文件存的标准。
3.2 原始语音信号的时域频域分析
利用MATLAB中的“audioread”命令来读入(采集)语音信号,将它赋值给某一向量。再对其进行采样,记住采样频率和采样点数。根据help文档,下面介绍audioread函数三种调用格式。
(1)[y,Fs] = audioread(filename)
从指定filename,文件中读取数据并返回采样数据,y和对于该数据,Fs 的采样率。
(2)[y,Fs] = audioread(filename,samples)。
读取所选的范围的音频采样在文件中,samples在哪里一个向量形式[start,finish]。
(3)[y,Fs] = audioread(___,dataType)
返回采样数据在数据范围对应dataType的'native'或'double',及可以在以前的语法中包含的任何输入参数。
对zhangkun.wav进行采样,选用方式(1)。程序如下:
Fs=16000;
[x,Fs]=audioread('D:\ai.wav');
然后,画出语音信号的时域波形,再对语音信号进行频谱分析。MATLAB提供了快速傅里叶变换算法FFT计算DFT的函数fft,其调用格式如下:y=fft(x,N);
参数xn为被变换的时域序列向量,N是DFT变换区间长度,当N大于xn的长度时,fft函数自动在xn后面补零。当N小于xn的长度时,fft函数计算xn 的前N个元素,忽略其后面的元素。
在本次设计中,利用fft对语音信号进行快速傅里叶变换,即可以得到信号的频谱特性。其程序如下:
figure(1)
subplot(2,1,1)
plot(x,'b');title('原始语音信号的时域波形')
N=length(x);n=0:N-1;
q=n*2^pi/N;
y=fft(x,N);
subplot(2,1,2)
plot(q/pi,abs(y),'b');title('原始语音信号频谱分析')
%sound(x,Fs)
图1 原始信号波形及频谱
3.3原始语音信号加噪
由于条件有限,找不到适当频率的噪声源,所以采用白噪声。MATLAB中产生高斯白噪声非常方便,直接用randn函数产生高斯分布序列。randn函数有两种基本调用格式:randn(n)和randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。实际选用randn(m,n)函数。语音信号添加噪声及其频谱分析的主要程序如下:
Noise=zeros(N,2);
Noise=0.01*randn(N,2);
Si=x+Noise;
figure(2)
subplot(2,1,1)
plot(Si,'b');
title('原始语音信号加噪时域波形');
sound(Si);
S=fft(Si);
subplot(2,1,2)
plot(q/pi,abs(S),'b')
title('原始语音信号加噪频谱分析');
程序结果如下图: