Если введено в командной строке в Matlab 2016, следующие строки создадут объект аудиорекордера, начнут его запись, остановят его запись, запишут записанные сэмплы в wav-файл и воспроизведут сэмплы с объекта-рекордера (т. Е. Не из недавно записанного файла WAV):
rec = audiorecorder(44100, 16, 1);
record(rec); % User speaks now
stop(rec);
audiowrite('foo.wav', getaudiodata(rec), 44100);
play(rec);
Я пытаюсь разделить это на три кнопки GUI (созданный с помощью GUIDE) со следующими функциями:
- Пуск Кнопка, которая запускает созданный рекордер
- Кнопка Стоп, которая останавливает рекордер И сохраняет wav файл
- Кнопка воспроизведения, которая воспроизводит семплы с рекордера
(Идея состоит в том, чтобы иметь возможность записывать небольшие образцы текста, быстро прослушивать первый проход качества и решать, записывать или нет, или переходить к следующему образцу.
Создание объекта рекордера (среди прочего) в начальной настройке для GUI:
function ReadingScript_OpeningFcn(hObject, eventdata, handles, varargin)
recorder = audiorecorder(Fs, nbits, nChannels);
Запустить объект записи:
function startRecord_Callback(hObject, eventdata, handles)
global recorder
set(handles.status,'String', 'Recording');
record(recorder);
Остановить объект записи ct И сохранить сэмплы в файл:
function stopRecord_Callback(hObject, eventdata, handles)
global recorder
global wavname
stop(recorder);
audiowrite(wavname, getaudiodata(recorder), 44100)
Воспроизвести сэмплы:
function PlayBack_Callback(hObject, eventdata, handles)
global recorder
play(recorder)
Здесь все работает, кроме воспроизведения сэмплов. Сэмплы записываются в диктофон, который запускается и останавливается при правильном нажатии кнопок, и файл WAV сохраняется. Но образцы не будут играть. Я даже знаю, что кнопка воспроизведения срабатывает из-за преднамеренной пропущенной точки с запятой, что приводит к выводу на экран деталей объекта записи, который также проверяет, что сэмплы все еще находятся в нем.
Что именно я пропускаю , что заставит воспроизводить звук?