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

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

Откройте Audio Test Bench

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

audioTestBench

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

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

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

Чтобы применить сжатие динамического диапазона к аудио, сначала щелкните, чтобы остановить аудио ввод-вывод, затем ввести compressor в окне редактирования Object Under Test. Настраиваемые свойства compressor объект отсоединен. Можно настроить эти свойства, в то время как испытательный стенд запускается.

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

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

% Test bench script for 'compressor'.
% Generated by Audio Test Bench on 31-Oct-2019 13:55:00 -0400.

% Create test bench input and output
fileReader = dsp.AudioFileReader('Filename','RockDrums-44p1-stereo-11secs.mp3');
deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate);

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


% Set up the system under test
sut = compressor;
sut.SampleRate = fileReader.SampleRate;
sut.Ratio = 9.11364;
sut.Threshold = -35.8766;
sut.KneeWidth = 1.62338;
sut.AttackTime = 0.350649;
sut.MakeUpGain = 2.91558;

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

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

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

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

| | | | | |

Похожие темы