---
lang: ja
path: user-guide/ai-noise-canceller/android/development-guide
labels: ユーザーガイド/AI Noise Canceller/Android 版/開発ガイド
metaTitle: 開発ガイド ｜ Android ｜ AI Noise Canceller ｜ ユーザーガイド ｜ SkyWay（スカイウェイ）
---

# 開発ガイド

## エラーハンドリング
AI Noise Canceller は、短時間のネットワーク切断時には自動的に再接続処理を行います。しかし、長時間のネットワーク切断など回復不可能なエラー、または利用料制限エラーが発生した場合には、`fatalErrorHandler` が呼び出されます。この場合、 AI Noise Canceller は終了し、内部リソースは解放されています。再度 AI Noise Canceller を利用する場合は、 `SkyWayNoiseCanceller.setup` を呼び出す必要があります。
```kotlin
SkyWayNoiseCanceller.onFatalErrorHandler = { errorCode ->
    when (errorCode) {
        ErrorCode.QUOTA_EXCEEDED ->
            Log.d("YourAppTag", "Usage limit exceeded error. Please confirm your plan and usage time.")
        else ->
            Log.d("YourAppTag", "Error occurred: ${errorCode.code}. Please call SkyWayNoiseCanceller.setup() to re-setup.")
            // your code...
    }
}
```

## 課金対象期間について

AI Noise Canceller の課金対象期間は、ノイズ抑制機能の開始（`SkyWayNoiseCanceller.start` の呼び出し）から 終了（`SkyWayNoiseCanceller.stop`の呼び出し）までの期間です。

![Billing](/media/posts/docs/00_13_03_02_ai-noise-canceller-development-guide-billing-start-stop.png)

## ノイズ抑制強度（strength）の調整

`strength` はノイズ抑制の強度を設定するための値です。`SkyWayNoiseCanceller.setup` 時に設定できるほか、`changeStrength` メソッドを使用して任意のタイミングでの変更も可能です。
何も指定しなかった場合は 100 が設定されます。


```kotlin
// セットアップ時に設定する場合
val ncOptions = SkyWayNoiseCanceller.Options.create(
    strength = 90
)
val ncReady = SkyWayNoiseCanceller.setup(
    applicationContext,
    ncOptions
)

// changeStrengthで変更する場合(SkyWayNoiseCanceller.setup以降呼び出してください)
SkyWayNoiseCanceller.changeStrength(80)
```

## モデルタイプについて

モデルタイプは `small` , `medium` , `large` の 3 種類があり、セットアップ時に設定できます。 
何も指定しなかった場合は `small` が設定されます。
`small` が最も処理負荷を抑えられるため、様々なデバイスで活用されるユースケースでは `small` の利用を推奨します。
モデルタイプを変更したい場合は、`SkyWayNoiseCanceller.dispose` して `SkyWayNoiseCanceller.setup` より設定してください。


```kotlin
// 初期化時にモデルを'medium'に設定
val ncOptions = SkyWayNoiseCanceller.Options.create(
    modelType = ModelType.MEDIUM
)
val ncReady = SkyWayNoiseCanceller.setup(
    applicationContext,
    ncOptions
)
```


## レイテンシーについて
`tolerableLatencyMs` は、ノイズ抑制処理における許容可能な遅延時間を表します。デフォルトは 30ms に設定されています。通常はこのパラメータを調整する必要はありませんが、性能の低い端末でノイズ抑制性能が最も高い `large` モデルを使用する場合など、端末の処理負荷が高くなり、ノイズ抑制が正しく機能しないことがあります。

そのような場合は、`tolerableLatencyMs` の値を（最大 100ms まで）大きくすることで処理負荷を軽減し、より安定した動作が期待できます。

レイテンシーを変更したい場合、`SkyWayNoiseCanceller.dispose` して `SkyWayNoiseCanceller.setup` より設定してください。
```kotlin
// 初期化時にモデルを'medium'に設定
val ncOptions = SkyWayNoiseCanceller.Options.create(
    tolerableLatencyMs = 100
)
val ncReady = SkyWayNoiseCanceller.setup(
    applicationContext,
    ncOptions
)
```

## サンプリングレートについて
通話品質および音声処理の最適化のため、Audio Input のサンプリングレートは 16kHz に設定することを推奨します。

SkyWay Android SDK の最新バージョン（v3.2.0以降）では、`audioInputSampleRate` のデフォルト値がすでに 16kHz に設定されています。別の値を使用したい場合は、`SkyWayContext.Options.audioInputSampleRate` にて設定を変更してください。

>  audioInputSampleRate は SkyWayContext.setup() の呼び出し時のみ設定可能ですので、ご注意ください。