Обработка и анализ передачи потокового аудио

В этом примере показов, как создать аудио испытательного стенда и применить обработку в реальном времени.

Откройте Audio Test Bench

Приложение Audio Test Bench позволяет вам графически настроить вход и вывод аудио, обработку аудио и открыть общие инструменты анализа, такие как timescope и dsp.SpectrumAnalyzer. Щелкните, чтобы считать из файла и записать в динамик.

audioTestBench

Просмотр аудиосигнала во временных и частотных диапазонах

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

Применение динамического сжатия области значений

Чтобы применить динамическое сжатие области значений к аудио, сначала щелкните, чтобы остановить аудио ввода-вывода, затем введите compressor в поле редактирования «Объект в процессе тестирования». Настраиваемые свойства compressor объект доступен. Вы можете настроить эти свойства во время испытательного стенда.

Сгенерируйте испытательный стенд

Чтобы сгенерировать тестовый скрипт стенда, сначала щелкните, чтобы остановить аудио ввод-вывод, затем нажмите. Audio Test Bench генерирует код в новом скрипте без названия. Код, сгенерированный испытательным стендом в этом примере, показан ниже.

% Test bench script for 'compressor'.
% Generated by Audio Test Bench on 27-May-2020 15:34:48 -0400.

% Create test bench input and output
fileReader = dsp.AudioFileReader('Filename','RockGuitar-16-44p1-stereo-72secs.wav');
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

% Create scopes
timeScope = dsp.TimeScope('SampleRate',fileReader.SampleRate, ...
    'TimeSpan',1, ...
    'TimeSpanOverrunAction','Scroll', ...
    'AxesScaling','Manual', ...
    'BufferLength',4*fileReader.SampleRate, ...
    'ShowLegend',true, ...
    'ChannelNames',{'Input channel 1','Output channel 1'}, ...
    'ShowGrid',true, ...
    'YLimits',[-1 1]);
specScope = dsp.SpectrumAnalyzer('SampleRate',fileReader.SampleRate, ...
    'PlotAsTwoSidedSpectrum',false, ...
    'FrequencyScale','Log', ...
    'ShowLegend',true, ...
    'ChannelNames',{'Input channel 1','Output channel 1'}, ...
    'YLimits',[-137.68466894418421 21.786707286754297]);


% Set up the system under test
sut = compressor;
sut.SampleRate = fileReader.SampleRate;

% Uncomment to open visualizer:
% visualize(sut);

% Open parameterTuner for interactive tuning during simulation
tuner = parameterTuner(sut);
drawnow

% Stream processing loop
nUnderruns = 0;
while ~isDone(fileReader)
    % Read from input, process, and write to output
    in = fileReader();
    out = sut(in);
    nUnderruns = nUnderruns + deviceWriter(out);
    
    % Visualize input and output data in scopes
    timeScope([in(:,1),out(:,1)]);
    specScope([in(:,1),out(:,1)]);
    
    % Process parameterTuner callbacks
    drawnow limitrate
end

% Clean up
release(sut)
release(fileReader)
release(deviceWriter)
release(timeScope)
release(specScope)

В скрипт можно добавить дополнительные шаги обработки, возможностей и инструменты анализа. Если вы запускаете сгенерированный скрипт, parameterTuner открывает и позволяет вам настройкам параметров во время обработки потока.

См. также

| | | | | |

Похожие темы