在Matlab中一遍又一遍地播放声音



我试图创建一个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,"关闭")
……播放您的代码....
结束

最新更新