资源描述:
《matlab处理声音文件》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Matlab处理声音文件摘要:《信号与系统》这门课是大多数工程类课表中的一个重要组成部分,在学习《信号与系统》这门课时,我们需要熟练地应用Matlab来采集和处理音频信号,图像信号等并绘出它们的波形和频谱。利用Matlab我们可以灵活方便地分析和处理声音文件。本文介绍了用Matlab处理声音文件的基本流程,并绘制了音频信号的相关波形和频谱。关键词:Matlab音量标准化声道分离数字滤波数据转换引言:MATLAB是美国MathWorks公司推出的一种面向工程和科学计算的交互式计算软件。它以矩阵运算为基础,把计算、可视化、程序设计融合在一个简单易用的交互式工作环境中,是一款数
2、据分析和处理功能都非常强大的工程实用软件。本文主要介绍Matlab在处理简单声音文件方面的使用。正文:1.设计要求:(1)了解语音信号的特点;(2)掌握数字滤波器的参数选择及设计方法;(3)掌握数字滤波器的应用方法及应用效果;(4)提高Matlab下的程序设计能力及综合应用能力。2.系统的组成及工作原理分析和处理声音文件,首先要对声音信号进行采集,MATLAB的数据采集工具箱提供了一整套命令和函数,通过调用这些函数和命令,可直接控制声卡进行数据采集。Windows自带的录音机程序也可驱动声卡来采集语音信号,并能保存为WAV格式文件,供MATLAB相关函数直接读取、写入或播
3、放。本文以WAV格式语音信号作为分析处理的输入数据,用MATLAB处理声音文件的基本流程是:先将WAV格式语音信号经wavread函数转换成MATLAB列数组变量;再用MATLAB强大的运算能力进行数据分析和处理,如时域分析、频域分析、数字滤波、信号合成、信号变换、识别和增强等等;处理后的数据如是音频数据,则可用wavwrite转换成WAV格式文件或用sound、wavplay等函数直接回放。3.实验内容,调试及测试结果(1)音量标准化在实际录制语音信号的过程中常有音轻问题,因此在录制声音过程中需要对声音电平进行量化处理,使音量实现标准化。利用Matlab很容易实现音量标
4、准化,即最大电平对应最高量化比特。基本步骤是:1.利用wavread函数将WAV文件转换成列数组变量:2.求出数组变量的极值并对所有元素作归一化处理;3.用wavwrite函数还原成音量标准化的WAV文件。以微软自带的“Windows拨出电话声.wav”语音信号为例,先将其复制另存到文件名为XPexit.wav的Matlab当前目录中,再通过音量标准化后保存为XPquit.wav文件。以下为其实现程序:clear;closeall;clc; [Y,FS,NBITS]=wavread('XPexit.WAV');%将WAV文件转换成变量FS,NBITS,%显示采样频率和量化
5、比特 Ym=max(max(max(Y)),max(abs(min(Y)))),%找出双声道极值 X=Y/Ym;%归一化处理 wavwrite(X,FS,NBITS,'XPquit.wav')%将变量转换成WAV文件测试结果:再在程序后编写sound(X),试听后可以发现经标准化处理后,声音变得稍微大了。(2)声道分离合并与组合立体声或双声道音频信号有左右两个声道,利用MATLAB实现双声道分离、两路声道合并和两个单声道组合成一个双声道等效果,实际上是利用了MATLAB的矩阵抽取、矩阵相加和矩阵重组运算。以(1)中生成的XPquit.wav为例,以下为其实现分离,合并和组
6、合的程序:clear;closeall;clc; [x,FS,NBITS]=wavread('XPquit.WAV');%将WAV文件转换成变量 x1=x(:,1);%抽取第1声道 x2=x(:,2);%抽取第2声道 wavwrite(x1,FS,NBITS,'XPquit1.WAV');%实现1声道分离 wavwrite(x2,FS,NBITS,'XPquit2.WAV');%实现2声道分离 %如果合并位置不对前面补0%声道长度不对后面补0 x12=x1+x2;%两路单声道列向量矩阵变量合并 x12m=max(max(x12),abs(m
7、in(x12))),%找出极值 y12=x12./x12m;%归一化处理 wavwrite(y12,FS,NBITS,'XPquit12.WAV');%实现两路声道合并 %如果组合位置不对前面补0--声道长度不对后面补0 x3=[x1,x2];%两路单声道变量组合 wavwrite(x3,FS,NBITS,'XPquit3.WAV');%实现两路声道组合测试结果:在以上程序后分别一次编写sound(x1),sound(x2),sound(x12),sound(x3)试听声道分离,合并和组合的效果,发现其声音