使用MATLAB 处理声音的基本操作

使用 MATLAB 处理声音的基本操作

你可以在这里下载 文件。这个一个400Hz的基础频率加上噪音构成的复杂音频。

>> [snd, sampFreq, nBits] = wavread('440_sine.wav');

这个音频文件还有2个声道,5060个采样点

>> size(snd)

ans =

5060 2

素材音频(采样频率为sampFreq = 44110)对应的时长大约是114ms(Zt:应该只

是为了下面绘制图象确定范围使用的)

>> 5060 / sampFreq

ans =

0.1147

用下面的方法可以播放这个音频

>> sound(snd, 44100, 16)

我们只处理音频中的一个声道

>> s1 = snd(:,1);

绘制音频

一种表示声音的方法是以声压为纵轴,时间为横轴。首先,我们需要建立一个包

含时间点的数组:

>> timeArray = (0:5060-1) / sampFreq;

>> timeArray = timeArray * 1000; %放大到毫秒级

之后,即可绘制音频:

plot(timeArray, s1, 'k')

绘制频率信息

另外一种表示音频的方法是绘制其中的频率信息。我们可以用过FFT函数取得音

频中的频率信息,FFT是“快速傅立叶变换”的缩写。我们通过下面文档

/support/tech-notes/1700/1702.html 介绍的技术

来获得声音中的功率谱(横坐标是频率,纵坐标是功率)。

n = length(s1);

p = fft(s1); % 计算傅立叶变换

注意:和上面的那份技术文档中提到的不同,我们没有指定参加FFT的点的数量,

默认下FFT函数会使用信号全部采样值(上面表达式中的n)。上面的n并不是

2的幂次,在计算上会稍微慢一些,但因为我们数值总量不多,这样的影响完全

可以忽略不计。

nUniquePts = ceil((n+1)/2);

p = p(1:nUniquePts); % 选择前半部,因为后半部是前半部的一个镜像

p = abs(p); % 取绝对值,或者称之为幅度

FFT函数处理音频返回值包括幅度和相位信息,是以复数的形式给出的(返回复

数)。对傅立叶变换后的结果取绝对值后,我们就可以取得频率分量的幅度信息。

p = p/n; % 使用点数按比例缩放,这样幅度和信号长度或者它自身

% 的频率无关

p = p.^2; % 平方得到功率

% 乘以2(原因请参考上面的文档)

if rem(n, 2) % 奇数,nfft 需要排除奈奎斯特点

p(2:end) = p(2:end)*2;

else

p(2:end -1) = p(2:end -1)*2;

end

freqArray = (0:nUniquePts-1) * (sampFreq / n); % 创建频率数组

plot(freqArray/1000, 10*log10(p), 'k')

xlabel('Frequency (kHz)')

ylabel('Power (dB)')

运行结果如下,需要注意的是我们在绘制功率时使用10*log10(p)将其单位换算

为分贝,我们也将频率除以1000单位换算为KHz.

为了验证计算结果是信号的能量。我们可以计算信号的均方根。宽泛的说,rms

可以看作是波形的幅度值的测量(Zt:面积吧?)。如果你只是简单的取正弦信

号的平均值,结果将会是0,原因是正数部分会和负数部分相互抵消。为了避免

这样的情况,在求平均值之前先求平方然后再开方(单纯的平方会放大一些极

值):

>> rms_val = sqrt(mean(s1.^2))

rms_val =

0.0615

因为rms等于全部信号求平方后

matlab怎么处理声音,使用MATLAB 处理声音的基本操作.PDF相关推荐

  1. 声压级 matlab,语音信号处理教程(二)声音的声压级和响度

    本节内容我们来看下如何用Matlab和Python计算声音的声压级和响度. 声压级 1. 声压级定义 首先来看声压级,这个就是指的我们平时所说的声音有多少分贝.声压定义为声波在某一点产生的逾量瞬时压强 ...

  2. MATLAB GUI 文献或书,MATLAB GUI程序设计epub

    MATLAB GUI程序设计 作者:王广,邢林芳 MATLAB GUI程序设计 出版社:清华大学出版社 MATLAB GUI程序设计 内容简介 全书的编写基于当前版本的MATLAB环境,书中由浅入深地 ...

  3. 语音处理/语音识别基础(三)- 声音的特征和声音的能量

    前面分享了声音是什么,声音是如何产生,如何传播,以及如何数字化存储的.现在我们来看一下声音有哪些主要的特征(对于人来说),以及常说的声音的能量指的是什么. 本文尝试回答如下问题: 1).对于人来说, ...

  4. matlab中集合的表示,Matlab常用命令集合

    1.常用命令-->管理命令和函数 addpath添加目录到MATLAB搜索路径doc在Web浏览器上现实HTML文档help显示Matlab命令和M文件的在线帮助helpwin helpdesk ...

  5. MATLAB学习笔记3:MATLAB编程基础(前半)

    阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...

  6. matlab 报错 保留变量,matlab中明明定义了函数变量总是报错

    matlab定义符号函数 functiony=ff(t)t=input('t=');ift>=0y=sym('1');elsey=sym('0');end matlab中如何定义函数 matla ...

  7. 如何使用matlab仿真物理实验,基于Matlab的大学物理实验模拟.pdf

    维普资讯 浙江科技学院学报,第 2O卷第 2期,2008年 6月 JournalofZhejiangUniversityofScienceandTechnology Vo1.20No.2,June20 ...

  8. matlab音频信号处理实验报告,matlab音频信号处理实验报告.docx

    matlab音频信号处理实验报告 MATLAB音频信号处理实验 南昌航空大学信息工程学院 课程实验报告 实验名称:实验时间:2014年4月23日 指导教师: 班级: 学号: 姓名: 成绩: 南昌航空大 ...

  9. 利用计算机录音模拟声波,realplayer插件 声音数字化|74数字化声音试题(7)

    制数字来表示,必须对每个值分配一 个编码.显然对无穷多个值分配编码 是不可能的. 如果把信号幅度取值的数目加以限 定,量化后得到的值只能取有限个参 考值,若实际值不在这些有限个值之 内,则使用四舍五入 ...

  10. matlab科学计算及分析,matlab科学计算

    spContent=当前,科学计算已经成为科学研究.技术创新的重要方法与手段,而作为实现工具的科学计算软件无疑具有至关重要的作用.MATLAB为众多领域的计算问题提供了全面的解决方案,代表了当今国际科 ...

最新文章

  1. selenium--iframe之模拟qq空间登录
  2. 混合线性模型+mixed linear model+GEEs+GLMM+LMM
  3. 升级 Visual Studio 2015 CTP 5 的坑、坑、坑
  4. python—unittest—数据驱动详细讲解(ddt)
  5. centos安装包选择--liveCD、liveDVD、bin-DVD、netinstall和minimal
  6. 行业人士谈悄然成功的《星际战甲》所带来的启示
  7. CityEngine生成不等间距桥墩
  8. [刷题记录] luogu网络流24题 及 网络流心得体会 及 经典模型不定期更新
  9. MySQL 数据恢复
  10. 移动路线(信息学奥赛一本通-T1194)
  11. CodeForces - 93B(贪心+vectorpairint,double +double 的精度操作
  12. 对俄罗斯应用“一刀切”,乌克兰知名开发商推出 Mac 专用反间谍软件
  13. R-CNN学习笔记5:Faster R-CNN
  14. 好用插件分享(IE浏览器)
  15. 局域网计算机加密共享文件,局域网共享文件,小编教你局域网共享文件怎么加密...
  16. 程序员需要了解英国文学
  17. java 错误声音播放器_JavaME 声音播放器的使用
  18. ‘Staring Tomcat v8.0 Server at localhost ’ has encountered a problem 问题解决
  19. ▼ 系列 | 漫谈数仓第四篇NO.4 『BI选型』
  20. 五分钟学会python_果粉有福了!5分钟学会用Python统计自己最爱听的音乐

热门文章

  1. 机器学习和深度学习到底先学哪个?
  2. QuickLook 插件
  3. 加推超级IP名片6大功能系统首次全面解析!
  4. 立创EDA仿真入门2 实战全桥整流
  5. 威纶通界面UI,复制可用,威伦通触摸屏设计界面
  6. Glup快速入门整理
  7. Nexus 配置yum私库
  8. 【单片机仿真项目】利用定时器0实现对LED灯的闪烁控制,LED灯的闪烁间隔为0.5秒
  9. STM32控制16路舵机控制板PCA9685
  10. ISO15189医学实验室认可内审员培训