我试图创建一个MATLAB程序,每隔几分钟一遍又一遍地播放声音。现在我把它设置为每隔几秒播放一次,只是为了从系统中清除一些bug。然而,当我的程序试图重放声音时,我得到这个错误:
??? 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"循环遍历它,然后播放新文件,但我不知道如何从声音文件中制作矩阵。我是否可以使用不同的命令来代替"play",让我继续玩游戏?
EDIT:现在对此进行更多研究,因为我从未在课堂上真正了解过这一点,但是最好只是创建一个包含我的声音的新文件,然后反复访问该文件吗?
关于你发布的代码,我认为问题是你只有pause(1)
,我怀疑比声音短,所以你尝试和play(voice)
,而它仍然从以前的循环播放。而不是play
使用playblocking,因为这应该停止循环,直到声音完成。
此错误"A given audio device may only be open once"表示…
当你运行代码时,如果另一个程序或函数调用"audioplayer".
系统会有问题,所以你需要在播放循环之前包含一些代码来检查"audioplayer"的"Running"属性。如
…
…=得到(hplay,"奔跑");
如果(strcmp (A,"关闭")
……播放您的代码....
结束