MATLAB 声音文件处理

由于最近的Project要做声音分析,需要用到MATLAB,之前一直没怎么接触过,所以乘着做Project学习下。真的用了才知道MATLAB真是神器啊,呵呵~~~其强大的函数库和数学运算能力彻底让我折服了。言归正传,我们来讨论下用MATLAB做声音文件处理。

1. 读取WAV声音文件

% wavread(filename) 读取一个WAVE文件,并返回采样数据到向量y中,Fs表示采样频率, bits表示采样位数 [y, Fs, bits] = wavread('drum.wav'); %假设声音文件有两个声道,我们只分析第一个声道,如果要分析第二个声道可以改为:ft=y(:,2); ft = y(:,1); sigLength = length(ft); %获取声音长度 %可以使用sound函数来播放声音 sound(y, Fs, bits)
2. 绘制波形图
t=(0:sigLength-1)/Fs; figure; subplot(2,1,1); plot(t, ft), title('Plot of the Tone'),grid; xlabel('Time(s)'); ylabel('Amplitude');

3. 绘制振幅频谱图
%Y = fft(X) 使用快速傅里叶变换算法返回向量X的离散型傅里叶变换 %Y = fft(X,n) 返回n点的离散傅里叶变换,如果向量X的长度小于n,函数要将向量X补零到长度n;如果向量X的长度大于n, 则函数阶段X使之长度为n。若X是矩阵,按相同方法对X进行处理。 Y = fft(ft,sigLength); halfLength = floor(sigLength/2); Pyy =Y(1:halfLength + 1); % 只选取前半截部分
 
波形的傅里叶变换返回震级和相位信息,并且用复数的形式表达,通过计算绝对值来获取其频率的振幅
Pyy = abs(Pyy);%用于计算复向量的Y的振幅 f = ((0:halfLength)+1)* Fs/sigLength; subplot(2,1,2); plot(f,Pyy), title('Frequency spectrum'),grid; xlabel('Frequency(Hz)'); ylabel('Amplitude');
 
4. 绘制能量频谱图
Y = fft(ft,sigLength); halfLength = floor(sigLength/2); Pyy =Y(1:halfLength + 1); % 只选取前半截部分 Pyy = abs(Pyy);%用于计算复向量的Y的振幅 f = ((0:halfLength)+1)* Fs/sigLength; %通过点数调整比例,从而使振幅不依赖于信号长度或采样频率,说实话这部分还不是很明白 Pyy = Pyy/sigLength; Pyy = Pyy.^2; %求平方得到能量 % 乘以2, 请参照 http://www.mathworks.com/support/tech-notes/1700/1702.html if rem(sigLength, 2) %奇数的 n fft 不包含奈奎斯特(Nyquist)点 Pyy(2:end) = Pyy(2:end)*2; else Pyy(2:end -1) = Pyy(2:end-1)*2; end plot(f/1000, 10*log10(Pyy), 'k') xlabel('Frequency (kHz)') ylabel('Power (dB)')
 
引用:
The MethWorks Support. Technique notes 1702,  http://www.mathworks.com/support/tech-notes/1700/1702.html

转载于:https://www.cnblogs.com/wubo/archive/2011/08/02/2253507.html

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Matlab声音界面处理编程是一种基于Matlab的声音处理技术,它可以处理各种音频数据,如音乐、语音、噪声等。在Matlab环境下,我们可以使用各种算法和工具来处理这些音频数据,以得出有用的信息。 Matlab声音界面处理编程可以用于许多应用程序,如语音识别、音频编辑、音乐合成等。该工具可以帮助用户解决音频相关问题。用户可以通过这个工具来降噪、滤波、去回声等,以达到更好的音质效果。 使用Matlab声音界面处理编程时,用户需要熟悉声音处理的基本概念和技术。例如,用户需要了解数据采样、声音编码和数字信号处理等基础知识。同时,还需要熟悉Matlab语言和函数库。在开始开发应用程序之前,用户还需要了解Matlab的GUI编程和创建用户界面的基本技能。 总之,Matlab声音界面处理编程是一种强大的工具,可以让用户处理各种音频数据并生成有用的信息。它不仅可以帮助用户提高音乐和语音的质量,还可以用于许多实际应用程序。 ### 回答2: MATLAB是一种常用的数据分析和处理软件,也可以用于声音信号的处理和编程。 MATLAB的声音界面可以帮助开发者快速的完成声音信号的处理和分析。 在MATLAB声音界面中,可以使用内置的函数和工具箱来处理声音信号,如:读取和写入声音信号、音频播放和录制等。通过这些工具,可以快速的对声音信号进行分析、改变音调、增强音质等操作。 除了内置的函数和工具箱,MATLAB还有许多第三方工具箱和代码库,如音频信号处理工具箱(Audio Signal Processing Toolbox)和声纹识别工具箱(Voicebox),可以帮助开发者更好的完成声音信号的处理和编程。 在使用MATLAB声音界面时,需要对声音信号的理论知识和MATLAB编程基础有一定的掌握。同时也需要注意声音信号的采样频率、量化位数等参数的设置,以确保得到精确的声音信号处理结果。 总的来说,MATLAB的声音界面是一个功能强大的声音信号处理工具,可以帮助开发者快速的实现对声音信号的处理和编程,大大提高了声音信号的处理效率和精度。 ### 回答3: Matlab是一种非常流行的科学计算软件,在处理声音信号方面也有很强的能力。Matlab通过加载音频文件、对声音进行采样、调整声音的频谱等方式进行声音信号处理和分析。 Matlab的声音界面处理编程主要包括以下几个步骤:首先,需要导入音频文件并进行采样,采样的频率通常为44.1kHz或48kHz,这取决于音频文件的采样频率。其次,需要进行滤波和降噪处理,以帮助去除杂音和其他干扰。接下来,可以执行频谱分析、时域分析、幅度谱和相位谱分析等操作,这些操作可以帮助我们更好地理解声音的特性。最后,还可以对声音进行编码、解码和压缩等操作,以便更好地存储和传输音频文件。 在Matlab中,有很多函数和工具箱可用于声音处理和分析,例如sound、audioread、audiowrite、fft、spectrogram等。除此之外,Matlab还有第三方工具箱可用于语音识别、信号过滤、基频分析等等。 总之,Matlab是一个强大的声音处理工具,可用于音频信号处理、音频分析和声音编码等方面。对于研究者和工程师而言,熟练掌握Matlab的声音处理和分析功能,将会是一项非常有价值的技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值