Кодекс:
% Setup the recording object
Fs = 8000;
Nbits = 16;
my_recorder = audiorecorder(Fs, Nbits, 1)
% Record the audio
record(my_recorder, 3);
% Retrieve the sampled recording
my_voice = getaudiodata(my_recorder);
% Play the sampled recording
play(my_voice);
Это будет воспроизводить код, который вы размещены в вашем вопросе (по аналогии с answer @Jørgen linked in the comments).
Объяснение Выше Код:
Во-первых, давайте сломаем, что ваш код сделал.
my_voice = wavrecord(3*Fs, Fs, 'int16')
записей 3
секунд 16-битного аудио, отбираемого по адресу Fs = 8000
Гц. Если вы не укажете канал, по умолчанию будет mono
или 1-канальный вход.
Теперь вы хотите воспроизвести эту функцию с помощью функции audiorecorder()
.
audiorecorder(Fs, nBits, nChannels)
создает объект audiorecorder
, который производит образцы nBits
аудио на Fs
Гц.
Вы хотите записать 16-битный звук, так nBits = 16
сэмпл в Fs = 8000
Гц и так как вы не указали канал с wavrecord()
вы использовали 1-канальный аудиовход, так nChannels
здесь 1
: my_recorder = audiorecorder(8000,16,1)
.
Вы по-прежнему хотите указать время записи 3
секунд. Итак, вы должны записать данные из объекта my_recorder
за 3
секунд: record(my_recorder, 3)
.
Для извлечения выборочного аудио: my_voice = getaudiodata(my_recorder)
.
Проверьте https://se.mathworks.com/matlabcentral/answers/165279-how-to-change-wavrecord-to-audiorecorder –