Продолжать воспроизводить звук снова и снова в Matlab?

Я пытаюсь создать программу 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, чтобы обойти ее, а затем воспроизвести новый файл, но я не знаю, как сделать матрицу из звуковых файлов. Есть ли другая команда, которую я могу использовать вместо «играть», которая позволит мне продолжать играть?

РЕДАКТИРОВАТЬ: Провожу больше исследований по этому вопросу сейчас, так как я никогда не узнавал об этом в классе, но было бы лучше просто создать новый файл, содержащий мой звук, а затем повторно получить доступ к файлу?


person user2250690    schedule 25.04.2013    source источник


Ответы (2)


Что касается кода, который вы разместили, я думаю, проблема в том, что вы только pause(1), который, как я подозреваю, короче звука, поэтому вы пытаетесь и play(voice), пока он все еще воспроизводится из предыдущего цикла. Вместо play используйте блокировку воспроизведения как это должно остановить цикл, пока звук не закончится.

person Dan    schedule 26.04.2013
comment
Вот оно! Большое спасибо. - person user2250690; 27.04.2013

эта ошибка «Данное аудиоустройство может быть открыто только один раз», это означает...
когда вы запускаете свой код, если другая программа или функция вызывает «аудиоплеер».
В системе возникнет проблема, поэтому вам нужно чтобы включить некоторый код для проверки свойства «Выполнение» «аудиоплеера» перед воспроизведением цикла. например .....
.....
A=get(hplay,'Выполняется');
if(strcmp(A,'off')
..... .проигрывайте свой код....
end

person Matlab Programing FB    schedule 03.09.2013