API
VoiceEnhancer
오디오 프로세싱을 위한 VoiceEnhancer 인스턴스를 생성합니다.
- Javascript
import { VoiceEnhancer } from 'voice-enhancer';const voiceEnhancer = new VoiceEnhancer();
createVoiceEnhancerNode
VoiceEnhancer 기능을 적용하기 위해 AudioWorkletNode를 생성합니다.
async createVoiceEnhancerNode(context: AudioContext, processorUrl?: string): AudioWorkletNode
context
(required): AudioContext 인스턴스입니다.processorUrl
(optional):voice-enhancer-processor.js
의 경로를 설정하는 매개변수입니다. 해당 파라미터가 생략된 경우voice-enhancer.js
와 같은 경로에voice-enhancer-processor.js
가 있다고 가정합니다. 만약voice-enhancer-processor.js
가 다른 경로에 위치해 있다면, 이 매개변수를 사용하여 해당 경로를 지정해야 합니다.
- Javascript
const voiceEnhancer = new VoiceEnhancer();const audioContext = new AudioContext({ sampleRate: 16000 });const voiceEnhancerNode = await voiceEnhancer.createVoiceEnhancerNode(audioContext);// 만약 voice-enhancer-processor.js가 다른 경로에 위치해 있다면:const voiceEnhancerNode = await voiceEnhancer.createVoiceEnhancerNode( audioContext, './path-to/voice-enhancer-processor.js',);
createVoiceEnhancerNode를 호출하여 AudioWorkletNode를 성공적으로 생성하였다면 mic stream과 farend stream을 각각 연결합니다.
Acoustic Echo Cancellation(AEC)를 적용하기 위해서는 farend stream을 필요로 합니다. WebRTC 환경에서 farend stream은 remote stream으로 생각할수 있습니다. 즉, 스피커를 통해 출력되어야 하는 stream을 의미합니다.
micStream: MediaStream 연결 방법
micStream은 사용자의 마이크를 통해 입력받는 오디오 stream이며 local stream을 의미합니다.
- Javascript
const micSourceNode = this.audioContext.createMediaStreamSource(this.micStream);const voiceEnhancerDestNode = this.audioContext.createMediaStreamDestination();this.voiceEnhancerNode = await this.voiceEnhancer.createVoiceEnhancerNode( this.audioContext,);micSourceNode.connect(this.voiceEnhancerNode).connect(voiceEnhancerDestNode);const voiceEnhancerStream = voiceEnhancerDestNode.stream; // voiceEnhancer가 연결된 stream입니다.
farendStream: MeidaStream 연결 방법
farendStream은 자신을 제외한 모든 참여자의 스트림을 포함해야합니다. 즉 mixing되어 있는 remote stream을 의미합니다.
- Javascript
const farendDest = this.audioContext.createMediaStreamDestination();this.farendDestNode = this.audioContext.createMediaStreamSource( farendDest.stream,);// connect 함수의 outputIndex와 inputIndex 파라미터는 아래와 동일하게 설정해야 합니다.this.farendDestNode.connect(this.voiceEnhancerNode, 0, 1);// audioTrack을 farendDestNode에 추가합니다.const farendNode = this.audioContext.createMediaStreamSource( new MediaStream([track]),);farendNode.connect(this.farendDestNode);
isEnabled()
현재 VoiceEnhancer가 활성화된 상태인지를 확인하는 메서드입니다. 기본 상태는 false
입니다, 즉 VoiceEnhancer는 기본적으로 비활성화된 상태입니다.
isEnabled(): boolean
다음은 이 메서드의 사용 예입니다:
- Javascript
if (voiceEnhancer.isEnabled()) { voiceEnhancer.setDisable();} else { voiceEnhancer.setEnable();}
setEnable()
VoiceEnhancer를 활성화합니다. VoiceEnhancer 초기화에 실패한 경우 false를 반환합니다.
setEnable(): boolean
다음은 이 메서드의 사용 예입니다:
- Javascript
voiceEnhancer.setEnable();
setDisable()
VoiceEnhancer를 비활성화하고, 원본 오디오 스트림을 그대로 출력합니다. VoiceEnhancer 초기화에 실패한 경우 false
를 반환합니다.
setDisable(): boolean
다음은 이 메서드의 사용 예입니다:
- Javascript
voiceEnhancer.setDisable();
setEnable()
및 setDisable()
메서드를 이용하면, 노이즈 제거 기능을 사용자가 원하는 시점에서 쉽게 활성화하거나 비활성화할 수 있습니다. 이를 통해 노이즈 제거 기능의 사용을 사용자가 직접 제어할 수 있게 됩니다.
getConstraints()
권장되는 audio constraints를 반환합니다. 다른 오디오 신호 처리 알고리즘이 VoiceEnhancer 성능에 미치는 영향을 최소화하기 위함입니다.
getConstraints(): Object
- Javascript
const constraints = voiceEnhancer.getConstraints();