matlab怎么处理声音,使用MATLAB 处理声音的基本操作.PDF
使用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相关推荐
- 声压级 matlab,语音信号处理教程(二)声音的声压级和响度
本节内容我们来看下如何用Matlab和Python计算声音的声压级和响度. 声压级 1. 声压级定义 首先来看声压级,这个就是指的我们平时所说的声音有多少分贝.声压定义为声波在某一点产生的逾量瞬时压强 ...
- MATLAB GUI 文献或书,MATLAB GUI程序设计epub
MATLAB GUI程序设计 作者:王广,邢林芳 MATLAB GUI程序设计 出版社:清华大学出版社 MATLAB GUI程序设计 内容简介 全书的编写基于当前版本的MATLAB环境,书中由浅入深地 ...
- 语音处理/语音识别基础(三)- 声音的特征和声音的能量
前面分享了声音是什么,声音是如何产生,如何传播,以及如何数字化存储的.现在我们来看一下声音有哪些主要的特征(对于人来说),以及常说的声音的能量指的是什么. 本文尝试回答如下问题: 1).对于人来说, ...
- matlab中集合的表示,Matlab常用命令集合
1.常用命令-->管理命令和函数 addpath添加目录到MATLAB搜索路径doc在Web浏览器上现实HTML文档help显示Matlab命令和M文件的在线帮助helpwin helpdesk ...
- MATLAB学习笔记3:MATLAB编程基础(前半)
阅读前请注意: 1. 该学习笔记是华中师范大学HelloWorld程序设计协会2021年寒假MATLAB培训的学习记录,是基于培训课堂内容的总结归纳.拓展阅读.博客内容由 @K2SO4钾 撰写.编辑, ...
- matlab 报错 保留变量,matlab中明明定义了函数变量总是报错
matlab定义符号函数 functiony=ff(t)t=input('t=');ift>=0y=sym('1');elsey=sym('0');end matlab中如何定义函数 matla ...
- 如何使用matlab仿真物理实验,基于Matlab的大学物理实验模拟.pdf
维普资讯 浙江科技学院学报,第 2O卷第 2期,2008年 6月 JournalofZhejiangUniversityofScienceandTechnology Vo1.20No.2,June20 ...
- matlab音频信号处理实验报告,matlab音频信号处理实验报告.docx
matlab音频信号处理实验报告 MATLAB音频信号处理实验 南昌航空大学信息工程学院 课程实验报告 实验名称:实验时间:2014年4月23日 指导教师: 班级: 学号: 姓名: 成绩: 南昌航空大 ...
- 利用计算机录音模拟声波,realplayer插件 声音数字化|74数字化声音试题(7)
制数字来表示,必须对每个值分配一 个编码.显然对无穷多个值分配编码 是不可能的. 如果把信号幅度取值的数目加以限 定,量化后得到的值只能取有限个参 考值,若实际值不在这些有限个值之 内,则使用四舍五入 ...
- matlab科学计算及分析,matlab科学计算
spContent=当前,科学计算已经成为科学研究.技术创新的重要方法与手段,而作为实现工具的科学计算软件无疑具有至关重要的作用.MATLAB为众多领域的计算问题提供了全面的解决方案,代表了当今国际科 ...
最新文章
- selenium--iframe之模拟qq空间登录
- 混合线性模型+mixed linear model+GEEs+GLMM+LMM
- 升级 Visual Studio 2015 CTP 5 的坑、坑、坑
- python—unittest—数据驱动详细讲解(ddt)
- centos安装包选择--liveCD、liveDVD、bin-DVD、netinstall和minimal
- 行业人士谈悄然成功的《星际战甲》所带来的启示
- CityEngine生成不等间距桥墩
- [刷题记录] luogu网络流24题 及 网络流心得体会 及 经典模型不定期更新
- MySQL 数据恢复
- 移动路线(信息学奥赛一本通-T1194)
- CodeForces - 93B(贪心+vectorpairint,double +double 的精度操作
- 对俄罗斯应用“一刀切”,乌克兰知名开发商推出 Mac 专用反间谍软件
- R-CNN学习笔记5:Faster R-CNN
- 好用插件分享(IE浏览器)
- 局域网计算机加密共享文件,局域网共享文件,小编教你局域网共享文件怎么加密...
- 程序员需要了解英国文学
- java 错误声音播放器_JavaME 声音播放器的使用
- ‘Staring Tomcat v8.0 Server at localhost ’ has encountered a problem 问题解决
- ▼ 系列 | 漫谈数仓第四篇NO.4 『BI选型』
- 五分钟学会python_果粉有福了!5分钟学会用Python统计自己最爱听的音乐