0.0.2 • Published 7 months ago

@dannadori/audio-recorder-js v0.0.2

Weekly downloads
-
License
-
Repository
-
Last release
7 months ago

@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ライセンスの下で公開されています。

0.0.2

7 months ago

0.0.1

8 months ago