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

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top