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

¿Fue útil?

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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top