matlab 播放声音,Matlab:实时播放音频并显示波形
目录标题
写在前面
先看效果
函数代码
写在前面
最近整理音频相关的资料,有时候需要根据音频的波形来人为地判断哪一段数据是可取的,哪一段又是该删掉的。这个小问题却连续困扰了我多日:普通的音频播放软件只能流畅的播放音频,却无法显示数据波形. 为此,我利用Matlab编写一个小程序来解决这个问题。
先看效果
如图所示:
随着音频的播放,窗口中有两个实时显示的图像:
第一个图像为整段音频的波形,红色部分为当前播放处长度为2s的实时波形.
第二个图像聚焦于上图音频中的红色部分,用于查看实时波形的细节.
函数代码
% w->windows: 帧长
% d->delta: 移动窗
function FunWavflow(filename,t1,t2)
error(nargchk(2, 3, nargin, 'struct'));
[y fs]=audioread(filename);
pt = (length(y)-1)/fs;
if nargin == 2;
t2 = pt;
end
t = [t1 t2];
if length(t)~=2 | t(1) < 0 | t(2) > pt
error('01 - play time.');
return;
end
l1 = round(t(1)*fs+1);
l2 = round(t(2)*fs+1);
if size(y,2) == 2
y = mean(y(l1:l2,:)');
else
y = y(l1:l2)';
end
l = l2-l1+1;
w = 2*fs;
if l <= w
error('02 - short length.')
return;
end
k = floor(1.5e7/(fs*(t2-t1)));
d = floor(w/k);
n = ceil((l-w)/d)+1;
if w+(n-1)*d > l
y = [y zeros(1,w+(n-1)*d+1-l)];
end
for i = 1:n
pw(i,:) = y((i-1)*d+1:w+(i-1)*d);
td(i,:) = t(1)+(i-1)*d/fs+[0:w-1]/fs;
end
figure
lim = max(y(:));
sound(y,fs)
pause(w/fs)
ts = datetime('now');
for i = 1:n
subplot(2,1,1)
plot(t(1)+[0:length(y)-1]/fs,y,'k-')
hold on,plot(td(i,:),pw(i,:),'r-')
set(gca,'ylim',[-lim lim],'xlim',[max(t(1)-2,0),t(2)+2])
grid on;
subplot(2,1,2)
plot(td(i,:),pw(i,:),'k-');
set(gca,'ylim',[-lim lim],'xlim',[td(i,1) td(i,end)])
grid on;
tp = seconds(datetime('now')-ts)+t(1);
pause(td(i,1)-tp)
drawnow;
end
输入参数有三个,分别为音频文件名(filename)、起始播放时间(t1)、终止播放时间(t2);
其中,终止播放时间可省略,此时默认t2为音频的结尾.
帧长及移动窗的大小自由可调. 一般而言,移动窗越小,实时显示的连续感会越好,但是,由于计算机算力的原因,当取值过小时,播放与波形的显示将无法同步. 经过多次探索和调试,将移动窗的长度默认为取样率及音频长度的函数,能够保证计算机在音频播放与波形显示同步条件下的较高运算效率.
2019-08-07
matlab 播放声音,Matlab:实时播放音频并显示波形相关推荐
- Matlab:录制和播放音频
Matlab:录制和播放音频 录制音频 录制麦克风输入 录制来自不同声卡的两个通道 指定录制质量 播放音频 在函数内录制或播放音频 通过系统音频输入和输出设备录制和播放音频数据,以便在 MATLAB® ...
- QT播放Wav音频并显示波形
1.前言 因为项目需要,做了个小工具来做前期准备. 这个需求实现两步:播放和显示波形. 播放方面,一开始选择FMod,小工具快做好的时候偶然发现FMod需要商业授权,所以只能放弃.试了试ffmpeg+ ...
- python实时播放音频和录音_python实现播放音频和录音功能示例代码
python实现播放音频和录音功能示例代码 来源:中文源码网 浏览: 次 日期:2019年11月5日 [下载文档: python实现播放音频和录音功能示例代码.txt ] (友情提示:右 ...
- matlab 播放声音,matlab播放音乐
最近在做计算,写了一些matlab代码,脑壳还疼,所以决定发挥一下逗B精神,写一个程序玩一下. 想了想,既然写代码的时候喜欢听歌,而且我的电脑打开网易音乐的速度巨慢(不知道为什么..),那些一个程序直 ...
- matlab GUI 数据存储,回放,显示波形 (以脉搏波和袖带压为例)
这个星期在原有功能的基础上添加了数据存储,回放的功能. 先看一下主界面布局. 1 主界面有四个坐标控件,左边两个分别用于实时显示脉搏波和袖带压的波形,右边两个作用是在血压测量结束后分别显示脉搏波和袖带 ...
- python实时播放音频和录音_基于python的实时音频信号处理
我一直在尝试使用python中的"pyAudio"模块进行实时音频信号处理.我所做的只是一个简单的例子,从麦克风读取音频数据并通过耳机播放.我尝试了以下代码(Python和Cyth ...
- matlab显示警告:由于未找到因为输出,无法播放音频
matlab显示警告:由于未找到因为输出,无法播放音频 把matlab设成英文试试 或者已经弄好路径了,matlab重启才会反应过来
- matlab暂停音频,matlab 中的实时音频
matlab 中的实时音频 音频系统工具箱™针对实时音频处理进行了优化. audioDeviceReader, audioDeviceWriter, audioPlayerRecorder,dsp.A ...
- MATLAB播放音频sound
MATLAB播放音频sound >> clear >> [y, Fs] = audioread('a_hisa.mp3'); %% y是音频数据m*n的矩阵,Fs是采样率.n是 ...
最新文章
- java864位官网_jdk8 64位下载-jdk8 64 bit windows官方版 - 极光下载站
- linux笔记第一章--基本命令记载
- jvm七:数组创建本质
- 蓄势待发!一加10 Pro获3C认证:搭载80W快充+2K LTPO屏
- Open3d之点云全局配准
- c++ floor 赋值_C++之floor函数
- flacs 安装教程_文章详细信息
- modbus测试plc软件,MODBUS RTU设备测试调试工具官方版
- MATLAB强化学习实战(四) 训练DDPG智能体控制双积分器系统
- 三菱plc恒压供水程序+威纶触摸屏程序 以控制水泵一用一备、一拖二、一拖三、一拖四、一拖四带小泵恒压功能
- PS纳米纤维膜 聚苯乙烯 纤维直径500-2000nm
- 【决策树算法】泰坦尼克号乘客生存预测
- 【牛客网】【埃森哲杯第十六届上海大学程序设计联赛春季赛暨上海高校金马五校赛】B—合约数【莫队做法】
- Android聊天列表Demo(QQ,微信,等通讯工具的聊天列表)
- 在线压力测试工具-程序员在线工具网
- 手把手带你成功部署OAI 5G demo
- JavaScript 中的 “ => “ 箭头函数(上)
- 视频怎么做动图?手把手教你视频转gif
- FPGA 之 SOPC 系列(八)程序固化
- 懂数据会营销的健身房会员管理软件
热门文章
- 我的词典:即粘即用二
- 【陈工笔记】# WPS中如何公式居中,公式的编号靠右?#
- 利用excel求特定条件下的最大/小值(maxif/minif)
- 钉钉开放平台-小程序开发实战(钉钉小程序服务器端)
- NYOJ 998 解题报告
- Linux对显卡驱动相关操作后,重启进不去图形界面,左上角一个横杠在闪
- win11新版本微信消息不闪烁/提示问题
- Java中怎么获取文件夹的名称_java获取文件夹下所有文件的名称
- java实现socket通讯
- vscode-remote 无法写入文件“vscode-remote://ssh-remote