0.0.2 • Published 7 months ago
@dannadori/audio-recorder-js v0.0.2
@dannadori/audio-recorder-js
概要
@dannadori/audio-recorder-js
は、Web Audio APIを活用した高性能なオーディオ録音・処理ライブラリです。AudioWorkletを使用したリアルタイム処理により、低遅延で高品質なオーディオ処理を実現します。
主な特徴:
- Web Audio APIとAudioWorkletによる高性能なオーディオ処理
- 高度なノイズサプレッション エコーキャンセレーション機能
- オーディオ入力/出力/モニターのゲイン調整
- オーディオデータのコールバック処理による柔軟なカスタマイズ
インストール
npm install @dannadori/audio-recorder-js
# または
yarn add @dannadori/audio-recorder-js
# または
pnpm add @dannadori/audio-recorder-js
基本的な使い方
直接AudioRecorderクラスを使用する例
import { AudioRecorder, AudioDataCallback } from '@dannadori/audio-recorder-js';
// AudioContextの作成
const audioContext = new AudioContext();
// AudioRecorderの初期化(第2引数はVoice Focus有効化フラグ)
const audioRecorder = new AudioRecorder(audioContext, true);
// 初期化の完了を待機
await audioRecorder.isInitialized();
// オーディオデータのコールバック設定
const audioDataCallback: AudioDataCallback = {
// オーディオデータを受信したときのコールバック
onAudioReceived: async (data: Float32Array) => {
console.log('オーディオデータ受信:', data.length);
},
// オーディオデータを処理するコールバック(加工したデータを返す)
processAudio: async (data: Float32Array) => {
// ここでデータを加工できます
return data; // 加工したデータを返す
}
};
audioRecorder.setAudioDataCallback(audioDataCallback);
// 設定の更新
audioRecorder.updateSettings({
audioRecorderSetting: {
audioInput: 'default', // デバイスIDまたはMediaStream
sampleRate: 48000,
echoCancel: true,
noiseSuppression: true,
noiseSuppression2: true, // Voice Focus使用
inputGain: 1.0,
outputGain: 1.0,
monitorGain: 0.5,
passThroughConfirmationSkip: false
},
workletNodeSetting: {
serverUrl: '',
protocol: 'rest',
sendingSampleRate: 48000,
sendingChunkSec: 0.2,
sendingChunkAsBulk: false,
enableFlatPath: false,
workOnColab: false
},
workletSetting: {
numTruncateThreshold: 100,
outputBufferFactor: 5
}
});
// 録音開始
await audioRecorder.start();
// 録音停止
await audioRecorder.stop();
// 出力ストリームの取得
const outputStream = audioRecorder.stream;
// モニターストリームの取得
const monitorStream = audioRecorder.monitorStream;
主な機能と設定オプション
オーディオ入力設定
audioInput
: マイクのデバイスIDまたはMediaStreamオブジェクトsampleRate
: サンプルレート(デフォルト: 48000Hz)echoCancel
: エコーキャンセレーション有効/無効noiseSuppression
: ブラウザ標準のノイズサプレッション有効/無効noiseSuppression2
: Amazon Chime SDKのVoice Focus有効/無効
ゲイン設定
inputGain
: 入力ゲイン(0.0〜1.0)outputGain
: 出力ゲイン(0.0〜1.0)monitorGain
: モニターゲイン(0.0〜1.0)
Worklet設定
numTruncateThreshold
: バッファ切り詰めの閾値outputBufferFactor
: 出力バッファサイズの係数
オーディオデータコールバック
オーディオデータを処理するためのコールバック関数を設定できます:
setAudioDataCallback({
// オーディオデータを受信したときのコールバック
onAudioReceived: async (data: Float32Array) => {
// データを受信したときの処理
},
// オーディオデータを処理するコールバック
processAudio: async (data: Float32Array) => {
// データを加工して返す
return processedData;
}
});
注意事項
- AudioWorkletを使用するため、最新のブラウザが必要です
- ブラウザのセキュリティ制限により、HTTPS環境またはlocalhost環境での実行が推奨されます
- マイクへのアクセス許可が必要です
ライセンス
このライブラリはMITライセンスの下で公開されています。