В этом примере показано, как создать стенд аудиотестирования и применить обработку в реальном времени.
Приложение 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 открывает и позволяет настраивать параметры во время обработки потока.

Стенд аудиотестирования | audioDeviceReader | audioDeviceWriter | audioPlayerRecorder | dsp.AudioFileReader | dsp.AudioFileWriter | parameterTuner