wavrecord problemas con MATLAB y wavread
-
12-10-2019 - |
Pregunta
Tengo un problema en Matlab
Quiero grabar un discurso durante 2 segundos y luego leen el sonido grabado y la trama es
Yo uso el código
FS = 8000;
new_wav = wavrecord(2*FS,FS,'int16');
x = wavread(new_wav);
plot(x);
pero el aparece de error
??? 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);
he trazado correctamente los archivos de sonido grabados, pero cuando quiero grabar uno nuevo a través de MATLAB me sale este error.
He intentado muchas maneras por las cambiantes FS y 'Int16' pero no pasa nada.
gracias
Solución
La función WAVRECORD no escribe datos en un archivo, que sólo devuelve un vector de datos para new_wav
, por lo que esta variable es lo que debe ser trazado. La función wavread lee datos de un archivo , por lo que espera una cadena de caracteres que la entrada. Ese es el origen del error que está recibiendo.
Si desea guardar los datos de WAVRECORD a un archivo , es necesario utilizar la función WAVWRITE .
Otros consejos
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);
At the end this is the complete code :)
% Record your voice for 5 seconds.
recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 3);
disp('End of Recording.');
% Play back the recording.
play(recObj);
% Store data in double-precision array.
myRecording = getaudiodata(recObj);
% Plot the waveform.
plot(myRecording);