스트리밍 오디오를 처리하고 분석하기
이 예제에서는 오디오 테스트 벤치를 만들고 실시간 처리를 적용하는 방법을 보여줍니다.
오디오 테스트 벤치 열기
Audio Test Bench 앱을 사용하면 오디오 입력 및 출력과 오디오 처리를 시각적으로 설정하고 자주 사용하는 분석 툴(예: timescope 및 spectrumAnalyzer)을 열 수 있습니다. 파일에서 읽어오고 스피커에 쓰려면
을 클릭하십시오.
audioTestBench

시간 영역과 주파수 영역에서 오디오 신호 보기
시간 영역과 주파수 영역에서 오디오 신호를 분석하려면
및
을 클릭하십시오.


동적 범위 압축 적용하기
오디오에 동적 범위 압축을 적용하려면 먼저
을 클릭하여 오디오 I/O를 중지한 다음 테스트 대상 객체 추가 편집 상자에 compressor를 입력하십시오. compressor 객체의 조정 가능형 속성이 노출됩니다. 테스트 벤치가 실행되는 동안 이러한 속성을 조정할 수 있습니다.



테스트 벤치 스크립트 생성하기
테스트 벤치 스크립트를 생성하려면 먼저
을 클릭하여 오디오 I/O를 중지한 다음
을 클릭하십시오. 오디오 테스트 벤치는 새 untitled 스크립트에 코드를 생성합니다. 아래에는 이 예제의 테스트 벤치에서 생성된 코드가 표시되어 있습니다.
% Test bench script for 'compressor'. % Generated by Audio Test Bench on 06-Jul-2022 11:47:07 UTC-04:00. % Create test bench input and output fileReader = dsp.AudioFileReader('Filename','RockGuitar-16-44p1-stereo-72secs.wav'); deviceWriter = audioDeviceWriter('SampleRate',fileReader.SampleRate); % Create scopes timeScope = timescope(SampleRate=fileReader.SampleRate, ... TimeSpanSource="property", ... TimeSpan=1, ... AxesScaling="manual", ... BufferLength=176400, ... ChannelNames=["Input channel 1","Input channel 2","Output channel 1","Output channel 2"], ... Position=[538 508 800 500], ... YLimits=[-1 1], ... ShowLegend=true); specScope = spectrumAnalyzer(SampleRate=fileReader.SampleRate, ... PlotAsTwoSidedSpectrum=false, ... FrequencyScale="log", ... AxesScaling="manual", ... AveragingMethod="exponential", ... ForgettingFactor=0.8, ... YLimits=[-132.83298112 25.39711835], ... ChannelNames=["Input channel 1","Input channel 2","Output channel 1","Output channel 2"], ... ShowLegend=true); % 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,out); specScope(in,out); % Process parameterTuner callbacks drawnow limitrate end % Clean up release(sut) release(fileReader) release(deviceWriter) release(timeScope) release(specScope)
처리 단계, 스코프 및 분석 툴을 스크립트에 추가할 수 있습니다. 생성된 스크립트를 실행하면 parameterTuner가 열리고 스트림 처리 중에 파라미터를 조정할 수 있습니다.

참고 항목
오디오 테스트 벤치 | parameterTuner | audioPlayerRecorder | dsp.AudioFileWriter | dsp.AudioFileReader | audioDeviceReader | audioDeviceWriter