В этом примере показано, как создать аудио испытательный стенд и применить обработку в режиме реального времени.
Приложение Audio Test Bench позволяет вам графически настроить свой аудиовход и вывести, обработка аудиоданных, и открыть общие аналитические инструменты как timescope
и dsp.SpectrumAnalyzer
. Щелкните, чтобы читать из файла и записать в ваш динамик.
audioTestBench
Щелкните и анализировать звуковой сигнал во временном и частотном диапазоне.
Чтобы применить сжатие динамического диапазона к аудио, сначала щелкните, чтобы остановить аудио ввод-вывод, затем ввести compressor
в окне редактирования Object Under Test. Настраиваемые свойства 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
открывает и позволяет настройкам параметров в то время как потоковая обработка.
Audio Test Bench | parameterTuner
| audioPlayerRecorder
| dsp.AudioFileWriter
| dsp.AudioFileReader
| audioDeviceReader
| audioDeviceWriter