matlab 读取mp3文件,MATLAB音频文件读取
1、用audioread('');函数读取电脑中的音频文件,参数是音频文件的路径: [sampledata,FS]=audioread('F:1.mp3'); sampledata保存音频信号数据,FS是音频采样率,MP3格式的采样率一般为44100; 2、判断音频数据是否是双声道,如果是双声道则保留一个声道的数据,用calsample.m文件的函数完成此功能,文件内容如下: functionsample=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文件内容如下: functionpoint=keypoint(sample,scope) %对音频数据进行快速傅里叶变换,得到变换后的数据为b,频率为f,时间为t [b,f,t]=specgram(sample,1024,11025,hanning(1024),256); specgram(sample,1024,11025,hanning(1024),256);%绘制频谱图 holdon; 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); holdon; fori=1:m-scope+1 forj=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中 fork=1:length(x_f) forl=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; end end ifcount==1%scope中多个峰值点只保留第一个 break; end end end end %将temp中保存的峰值点画在图上,多个scope中找到的相同峰值点只画一次 len=1; point(1).f=temp(1).f; point(1).t=temp(1).t; plot(point(1).t,point(1).f,'.'); fori=2:num-1 forj=1:len if(temp(i).f==point(j).f)&&(temp(i).t==point(j).t) break; end end ifj==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,'.'); end end holdoff end 4、keypoint(sample,scope);函数中用到的caldiffenergy(energy);函数内容在caldiffenergy.m文件中,内容如下: functiondiffenergy=caldiffenergy(energy) v=diff(energy'); [x,y]=size(v); fori=1:y zero(i)=0; end diffenergy=abs(([zero;v])'); end
阅读全文 >
matlab 读取mp3文件,MATLAB音频文件读取相关推荐
- Mac os系统上一款界面简洁时尚、功能强大的视频编辑软件。通过使用 Wondershare Filmora您会很容易地创建从视频文件,音频文件,并与转场。
Wondershare Filmora9 Mac版是Mac os系统上一款界面简洁时尚.功能强大的视频编辑软件.通过使用 Wondershare Filmora您会很容易地创建从视频文件,音频文件,并 ...
- MATLAB读写.wav和.raw音频文件
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.wav文件格式 二.matlab代码 1.fread读.wav文件 2.fread读.raw音频文件 3.wav转 ...
- spring boot循环控制读取本地视频或音频文件
1.后台配置类 UploadFilePathConfig.java package com.xxxxxx.controller;import org.springframework.beans.fac ...
- java播放ape音频,Java使用Jaudiotagger读取Mp3及Flac音频操作
Jaudiotagger是jid3lib的扩展,比jlid3lib强大更多,支持更多格式. MP3信息的读取: ? try { MP3File file = new MP3File("mmt ...
- Android合并两个MP3格式的音频文件
首先,简单的读取两个mp3文件流,然后合并到一个输出流,输出到文件中,这种简单粗暴的方法肯定是不行的,因为 mp3文件有文件头信息和文件尾信息,要处理这些. 所以正确的方案是:要先正确取到各个mp3文 ...
- php 音频顺序播放,MP3播放器音频文件不按顺序播放的解决方法,简单实用
MP3播放器对于现在的我们来说很多已经是过去了,但是我们总会有用到它的时候:当你听一些录音课程或者评书故事,亦或者使用迷你音响播放歌曲时常会发现拷贝进MP3播放器中的音频文件根本不按照你自己的想象进行 ...
- 百度富文本编辑器ueditor支持上传mp3格式等音频文件的方法
百度富文本编辑器ueditor算得上比较强大的了,但是有一个比较令人难受的问题,就是不支持本地上传音频文件.ueditor自带的mp3功能是直接在百度音乐里面搜索加进去的,显而易见这个不是我们想要的, ...
- php speex转码为mp3,将spx音频文件转换为mp3
我必须将spx音频文件(ogg格式)转换为mp3文件.我已经尝试了几件事,至今没有任何工作.将spx音频文件转换为mp3 我试过使用Naudio.Lame库中的LameMP3FileWriter. p ...
- swf文件提取音频文件方法
手头有几个古早swf文件,想提取音质好的音频文件,搜索到了几个方法: 一.使用swf提取MP3的软件 下载不到免费好用的软件,作罢: 二.使用格式转换软件直接转换音频 使用格式工厂试了下,经过对比,发 ...
- 批量下载/导出excel文件或音频文件(浏览器)
不适用批量的详细案例可以看这边:http://t.csdn.cn/vrjPf 以下都是随便弄个点击事件@clike给她触发即可实现导出.当然了. api的使用,接口带blod getAPI: func ...
最新文章
- 突破电信3G宽带对网页浏览的上网限制
- 名人尿炕被人发现后怎么办?
- python程序狮,编程狮app下载
- http://www.vpython.org/index-ch.html
- Go入门之——GOROOT、GOPATH、GOBIN 、Project目录
- 请MVC5 WebApi2 支持OData协议查询
- Android 系统(119)---Android启动页黑屏及最优解决方案
- ios学习:Xcode工具
- 利用VB函数Dir()实现递归搜索目录
- C#窗体标准计算器(上) 初级新手请多担待。
- java.exe 0xc000012d_应用程序无法正常启动 0xc000012d
- oracle 关联查询两个表,两张表关联查询,该怎么处理
- CDH6.3.2安装部署
- 2022年G1工业锅炉司炉考试试题及答案
- 手机怎么伪原创火山小视频 本地短视频去水印在线
- 创业团队:太极图形团队
- Xshell、Xftp软件评估过期解决方案
- SATA3.0中FIS的八种类型
- urban airship实现消息内容的推送
- c 语言 清华大学郑莉,c 语言程序设计郑莉清华大学答案