我正在尝试创建一个 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”循环遍历它,然后播放新文件,但我不知道如何用声音文件制作矩阵。我可以使用其他命令来代替“播放”,让我继续播放它吗?
编辑:现在对此进行更多研究,因为我从未在类里面真正了解过这一点,但最好只创建一个包含我的声音的新文件,然后重复访问文件?
最佳答案
关于您发布的代码,我认为问题在于您只pause(1)
,我怀疑它比声音短,所以您尝试play(voice)
> 当它仍在播放上一个循环时。使用 playblocking 而不是 play
因为这应该停止循环,直到声音结束。
关于matlab - 继续在 Matlab 中一遍又一遍地播放声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16226309/