2017-02-14 2 views
1

Ich habe einen Code, der in neueren Versionen von Matlab nicht mehr funktioniert, weil Wavrecord nicht mehr verwendet wird. Wie kann ich dies konvertieren:Wie kann ich Wavrecord in Audiorecorder konvertieren?

Fs=8000; 

my_voice=wavrecord(3*Fs,Fs,'int16'); 

wavplay(myvoice,Fs); 

in einer Weise, die jetzt auf Matlab funktioniert?

+0

Überprüfen Sie https://se.mathworks.com/matlabcentral/answers/165279-how-to-change-wavrecord-to-audiorecorder –

Antwort

0

Der Code:

% Setup the recording object 
Fs = 8000; 
Nbits = 16; 
my_recorder = audiorecorder(Fs, Nbits, 1) 

% Record the audio 
record(my_recorder, 3); 
% Retrieve the sampled recording 
my_voice = getaudiodata(my_recorder); 
% Play the sampled recording 
play(my_voice); 

Dies wird reproduzieren Sie den Code in Ihre Frage gestellt haben (ähnlich dem answer @Jørgen linked in the comments).

Erklärung des Above-Code:

Lassen Sie uns zuerst brechen, was Ihr Code tat.

my_voice = wavrecord(3*Fs, Fs, 'int16') Aufzeichnungen 3 Sekunden 16-Bit-Audiodaten mit Fs = 8000 Hz abgetastet. Wenn Sie keinen Kanal angeben, lautet der Standardwert mono oder 1-Kanal-Eingabe.

Jetzt möchten Sie dieses Verhalten mit der audiorecorder()-Funktion replizieren.

audiorecorder(Fs, nBits, nChannels) erstellt ein audiorecorder Objekt, das nBits Audio bei Fs Hz abtastet.

Sie wollen 16-Bit-Audio aufnehmen, so nBits = 16 bei Fs = 8000 Hz abgetastet und da Sie keinen Kanal mit wavrecord() angegeben haben Sie wurden unter Verwendung von 1-Kanal-Audio-Eingang, so dass hier nChannels ist 1: my_recorder = audiorecorder(8000,16,1).

Sie möchten immer noch eine Aufzeichnungszeit von 3 Sekunden angeben. Sie sollten daher Daten vom my_recorder Objekt für 3 Sekunden: record(my_recorder, 3) aufzeichnen.

Um das gesampelte Audio zu erhalten: my_voice = getaudiodata(my_recorder).

Verwandte Themen