Skip to main content

API

DHDenoiser

노트

현재 단일 스트림 처리만 지원하며, 한 개 이상의 인스턴스를 생성하는 것은 지원되지 않습니다.

노이즈 제거를 위해 DHDenoiser 인스턴스를 생성합니다.


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가 준비되고 노이즈 제거 프로세스를 시작할 수 있습니다.


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를 초기화해야 합니다.

다음은 이 메서드의 사용 예입니다:


// 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입니다, 즉 노이즈 제거는 기본적으로 비활성화된 상태입니다.

다음은 이 메서드의 사용 예입니다:


if (denoiser.isEnabled()) {
console.log('노이즈 제거가 활성화되어 있습니다.');
} else {
console.log('노이즈 제거가 비활성화되어 있습니다.');
}

setEnable()

setEnable(): boolean

노이즈 제거 기능을 활성화합니다. 이 메서드를 호출하면 노이즈 제거가 적용된 오디오 스트림이 출력됩니다. 만약 DHDenoiser가 제대로 초기화되지 않았다면, 이 메서드는 동작하지 않습니다.

다음은 이 메서드의 사용 예입니다:


denoiser.setEnable();

setDisable()

setDisable(): boolean

노이즈 제거 기능을 비활성화하고, 원본 오디오 스트림을 그대로 출력합니다. 이 메서드를 호출하면 노이즈 제거 없이 원본 오디오가 출력됩니다. 만약 DHDenoiser가 제대로 초기화되지 않았다면, 이 메서드는 동작하지 않습니다.

다음은 이 메서드의 사용 예입니다:


denoiser.setDisable();

setEnable()setDisable() 메서드를 이용하면, 노이즈 제거 기능을 사용자가 원하는 시점에서 쉽게 활성화하거나 비활성화할 수 있습니다. 이를 통해 노이즈 제거 기능의 사용을 사용자가 직접 제어할 수 있게 됩니다.

getConstraints()

getConstraints(): Object

이 메서드는 노이즈 제거를 최적화하기 위해 사용되는 미디어 트랙 제약조건을 반환합니다. 이 제약조건들은 다른 오디오 신호 처리 알고리즘이 노이즈 제거 성능에 미치는 영향을 최소화하기 위해 사용됩니다.


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>