2

我正在尝试创建一个 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”循环遍历它然后播放新文件,但我不知道如何从声音文件中制作一个矩阵。我可以使用不同的命令来代替“播放”让我继续播放吗?

编辑:现在对此进行更多研究,因为我从未在课堂上真正了解过这一点,但最好只创建一个包含我的声音的新文件,然后重复访问该文件?

4

2 回答 2

2

关于您发布的代码,我认为问题在于您只是pause(1)我怀疑它比声音短,所以您尝试并且play(voice)它仍在从前一个循环播放。而不是play使用播放阻塞,因为这应该停止循环,直到声音结束。

于 2013-04-26T07:03:03.737 回答
0

此错误“给定的音频设备只能打开一次”这意味着......
当您运行代码时,如果另一个程序或函数调用“audioplayer”。
系统会出现问题,因此您需要在播放循环之前包含一些代码来检查“audioplayer”的“Running”属性。比如
...........
A=get(hplay,'Running');
if(strcmp(A,'off')
......播放你的代码......
结束

于 2013-09-03T17:42:16.747 回答