C# 如何读取MP3文件音频频率以0到99的数值保存到TXT文件中?
因为要绘制波形图,波形图以柱状来展现,所以需要将MP3文件提取0到99之间的数据来绘制波形图。...
因为要绘制波形图,波形图以柱状来展现,所以需要将MP3文件提取0到99之间的数据来绘制波形图。
展开
1个回答
展开全部
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); else sample = temp_sample; end end 3、对音频数据进行快速傅里叶变换得到频谱图,并选取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)/
追问
用C#如何实现,你给的代码,我看的不是很懂,能否写一段?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询