问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

MATLAB音频文件读取

发布网友 发布时间:2022-05-01 02:41

我来回答

2个回答

热心网友 时间:2022-06-22 18:17

  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)/(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+1
  for 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;
  end
  end
  if count == 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,'.');
  for i = 2:num - 1
  for j = 1:len
  if (temp(i).f == point(j).f) && (temp(i).t == point(j).t)
  break;
  end
  end
  if 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,'.');
  end
  end
  hold off
  end

  4、keypoint(sample,scope);函数中用到的caldiffenergy(energy);函数内容在caldiffenergy.m文件中,内容如下:

  function diffenergy = caldiffenergy(energy)
  v = diff(energy');
  [x,y] = size(v);
  for i = 1:y
  zero(i) = 0;
  end
  diffenergy = abs(([zero;v])');
  end

热心网友 时间:2022-06-22 18:17

这个问题你需要知道 matlab对音频文件的处理常用操作;
matlab一般读取wav数据;
[data,fs,nbits] = wavread('test.wav');---test.wav文件名
则可知音频文件时长为
t = (length(data(:,1))/fs) (t单位:秒)
希望可以帮到你,有什么不懂的可以继续追问追问我现在就是有个音频文件但是用wavread函数读进MATLAB中一直不成功。。。是软件安装时出了问题还是其他什么问题。。那个我已经知道哪里问题了,谢谢你

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
美的燃气热水器12升电脑版显示FR一pH一PL一dH一nE一qU怎么调好_百度知... 热水器ph什么意思 上海工程技术大学公共管理专业是什么学院 公共事业管理在暨南大学中属于哪个学院? 中央财经大学公共事业管理学生就业去向都有哪些 中飞院公共事业管理是什么专业 广西医科大学公共事业管理属于哪个学院 抖音怎么发视频@抖音小助手 发视频@抖音小助手操作一览 轻颜相机怎么取消自动续费 取消自动续费教程 轻颜相机vip怎么取消 有没有音频(wma与mp3)格式转换方面的源代码,急!!! 秋天路亚翘嘴用什么拟饵 便宜又好用的固态硬盘 三星rc420笔记本怎样升级固态硬盘,固态硬盘要选择什么接口多大尺寸? 铠侠rc20为什么不建议购买 不懂就问,SSD固态硬盘哪个牌子好?要耐用的。 kioxia的rc20天选2可以用吗 i310105f能用铠侠rc20吗 RC10 RC20 寿命 rc20有清0盘么 2019年。属羊运气怎么样 冰箱,声音从38分贝变50分贝是怎么回事 有个项目投资10万,每个月估计能稳定收入2万纯利,你愿意出多少买? 假设我投资了银行的理财产品年化收益率是3。65%,我投资了10W在里面,请问一年下来我能挣多少钱?? 爱情就像翻书,快了不行,慢了也不行。抓得太紧不行,放松也不行。无力 为什么说女生更喜欢慢一点? 男人睡一个人多久会腻味 厦门国际银行大额存单利率 我睡你 睡两次和一百次有什么区别如果一个男的这么说我该怎么回答? 婚姻生活中有些中年女人为什么不愿意和丈夫睡在一起? 光大银行的阳光信用卡IC金卡是什么样子的?网上申请了容易通过吗? ()num.转换成()adj.&num.第一 泰国明星num的歌 VB如何获取一个MP3文件信息(艺术家\标题\总长) 特种病医保包括哪些病 国家慢性疾病补贴政策 和平精英怎么只显示一套搭配方案 国家对癌症有什么优惠政策? 下个礼拜一打算去大朗松山湖游玩,不知道桃花源的桃花开了没有? 空调制冷维修系统 有一次征信逾期记录,三年了,还能办信用卡吗,申请过一次交通的,没成功 功率用什么字母表示? 桂林哪个银行可以回收纪念币 电功率符号是什么? 征信有过一次逾期还能办信用卡吗 什么是功率? 因疫情失业网袋平台逾期三个月逾期金额7k我现在一次性还完了征信有逾期一次的记录能申请办理信用卡吗? 征信报告有一次逾期还能申请信用卡吗 功率是什么意思? 征信上有过一次逾期未结清,能办理招商银行信用卡吗?