problèmes avec Matlab wavrecord et wavread
-
12-10-2019 - |
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
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);