2017-02-14 1 views
1

У меня есть код, который больше не работает в последних версиях matlab, потому что wavrecord больше не используется. Как это можно преобразовать:Как преобразовать wavrecord в аудиорегистратор?

Fs=8000; 

my_voice=wavrecord(3*Fs,Fs,'int16'); 

wavplay(myvoice,Fs); 

таким образом, который работает на Matlab сейчас?

+0

Проверьте https://se.mathworks.com/matlabcentral/answers/165279-how-to-change-wavrecord-to-audiorecorder –

ответ

0

Кодекс:

% 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).