Question

J'ai un problème dans Matlab

Je veux enregistrer un discours pendant 2 secondes puis lire le son enregistré et il tracer

J'utilise le code

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

mais les affiche d'erreur

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

Je Plotted des fichiers audio enregistrés correctement, mais quand je veux enregistrer nouveau par Matlab je reçois cette erreur.

J'ai essayé plusieurs façons en changeant FS et « int16 », mais rien ne se passe.

Merci

Était-ce utile?

La solution

La fonction WAVRECORD ne pas écrire les données dans un fichier, il retourne seulement un vecteur de données pour new_wav, cette variable est ce que vous devez comploter. La fonction wavread lit les données à partir d'un fichier , donc il attend une chaîne de caractères comme entrée. C'est la source de l'erreur que vous obtenez.

Si vous souhaitez enregistrer les données de WAVRECORD dans un fichier , vous devez utiliser la fonction WAVWRITE .

Autres conseils

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

A la fin c'est le code complet:)

% Enregistrez votre voix pendant 5 secondes.

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

% lecture de l'enregistrement.

play(recObj);

% Stocker les données en tableau double précision.

myRecording = getaudiodata(recObj);

% Tracer la forme d'onde.

plot(myRecording);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top