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

War es hilfreich?

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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top