我正在尝试创建一个MATLAB程序,每隔几分钟一遍又一遍地播放声音。现在我将它设置为每隔几秒钟播放一次,只是为了从系统中获取一些错误。但是,当我的程序尝试重放声音时,我收到此错误:
??? Error using ==>
audioplayer.audioplayer>audioplayer.resume at 710
A given audio device may only be opened once.
Error in ==> audioplayer.play at 88
obj.resume();
Error in ==>
audiorecorder.audiorecorder>audiorecorder.play at
779
play(player, varargin{:})
Error in ==> Voice at 17
play(voice);
到目前为止,我的代码是:
clc;
clear all;
clear main;
%File to play my voice to tell me to keep studying
voice = audiorecorder;
disp('Start speaking.');
recordblocking(voice, 3);
disp('DONE');
while i ~= 100;
pause(1);
play(voice);
i = 0;
end
基本上我的问题是有没有办法继续将同一个声音文件写入不同的名称,然后继续播放新文件?我考虑制作一个矩阵,然后只使用“for”循环遍历它然后播放新文件,但我不知道如何用声音文件制作矩阵。是否有一个不同的命令我可以使用而不是“播放”让我继续播放它?
编辑:现在对此进行更多研究,因为我从未真正在课堂上学到这一点,但最好只创建一个包含我声音的新文件,然后重复访问文件?
答案 0 :(得分:2)
关于您发布的代码,我认为问题是您只有pause(1)
我怀疑它比声音短,所以当它仍然在上一个循环播放时尝试play(voice)
。而不是play
使用 playblocking ,因为这应该会停止循环直到声音结束。
答案 1 :(得分:0)
此错误“给定的音频设备只能打开一次”,这意味着......
当你运行代码时,如果另一个程序或函数调用“audioplayer”
系统会出现问题,因此您需要在播放循环之前包含一些用于检查“audioplayer”的“Running”属性的代码。
如
.....
.....
A = GET(hplay, '运行');
如果(的strcmp(A, '关断')
......播放你的代码......
结束