проблемы с matlab wavrecord и wavread - PullRequest
2 голосов
/ 22 декабря 2010

У меня проблема в Matlab

Я хочу записать речь в течение 2 секунд, затем прочитать записанный звук и подготовить его

Я использую код

FS = 8000;    
new_wav = wavrecord(2*FS,FS,'int16');
x = wavread(new_wav);
plot(x);

но появляется ошибка

??? Error using ==> fileparts at 20
Input must be a row vector of characters.

Error in ==> wavread>open_wav at 193
[pat,nam,ext] = fileparts(file);

Error in ==> wavread at 65
[fid,msg] = open_wav(file);

Error in ==> test at 2
x = wavread(new_wav);

Я записал правильно записанные звуковые файлы, но когда я хочу записать новый с помощью Matlab, я получаю эти ошибки.

Я пробовал много способов, меняя FS и int16, но ничего не происходит.

спасибо

Ответы [ 3 ]

2 голосов
/ 22 декабря 2010

Функция WAVRECORD не записывает данные в файл, она возвращает только вектор данных для new_wav, поэтому эта переменная - то, что вы должны строить.Функция WAVREAD считывает данные из файла , поэтому она ожидает строку символов в качестве входных данных.Это источник ошибки, которую вы получаете.

Если вы хотите сохранить данные из WAVRECORD в файл, вам нужно использовать функцию WAVWRITE .

0 голосов
/ 21 марта 2013

В конце это полный код:)

% Запишите свой голос в течение 5 секунд.

recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 3);
disp('End of Recording.');

% Воспроизведите запись.

play(recObj);

% Сохранение данных в массиве с двойной точностью.

myRecording = getaudiodata(recObj);

% Построение графика.

plot(myRecording);
0 голосов
/ 09 мая 2012
name = input('Enter Your Name   ','s');
file = sprintf('%s%s.wav','train - ',name);
input ('You have 2 seconds to a word. Press enter when ready ')
y = wavrecord (2*fs,fs);
wavwrite(y,fs,file);
...