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音频文件读取相关推荐

  1. Mac os系统上一款界面简洁时尚、功能强大的视频编辑软件。通过使用 Wondershare Filmora您会很容易地创建从视频文件,音频文件,并与转场。

    Wondershare Filmora9 Mac版是Mac os系统上一款界面简洁时尚.功能强大的视频编辑软件.通过使用 Wondershare Filmora您会很容易地创建从视频文件,音频文件,并 ...

  2. MATLAB读写.wav和.raw音频文件

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.wav文件格式 二.matlab代码 1.fread读.wav文件 2.fread读.raw音频文件 3.wav转 ...

  3. spring boot循环控制读取本地视频或音频文件

    1.后台配置类 UploadFilePathConfig.java package com.xxxxxx.controller;import org.springframework.beans.fac ...

  4. java播放ape音频,Java使用Jaudiotagger读取Mp3及Flac音频操作

    Jaudiotagger是jid3lib的扩展,比jlid3lib强大更多,支持更多格式. MP3信息的读取: ? try { MP3File file = new MP3File("mmt ...

  5. Android合并两个MP3格式的音频文件

    首先,简单的读取两个mp3文件流,然后合并到一个输出流,输出到文件中,这种简单粗暴的方法肯定是不行的,因为 mp3文件有文件头信息和文件尾信息,要处理这些. 所以正确的方案是:要先正确取到各个mp3文 ...

  6. php 音频顺序播放,MP3播放器音频文件不按顺序播放的解决方法,简单实用

    MP3播放器对于现在的我们来说很多已经是过去了,但是我们总会有用到它的时候:当你听一些录音课程或者评书故事,亦或者使用迷你音响播放歌曲时常会发现拷贝进MP3播放器中的音频文件根本不按照你自己的想象进行 ...

  7. 百度富文本编辑器ueditor支持上传mp3格式等音频文件的方法

    百度富文本编辑器ueditor算得上比较强大的了,但是有一个比较令人难受的问题,就是不支持本地上传音频文件.ueditor自带的mp3功能是直接在百度音乐里面搜索加进去的,显而易见这个不是我们想要的, ...

  8. php speex转码为mp3,将spx音频文件转换为mp3

    我必须将spx音频文件(ogg格式)转换为mp3文件.我已经尝试了几件事,至今没有任何工作.将spx音频文件转换为mp3 我试过使用Naudio.Lame库中的LameMP3FileWriter. p ...

  9. swf文件提取音频文件方法

    手头有几个古早swf文件,想提取音质好的音频文件,搜索到了几个方法: 一.使用swf提取MP3的软件 下载不到免费好用的软件,作罢: 二.使用格式转换软件直接转换音频 使用格式工厂试了下,经过对比,发 ...

  10. 批量下载/导出excel文件或音频文件(浏览器)

    不适用批量的详细案例可以看这边:http://t.csdn.cn/vrjPf 以下都是随便弄个点击事件@clike给她触发即可实现导出.当然了. api的使用,接口带blod getAPI: func ...

最新文章

  1. 突破电信3G宽带对网页浏览的上网限制
  2. 名人尿炕被人发现后怎么办?
  3. python程序狮,编程狮app下载
  4. http://www.vpython.org/index-ch.html
  5. Go入门之——GOROOT、GOPATH、GOBIN 、Project目录
  6. 请MVC5 WebApi2 支持OData协议查询
  7. Android 系统(119)---Android启动页黑屏及最优解决方案
  8. ios学习:Xcode工具
  9. 利用VB函数Dir()实现递归搜索目录
  10. C#窗体标准计算器(上) 初级新手请多担待。
  11. java.exe 0xc000012d_应用程序无法正常启动 0xc000012d
  12. oracle 关联查询两个表,两张表关联查询,该怎么处理
  13. CDH6.3.2安装部署
  14. 2022年G1工业锅炉司炉考试试题及答案
  15. 手机怎么伪原创火山小视频 本地短视频去水印在线
  16. 创业团队:太极图形团队
  17. Xshell、Xftp软件评估过期解决方案
  18. SATA3.0中FIS的八种类型
  19. urban airship实现消息内容的推送
  20. c 语言 清华大学郑莉,c 语言程序设计郑莉清华大学答案

热门文章

  1. 北航计算机考研计算机组成原理,北航计算机组成原理讲义.pdf
  2. android markdown编辑器,推荐几款好用的Markdown编辑器
  3. python可视化网页设计_python可视化工具
  4. Java实现人脸识别
  5. 用人话讲明白AHP层次分析法(非常详细原理+简单工具实现)
  6. 主要由javascript实现的网页打字小游戏
  7. HTML+CSS+JavaScript实现打字小游戏
  8. Win装linux双系统教程
  9. 沪深股票历史数据下载,股票历史交易数据下载
  10. 完全免费的公众号文章批量下载器