Проблемы с Matlab Wavrecord и Wavread
-
12-10-2019 - |
Вопрос
У меня проблема в 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);