開発ガイド
未対応ブラウザ利用時のハンドリング
AI Noise Canceller は、現在スマートフォンを除く Chrome / Edge でのみ動作します。
それ以外のブラウザはサポートしておらず、動作保証はありません。そのため、動作するかどうかは、isSupported
メソッドを使用して判定してください。
if (SkyWayNoiseCanceller.isSupported() === false) { console.warn("SkyWay Noise Canceller is not supported"); return; }
エラーハンドリング
AI Noise Canceller は、短時間のネットワーク切断時には自動的に再接続処理を行います。しかし、長時間のネットワーク切断など回復不可能なエラーが発生した場合には、onFatalError
イベントが発火します。このイベントが発火した場合、一時的に AI Noise Canceller が利用できなくなる可能性が高いため、元の Audio Stream を利用するなど、アプリケーション側での対応が必要です。
// 元のStream const audio = await SkyWayStreamFactory.createMicrophoneAudioStream({ echoCancellation: false, }); noiseCanceller.onFatalError((event: CustomEvent<SkyWayNCError>) => { const error = event.detail; // connect中に発生するのはProcessErrorのみ if (error.type === "ProcessError") { myAudioPublication.replaceStream(audio, { releaseOldStream: false, }); } });
ブラウザのノイズ抑制機能の無効化
getUserMedia()
や SkyWayStreamFactory.createMicrophoneAudioStream
を使用して Audio Stream を取得する場合、 noiseSuppression
を設定できます。
しかし、AI Noise Canceller を利用する際は音声ノイズを抑制する機能が競合するため、 noiseSuppression
の設定を false
にすることを推奨します。
const audio = await SkyWayStreamFactory.createMicrophoneAudioStream({ noiseSuppression: false, // AI Noise Cancellerと競合しないようにfalseに設定 });
また、開発中に自身で動作確認するようなユースケースで Publish した音声を Subscribe してループバックする場合は、echoCancellation
も false
に設定すると音声が聞き取りやすくなります。
const audio = await SkyWayStreamFactory.createMicrophoneAudioStream({ echoCancellation: false, // ループバック用にfalseに設定 noiseSuppression: false, });
課金対象期間について
AI Noise Canceller の課金対象期間は、connect
を呼び出してから dispose
を呼び出すまでの期間です。
現在 mute/unmute
の機能は提供していないため、一時的に無効化する場合でも必ず以下のように dispose
を呼び出してリソースを解放してください。
// replaceStreamで適用前のAudio Streamにreplaceする myAudioPublication.replaceStream(audio, { releaseOldStream: false, }); noiseCanceller.dispose();
また、onFatalError
イベントが発火した際は内部で自動的に dispose
が呼び出され課金集計処理が止まります。
ノイズ抑制強度(strength)の調整
strength
はノイズ抑制の強度を設定するための値です。インスタンス生成時に設定できるほか、changeStrength
メソッドを使用して任意のタイミングでの変更も可能です。
何も指定しなかった場合は 90 が設定されます。
strength
を 100 に近い数値に設定した場合、大きなノイズが発生すると音声がビリつくなどの不自然さが生じることがあります。快適な通話が実現できるレベルまでノイズを抑えることが目的の場合は 90 での使用をおすすめします。
// インスタンス生成時に設定する場合 noiseCanceller = new SkyWayNoiseCanceller(context, { strength: 80 }); // changeStrengthで変更する場合 const strength = 80; noiseCanceller.changeStrength(strength);
モデルタイプについて
モデルタイプは small
, medium
, large
の 3 種類があり、インスタンス生成時に設定できます。
何も指定しなかった場合は small
が設定されます。
small
が最も処理負荷を抑えられるため、様々なデバイスで活用されるユースケースでは small
の利用を推奨します。
モデルタイプを変更したい場合は、インスタンスを dispose
して新しいインスタンスを作成してください。
// 初期化時にモデルを'medium'に設定 noiseCanceller = new SkyWayNoiseCanceller(context, { modelType: "medium" });