Процесс и анализирует передачу потокового аудио

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

Откройте Audio Test Bench

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

Смотрите также

| | | | | |

Похожие темы