API
DHDenoiser
현재 단일 스트림 처리만 지원하며, 한 개 이상의 인스턴스를 생성하는 것은 지원되지 않습니다.
노이즈 제거를 위해 DHDenoiser 인스턴스를 생성합니다.
- Javascript
import { DHDenoiser } from 'dh-denoiser';const denoiser = new DHDenoiser();
init
async init(context: AudioContext, processorUrl?: string): void
context
(required): 오디오를 처리하기 위한 AudioContext 인스턴스입니다.processorUrl
(optional):dh-denoiser-processor.js
의 위치를 지정하는 매개변수입니다.processorUrl
매개변수가 설정되어 있지 않은 경우, 라이브러리는dh-denoiser.js
와 같은 경로에dh-denoiser-processor.js
가 있다고 가정합니다. 만약dh-denoiser-processor.js
가 다른 경로에 위치해 있다면, 이 매개변수를 사용하여 해당 경로를 지정해야 합니다.
이 메서드를 호출하면 SDK가 초기화되며, AudioContext
가 준비되고 노이즈 제거 프로세스를 시작할 수 있습니다.
- Javascript
const denoiser = new DHDenoiser();const context = new AudioContext({ sampleRate: 48000 });await denoiser.init(context);// 만약 dh-denoiser-processor.js가 다른 경로에 위치해 있다면:// await denoiser.init(context, './path-to/dh-denoiser-processor.js');
appendDenoiserToStream
async appendDenoiserToStream(stream: MediaStream): Promise<MediaStream>
WebAudio API의 MediaStream을 받아 처리합니다.
이 메서드는 전달받은 MediaStream
에 노이즈 제거를 위한 AudioWorkletNode
를 연결합니다. 이를 통해 원래의 오디오 스트림에 노이즈 제거 기능을 추가할 수 있습니다.
appendDenoiserToStream
를 호출하기 전에는 반드시 init()
메서드를 통해 SDK를 초기화해야 합니다.
다음은 이 메서드의 사용 예입니다:
- Javascript
// MediaStream을 얻는 과정navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => { // 노이즈 제거 기능이 추가된 새로운 MediaStream을 얻습니다. const denoisedStream = await denoiser.appendDenoiserToStream(stream); // denoisedStream을 원하는 방식으로 사용할 수 있습니다.});
이렇게 하면 원본 MediaStream
에 노이즈 제거 기능이 추가된 새로운 MediaStream
을 얻을 수 있습니다. 이 새로운 MediaStream
을 이용하여 오디오 출력, 오디오 녹음 등 다양한 작업을 수행할 수 있습니다.
isEnabled()
isEnabled(): boolean
현재 노이즈 제거가 활성화된 상태인지를 확인하는 메서드입니다. 노이즈 제거가 활성화된 상태라면 true
를, 그렇지 않다면 false
를 반환합니다. 기본 상태는 false
입니다, 즉 노이즈 제거는 기본적으로 비활성화된 상태입니다.
다음은 이 메서드의 사용 예입니다:
- Javascript
if (denoiser.isEnabled()) { console.log('노이즈 제거가 활성화되어 있습니다.');} else { console.log('노이즈 제거가 비활성화되어 있습니다.');}
setEnable()
setEnable(): boolean
노이즈 제거 기능을 활성화합니다. 이 메서드를 호출하면 노이즈 제거가 적용된 오디오 스트림이 출력됩니다. 만약 DHDenoiser
가 제대로 초기화되지 않았다면, 이 메서드는 동작하지 않습니다.
다음은 이 메서드의 사용 예입니다:
- Javascript
denoiser.setEnable();
setDisable()
setDisable(): boolean
노이즈 제거 기능을 비활성화하고, 원본 오디오 스트림을 그대로 출력합니다. 이 메서드를 호출하면 노이즈 제거 없이 원본 오디오가 출력됩니다. 만약 DHDenoiser
가 제대로 초기화되지 않았다면, 이 메서드는 동작하지 않습니다.
다음은 이 메서드의 사용 예입니다:
- Javascript
denoiser.setDisable();
setEnable()
및 setDisable()
메서드를 이용하면, 노이즈 제거 기능을 사용자가 원하는 시점에서 쉽게 활성화하거나 비활성화할 수 있습니다. 이를 통해 노이즈 제거 기능의 사용을 사용자가 직접 제어할 수 있게 됩니다.
getConstraints()
getConstraints(): Object
이 메서드는 노이즈 제거를 최적화하기 위해 사용되는 미디어 트랙 제약조건을 반환합니다. 이 제약조건들은 다른 오디오 신호 처리 알고리즘이 노이즈 제거 성능에 미치는 영향을 최소화하기 위해 사용됩니다.
- Javascript
const constraints = denoiser.getConstraints();
Example Code
<!doctype html><html> <head> <title>Deep Hearing Denoiser Demo</title> </head> <body> <button id="startButton">Start Stream</button> <button id="denoiseButton">Toggle Denoise</button> <script type="module"> import { DHDenoiser } from './dh-denoiser.js'; const startStream = async (denoiser) => { const constraints = denoiser.getConstraints(); const context = new AudioContext({ sampleRate: 48000 }); await denoiser.init(context, './dh-denoiser-processor.js'); try { const stream = await navigator.mediaDevices.getUserMedia({ audio: constraints, }); const denoisedStream = await denoiser.appendDenoiserToStream(stream); // Loopback the denoised audio to the system output. const audio = new Audio(); audio.srcObject = denoisedStream; audio.play(); } catch (err) { console.error('Failed to get user media', err); } }; document.addEventListener('DOMContentLoaded', () => { const denoiser = new DHDenoiser(); const startButton = document.getElementById('startButton'); const denoiseButton = document.getElementById('denoiseButton'); startButton.addEventListener('click', () => { startStream(denoiser); }); denoiseButton.addEventListener('click', () => { if (denoiser.isEnabled()) { denoiser.setDisable(); // Disable denoiser } else { denoiser.setEnable(); // Enable denoiser } }); }); </script> </body></html>