Web Audio API

Web Audio API는 웹 애플리케이션에서 오디오를 생성, 연결, 변형하고 출력하기 위한 고수준 프로그래밍 인터페이스다. JavaScript는 오디오 노드들을 그래프 형태로 연결하여 음원의 신호가 필터와 효과, 믹서 및 출력 장치까지 흐르도록 구성할 수 있다. 음악 제작 도구, 게임...

분류웹 오디오 처리 API
주요 기능브라우저 안의 실시간 오디오 합성·처리
관련 기술World Wide Web, 웹 브라우저, HTTP, JavaScript
관련 표준W3C Web Audio API

Web Audio API는 웹 애플리케이션에서 오디오를 생성, 연결, 변형하고 출력하기 위한 고수준 프로그래밍 인터페이스다. JavaScript는 오디오 노드들을 그래프 형태로 연결하여 음원의 신호가 필터와 효과, 믹서 및 출력 장치까지 흐르도록 구성할 수 있다. 음악 제작 도구, 게임 사운드, 시각화, 음성 처리 및 합성기와 같은 응용 프로그램에서 사용된다.

Web Audio의 중심 객체인 AudioContext는 오디오 노드와 출력 환경을 관리한다. AudioBufferSourceNode와 OscillatorNode는 음원으로 사용할 수 있고 GainNode, BiquadFilterNode, AnalyserNode는 신호의 증폭과 필터링 및 분석에 이용된다. 노드의 연결 구조는 실행 중에 변경할 수 있어 동적인 오디오 처리 체인을 구성할 수 있다.

오디오 매개변수는 AudioParam을 통해 시간에 따른 자동화를 지원한다. 값의 즉각적인 변경뿐 아니라 목표 값과 곡선 형태의 변화를 예약할 수 있어 신시사이저의 엔벌로프나 효과 파라미터 제어에 활용된다. 웹 오디오 시계와 일반적인 JavaScript 이벤트 루프의 실행 시간은 서로 다르므로 정밀한 음악적 타이밍에는 예약 기반의 처리가 중요하다.

AudioWorklet은 사용자 정의 오디오 처리 코드를 별도의 오디오 렌더링 맥락에서 실행할 수 있게 한다. 처리 코드에는 시간과 계산량에 대한 제약이 있으며 오디오 끊김을 줄이기 위해 긴 블로킹 작업과 불필요한 메모리 할당을 피해야 한다. getUserMedia와 결합하면 사용자의 권한 아래 마이크 입력을 받아 효과 처리나 음성 분석에 사용할 수 있다.

웹 오디오 기능은 브라우저의 오디오 출력 권한과 자동 재생 제한, 장치 특성 및 샘플레이트 등의 영향을 받는다. 오디오 노드 그래프가 커지면 CPU 부하가 높아지고 지연이 증가할 수 있어 노드 수와 연결 변경을 관리해야 한다. W3C Web Audio API는 그래프 모델과 노드 인터페이스, 신호 처리 규칙을 규정한다.[1]

역사와 목적

웹 오디오의 등장

표준화

오디오 그래프

AudioContext

AudioNode

연결 구조

음원과 처리 노드

Oscillator

AudioBuffer

Gain

필터

시간 제어

AudioParam

자동화

오디오 시계

사용자 정의 DSP

AudioWorklet

실시간 제약

장치와 입력

마이크

오디오 출력

권한

성능과 호환성

지연

CPU 사용량

자동 재생 정책

관련 문서

  1. W3C Web Audio API ↩