MATLAB: Как демодулировать аудиофайл STREAMING, а не сохраненный аудиофайл? - PullRequest
0 голосов
/ 05 июня 2018

Я написал простую программу MATLAB ниже для демодуляции аудиосигнала, который ранее был частотно модулирован с несущей частотой 10000 Гц.Программа записывает частотно-модулированный сигнал, сохраняет его на диске (для возможного последующего использования), затем извлекает и демодулирует его.Теперь я хотел бы иметь возможность демодулировать (и отображать) сигнал непрерывно по мере его поступления, без необходимости сначала сохранять его.Любые предложения о том, как изменить код MATLAB ниже?

% FM Demodulate an Audio File June 5, 2018

%% Record the previously frequency-modulated signal for a few seconds.
Fs = 44100; % Sample frequency of the sound wave
duration = 5; % Duration of recording in seconds
recObj = audiorecorder(Fs,16,1); % Sets up the recording conditions

pause(4) % Pause before recording 
disp('Start recording.')
recordblocking(recObj,duration);
disp('End of recording.');

%% Store data in double-precision array.
filename = 'RecordedWave.wav';
myRecording = getaudiodata(recObj);
Fs = get(recObj, 'SampleRate');
audiowrite(filename,myRecording,Fs) % Writes the y and Fs as a .wav file

%% Read it back into memory
[y,Fs] = audioread(filename); 
% The above statement reads the stored .wav file and loads the y vector
% as well as the stored value of Fs for that .wav file.

%% Demodulate the recorded high-frequency FM sound signal
z = demod(y,10000,44100,'fm');

%% Make and then apply a bandpass filter
filterOrder = 2;
fcutlow = 2;
fcuthigh= 10;
[b,a] = butter(filterOrder,[fcutlow,fcuthigh]/(Fs/2),'bandpass');
z_filtered = filter(b,a,z); % Apply the bandpass filter

%% Plot the demodulated and filtered signal
figure
t_sec = (0:1/Fs:duration-1/Fs);  % here is the vector of time
plot(t_sec,z_filtered)

1 Ответ

0 голосов
/ 17 июля 2018

Вам необходимо использовать объекты audioDeviceReader и audioDeviceWriter, которые позволяют собирать данные и воспроизводить данные порциями.Таким образом, если ваш алгоритм достаточно быстр, вы можете выполнять обработку в режиме реального времени.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...