Вопрос

У меня проблема в 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», но ничего не происходит.

Благодарность

Это было полезно?

Решение

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

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

Другие советы

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);

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

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

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

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

play(recObj);

% Храните данные в массиве с двойной задачей.

myRecording = getaudiodata(recObj);

% График формы волны.

plot(myRecording);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top