発話検知

SkyWay JavaScript SDK が提供する getAudioLevel() API を用いることで、音量を可視化する UI(ボイスインジケーター)などの実装が可能です。
本ページでは、getAudioLevel() API の利用方法について解説します。

人の声量に絞って取得したい場合は、AI Noise Canceller と併用することで実現可能です。
このライブラリを用いることで、人の声以外の雑音を抑制することができます。
AI Noise Canceller については、こちらの資料をご確認ください。

ストリームの音量レベルを取得する

SkyWay JavaScript SDK では、音声ストリームの音量レベルを取得する API を提供しています。

  • getAudioLevel(): number
    • 直近100ミリ秒間における音声ストリームの最大音量を返します。
    • 戻り値:
      • number: 音量レベルの値を0(無音)から1(最大音量)までの範囲で返します。
      • 音声データが流れていない場合は 0 を返します。
    • API Reference Link:

getAudioLevel() は呼び出される時点の値しか返さないため、ボイスインジケーターのように継続的に音量レベルを監視したい場合は、定期的にメソッドを呼び出します。 以下のサンプルコードはクイックスタートのコードをベースに、setInterval を使って100ミリ秒ごとに、自身が publish した audio の音量レベルを取得します。

RemoteAudioStream でも全く同じように使用できますのでコード例は略します。

const audioPublication = await me.publish(audio, { type: "p2p" }); setInterval(() => { const level = audioPublication.stream.getAudioLevel(); // 発話判定の閾値は環境に合わせて適宜調整してください if(level > 0.01) { console.log(`Voice Detected! (audio level: ${level})`); } }, 100);