problemi con MATLAB wavrecord e wavread
-
12-10-2019 - |
Domanda
Ho un problema in MATLAB
Voglio registrare un discorso per 2 secondi, quindi leggere il suono registrato e la trama è
Io uso il codice
FS = 8000;
new_wav = wavrecord(2*FS,FS,'int16');
x = wavread(new_wav);
plot(x);
, ma il compare di errore
??? 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);
ho tracciato correttamente registrato file audio, ma quando voglio registrare uno nuovo attraverso MATLAB ottengo questo errore.
Ho provato molti modi, modificando FS e 'Int16' ma non succede nulla.
grazie
Soluzione
La funzione WAVRECORD non scrive i dati in un file, restituisce solo un vettore di dati per new_wav
, quindi questa variabile è ciò che si dovrebbe essere tracciato. La funzione WAVREAD legge i dati da un file , quindi prevede una stringa di caratteri come input. Questa è l'origine dell'errore che stai ricevendo.
Se si desidera salvare i dati da WAVRECORD in un file , è necessario utilizzare la funzione WAVWRITE .
Altri suggerimenti
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);
Alla fine questo è il codice completo:)
% Registra la tua voce per 5 secondi.
recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 3);
disp('End of Recording.');
% Riprodurre la registrazione.
play(recObj);
Dati% Conservare in serie a doppia precisione.
myRecording = getaudiodata(recObj);
% Tracciare la forma d'onda.
plot(myRecording);