❶ 为什么音频文件要转成txt格式再在Matlab里打开
音频文件可用wavread打开,不须转为txt文件。但是,若是音频文件已保存为txt文件了,就不能用wavread打开了,只能用你程序中的方法打开。
❷ MATLAB音频文件读取
1、用audioread('');函数读取电脑中的音频文件,参数是音频文件的路径:[sampledata,FS] = audioread('F:1.mp3');sampledata保存音频信号数据,FS是音频采样率,MP3格式的采样率一般为44100;2、判断音频数据是否是双声道,如果是双声道则保留一个声道的数据,用calsample.m文件的函数完成此功能,文件内容如下:function sample = calsample(sampledata,FS)temp_sample = resample(sampledata,1,FS/11025);[m,n] = size(temp_sample);if (n == 2)sample = temp_sample(:,1);elsesample = temp_sample;endend3、对音频数据进行快速傅里叶变换得到频谱图,并选取scope区域内的能量最大并且能量增幅最大的点作为峰值点,进行特征提取,keypoint.m文件内容如下:function point = keypoint(sample,scope)%对音频数据进行快速傅里叶变换,得到变换后的数据为b,频率为f,时间为t[b,f,t] = specgram(sample,1024,11025,hanning(1024),256);specgram(sample,1024,11025,hanning(1024),256);%绘制频谱图hold on;energy = abs(b);%根据快速傅里叶变换后的数据进行能量计算%energy = sample;diffenergy = caldiffenergy(energy);%计算能量差分[m,n] = size(energy);%获取能量矩阵的大小%f = (0:4);%t = (0:4);f_unit = max(f)/(length(f)-1);%根据频率点个数计算频率单位长度t_unit = max(t)/(length(t)-1);%根据时间点个数计算时间单位长度k = 1;l = 1;p = 1;num = 1;point.t = 0;point.f = 0;%point结构体数组用来保存峰值点temp.t = 0;temp.f = 0;%temp结构体数组用来保存计算中的临时点count = 0;%count为零表示在当前scope中未找到峰值点x_f=0;y_t=0;plot(x_f,y_t);hold on;for i = 1:m-scope+1for j = 1:n-scope+1%找出大小为scope的子矩阵中的最大元素的位置并保存[x_f,y_t] = find(energy(i:i+scope-1,j:j+scope-1)==max(max(energy(i:i+scope-1,j:j+scope-1))));x_f = x_f + i – 1;y_t = y_t + j – 1;%找出大小为scope的子矩阵中的差分最大元素的位置并保存[diffx,diffy] = find(diffenergy(i:i+scope-1,j:j+scope-1)==max(max(diffenergy(i:i+scope-1,j:j+scope-1))));diffx = diffx + i – 1;diffy = diffy + j – 1;count = 0;%如果最大元素和差分最大元素都为同一个位置则该点为峰值点,保存在temp中for k = 1:length(x_f)for l = 1:length(diffx)if (x_f(k) == diffx(l)) && (y_t(k) == diffy(l))temp(num).f = x_f(k) * f_unit;temp(num).t = y_t(k) * t_unit;%plot(temp(num).t,temp(num).f,'.');num = num + 1;count = 1;%在scope中找到一个峰值点则不再记录其它相同的点break;endendif count == 1%scope中多个峰值点只保留第一个break;endendendend%将temp中保存的峰值点画在图上,多个scope中找到的相同峰值点只画一次len = 1;point(1).f = temp(1).f;point(1).t = temp(1).t;plot(point(1).t,point(1).f,'.');for i = 2:num – 1for j = 1:lenif (temp(i).f == point(j).f) && (temp(i).t == point(j).t)break;endendif j == len && (temp(i).f ~= point(j).f) && (temp(i).t ~= point(j).t)len = len + 1;point(len).f = temp(i).f;point(len).t = temp(i).t;plot(point(len).t,point(len).f,'.');endendhold offend4、keypoint(sample,scope);函数中用到的caldiffenergy(energy);函数内容在caldiffenergy.m文件中,内容如下:function diffenergy = caldiffenergy(energy)v = diff(energy');[x,y] = size(v);for i = 1:yzero(i) = 0;enddiffenergy = abs(([zero;v])');end
❸ 在matlab中怎样实现对声音的导入,分析与处理
1、首先启动MATLAB软件。
❹ matlab读取mp3音频
matlab读取MP3音频数据,可以用audioread()函数, 用法很简单.
[Y, FS]=audioread(FILENAME)
filename为指定载入的音频文件名称(单引号引出回的字符串答)
返回数据Y为所读取的音频数据,FS为采样频率
这个函数可以读取多种格式的音频文件,比如wav, mp3, flac, ogg等
例:
[y,Fs]=audioread('1.mp3');%播放读入的数据p=audioplayer(y,Fs);play(p);
❺ matlab读取mp3
你可以试下用音频转换软件将mp3格式转换成wav格式,然后x=wavread('\…….\xxx.wav');plot(x);\……\里面是文件路径,plot画出文件图形
❻ 如何在matlab中播放声音
wavread进来一段音频再wavplay,或者sound函行顷数,都是播放声音用的。wav组合档橘陆多用伍陆于wav格式音频。
❼ MATLAB怎么读取音频,怎么写编程,要完整的
(MP3格式)
❽ matlab 如何播放声音
可以用matlab函数sound实现。该函数的输入参量是音频数据向量、采样频率和转换内位数。我们可以自己写些声音数容据。下面的声音声调和频率有关,长度和数据长度有关:例如:sound(sin(2*pi*25*(1:4000)/100));响两声就是:sound(sin(2*pi*25*(1:4000)/100));sleep(1);sound(sin(2*pi*25*(1:4000)/100));MATLAB也自带了很多声音:%鸟声load chirpsound(y,Fs)%锣声load gongsound(y,Fs)%哈里路亚load handelsound(y,Fs)%笑声load laughtersound(y,Fs)%啪哒声load splatsound(y,Fs)%火车load trainsound(y,Fs)
❾ 请教:用MATLAB怎样打开音频文件
wavread(fstr)在文件fstr中返回采样数据。helpwavread可获得更多信息。wavwrite(sv,f,fstr)以采样频率f将采样声音向量sv写入文件fstr中。