開発ガイド
TypeScript で AI Noise Canceller を利用する際の注意点
TypeScript を用いた開発に AI Noise Canceller を利用する場合、連携しようとする JavaScript SDK のバージョンによって型の互換性に伴うエラーや警告が表示される場合がございます。 対処が必要な場合は、AI Noise Canceller もしくは JavaScript SDK のどちらかを、他方に適合するバージョンへ更新してご利用ください。 なお、AI Noise Canceller と連携可能な JavaScript SDK のバージョンは、リリースノートからご確認いただけます。
未対応ブラウザ利用時のハンドリング
AI Noise Canceller は Chrome / Edge / Safari で動作します。
それ以外のブラウザはサポートしておらず、動作保証はありません。そのため、動作するかどうかは、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({
noiseSuppression: 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, // 1 人で動作確認する際に聞き取りやすくするための設定であり、実環境では true を推奨
noiseSuppression: false,
});課金対象期間について
AI Noise Canceller の課金対象期間は、connect を呼び出してから dispose を呼び出すまでの期間です。

現在 mute/unmute の機能は提供していないため、一時的に無効化する場合でも必ず以下のように dispose を呼び出してリソースを解放してください。
// replaceStreamで適用前のAudio Streamにreplaceする
myAudioPublication.replaceStream(audio, {
releaseOldStream: false,
});
noiseCanceller.dispose();また、onFatalError イベントが発火した際は内部で自動的に dispose が呼び出され課金集計処理が止まります。
マイクの切り替え
現在 Stream の変更機能は提供しておりません。 マイクの切り替えに伴う Stream の変更が必要な場合は、新たにインスタンスを生成してご利用ください。
// インスタンス化と初期化を行う関数
const setupNoiseCanceller = async (context: SkyWayContext, audio: LocalAudioStream): Promise<
[noiseCanceller: SkyWayNoiseCanceller, processedAudio: LocalAudioStream]
> => {
const noiseCanceller = new SkyWayNoiseCanceller(context);
return new Promise((resolve) => {
noiseCanceller.onReady(async () => {
const processedAudio = await noiseCanceller.connect(audio);
resolve([noiseCanceller, processedAudio]);
});
noiseCanceller.onFatalError(...);
noiseCanceller.init();
});
};
const devices = await SkyWayStreamFactory.enumerateInputAudioDevices();
// 元のマイクの音声を Publish
const audio = await SkyWayStreamFactory.createMicrophoneAudioStream({
deviceId: devices[0].id,
noiseSuppression: false,
});
let [noiseCanceller, processedAudio] = await setupNoiseCanceller(context, audio);
const publication = await person.publish(processedAudio);
// 別のマイクへの切り替え
const anotherAudio = await SkyWayStreamFactory.createMicrophoneAudioStream({
deviceId: devices[1].id,
noiseSuppression: false,
});
const [anotherNoiseCanceller, anotherProcessedAudio] =
await setupNoiseCanceller(context, anotherAudio); // 新たに SkyWayNoiseCanceller を初期化する
publication.replaceStream(anotherProcessedAudio);
// 元の SkyWayNoiseCanceller を破棄する
noiseCanceller.dispose();
noiseCanceller = anotherNoiseCanceller;ノイズ抑制強度(strength)の調整
strength はノイズ抑制の強度を設定するための値です。インスタンス生成時に設定できるほか、changeStrength メソッドを使用して任意のタイミングでの変更も可能です。
// インスタンス生成時に設定する場合
noiseCanceller = new SkyWayNoiseCanceller(context, { strength: 80 });
// changeStrengthで変更する場合
const strength = 80;
noiseCanceller.changeStrength(strength);何も指定しなかった場合は 100 が設定されます。
モデルタイプについて
モデルタイプは small , medium , large の 3 種類があり、インスタンス生成時に設定できます。
何も指定しなかった場合は small が設定されます。
small が最も処理負荷を抑えられるため、スマートフォンなどを含む様々なデバイスで活用されるユースケースでは small の利用を推奨します。
モデルタイプを変更したい場合は、インスタンスを dispose して新しいインスタンスを作成してください。
// 初期化時にモデルを'medium'に設定
noiseCanceller = new SkyWayNoiseCanceller(context, { modelType: "medium" });AI Noise Canceller 利用時の SkyWay Auth Token に関する注意
AI Noise Canceller は、version プロパティが 1 、 2 、 未指定となっている旧バージョンの SkyWay Auth Token ではご利用いただけません。旧バージョンの SkyWay Auth Token をご利用中の方は、 version 3 へ移行してください。なお、SkyWay Auth Token version 3 の詳しい仕様を知りたい方は、SkyWay Auth Token(各種SDK用)のページをご参照ください。
ログの設定
SkyWayNoiseCanceller のインスタンスを生成する際に、出力されるログのログレベルを設定できます。
noiseCanceller = new SkyWayNoiseCanceller(context, {
logLevel: 'debug',
});設定可能なログレベルは、APIリファレンスを参照してください。
なお、ログレベルを指定しなかった場合はerrorに設定されます。
アプリケーション開発時は、不具合の調査やテクニカルサポートとのやり取りを円滑に行うために、ログレベルを debug に設定することをおすすめします。
アプリケーションをプロダクションで運用する際は、ログレベルを error に設定することをおすすめします。
開発用リポジトリでの利用
以下のようなユースケースにより開発用のリポジトリで本ライブラリを利用したい場合、インストール用スクリプトを活用したワークフローをご使用ください。
- 公開リポジトリで開発しているソフトウェアで利用したい場合
- 常に最新版のライブラリを用いてテストを実行したい場合