Probleme mit Matlab wavrecord und wavread
-
12-10-2019 - |
Frage
Ich habe ein Problem in Matlab
Ich will eine Rede aufnehmen kann für 2 Sekunden, dann den aufgenommenen Ton lesen und zeichnen es
Ich verwende den Code
FS = 8000;
new_wav = wavrecord(2*FS,FS,'int16');
x = wavread(new_wav);
plot(x);
aber die Fehler erscheint
??? 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);
geplottet ich richtig Tondateien aufgezeichnet, aber wenn ich will neue durch Matlab aufnehmen erhalte ich diese Fehler.
Ich habe versucht, viele Möglichkeiten, durch Änderung FS und ‚int16‘ aber nichts passiert.
Dank
Lösung
Die Funktion WAVRECORD schreibt keine Daten in eine Datei, es gibt nur einen Datenvektor für new_wav
, so dass dieser Variable ist, was Sie Plotten sein sollten. Die Funktion WAVREAD liest Daten aus einer Datei , so erwartet er eine Zeichenkette als Eingang. Das ist die Quelle des Fehlers Sie bekommen.
Wenn Sie die Daten von WAVRECORD in einer Datei speichern möchten , müssen Sie die Funktion WAVWRITE verwenden.
Andere Tipps
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);
Am Ende ist dies der vollständige Code:)
% Nehmen Sie Ihre Stimme für 5 Sekunden.
recObj = audiorecorder;
disp('Start speaking.')
recordblocking(recObj, 3);
disp('End of Recording.');
% Spielen Sie die Aufnahme zurück.
play(recObj);
% Speichern von Daten in doppelter Genauigkeit Array.
myRecording = getaudiodata(recObj);
% Zeichnen Sie die Wellenform.
plot(myRecording);