exponenta event banner

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

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

Откройте стенд аудиотестирования

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

audioTestBench

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

Щелкните и для анализа звукового сигнала во временной и частотной областях.

Применить динамическое сжатие диапазона

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

Создание сценария тестового стенда

Чтобы создать скрипт тестового стенда, сначала нажмите кнопку, чтобы остановить звуковой ввод-вывод, а затем нажмите кнопку. Стенд аудиотестирования генерирует код в новом сценарии без названия. Ниже приведен код, сгенерированный испытательным стендом в этом примере.

% 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 открывает и позволяет настраивать параметры во время обработки потока.

См. также

| | | | | |

Связанные темы