怎样用matlab分割音频文件(wav)或其他

怎样用matlab分割音频文件(wav)或其他,第1张

wavread函数可读入一个wav文件,如果为单声道就返回一个一维矩阵,表示每个采样点的量化值。如下:

[Y,FS,NBITS]=wavread(FILE)

Y为数据矩阵,FS为采样率,NBITS为量化位数,FILE为音频文件名。

如果你要截取[t1,t2]时间内的音频,

start=floor(t1FS)+1;

end=floor(t2FS);

R=Y[start:end];%R为截取后的数据

最后用函数wavwrite保存成新的wav文件,如

wavwrite(R,FS,NBITS,'newwave')

;

[y,fs,bits]=wavread('E:\MATLA\work\hnistwav');

sound(y,fs,bits); %回放该音频

Y=fft(y,4096); %进行傅立叶变换

subplot(2,1,1);

plot(y);

title('声音信号的波形');

subplot(2,1,2)

plot(abs(Y));

title('声音信号的频谱');

%你好,该程序读mywavwav文件,然后显示频谱以及波形。注意,mywavwav文件不要太长,否则运算会很慢。

[y,Fs,bits]=wavread('mywavwav');%读出信号,采样率和采样位数。

y=y(:,1);%我这里假设你的声音是双声道,我只取单声道作分析,如果你想分析另外一个声道,请改成y=y(:,2)

sigLength=length(y);

Y = fft(y,sigLength);

Pyy = Y conj(Y) / sigLength;

halflength=floor(sigLength/2);

f=Fs(0:halflength)/sigLength;

figure;plot(f,Pyy(1:halflength+1));xlabel('Frequency(Hz)');

t=(0:sigLength-1)/Fs;

figure;plot(t,y);xlabel('Time(s)');

利用MATLAB中的wavread命令来读入(采集)语音信号,将它赋值给某一向量。

MATLAB它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式。

matlab对一个音频信号进行频域分析可以参考文库的这篇论文,很详细的。

http://wenkubaiducom/linkurl=5MzXP9kk3ZK5fJH6AnzEOvSrtvYBq9ZueOM1gSYOW_cIb5jmP8fDUNzFihpphdZLeHoKUWWv_Y_VuHBpK4VbAw_WFSJH7MWfFqce6t0PRd_

两个相同采样率的wav文件才能合并 wav文件读进来按数方法合并

[X, fs] = wavread('youvegotmailwav');

[Y, fs] = wavread('hellowav');

Z = [Y; X];

wavwrite(Z,fs,'helloyouvegotmailwav');

欢迎分享,转载请注明来源:表白网

原文地址:https://h5.hunlipic.com/biaobai/4106132.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2024-04-16
下一篇2024-04-16

发表评论

登录后才能评论

评论列表(0条)

    保存