How to get partial data from audiorecorder

Hi.
I want to plot my speech in realtime. now i using this code
clc; clear all; close all;
fs=14000;
l=10;
recObj = audiorecorder(fs,16,1,1);
%recObj.UserData=1;
recObj.TimerFcn = {@my_callback_fcn};
disp('Start speaking.')
recordblocking(recObj, l);
disp('End of Recording.');
y = getaudiodata(recObj);
play(recObj);
x=0:1/fs:l-1/fs;
plot(x,y);
and callback function
function my_callback_fcn(obj,event)
y = getaudiodata(obj);
plot(y);
hold on;
obj.UserData=obj.TotalSamples;
end
In this case my script begins to lag after 3-4 secs of work. How can i solve that problem? I tried to find find some fields in
recobj
that contain original data, but seems like it doesnt. So how can i atleast get partial data from recObj(planing to use plot and hold on)?

 Réponse acceptée

Walter Roberson
Walter Roberson le 12 Fév 2016

1 vote

audiorecorder is not designed for real-time work. You should look at the DSP System Toolbox, which has ability to use ASIO drivers for low-latency work.

2 commentaires

Derrick Ling
Derrick Ling le 19 Sep 2017
Is this answer still valid? from this website, it states audio system toolbox is capable of doing real-time signal processing
That toolbox did not exist at the time that answer was written. Probably you could use either toolbox now

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by