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)
.
Überprüfen Sie https://se.mathworks.com/matlabcentral/answers/165279-how-to-change-wavrecord-to-audiorecorder –