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

# 開発ガイド

## エラーハンドリング

AI Noise Canceller は、短時間のネットワーク切断時には自動的に再接続処理を行います。しかし、長時間のネットワーク切断など回復不可能なエラーが発生した場合や利用料制限に達した場合には、`fatalErrorHandler` が呼び出されます。この場合、 AI Noise Canceller は終了し、内部リソースは解放されています。再度 AI Noise Canceller を利用する場合は、 `SkyWayNoiseCanceller.setup` を呼び出す必要があります。

```swift
SkyWayNoiseCanceller.shared.fatalErrorHandler = { errorCode in
    // 利用量制限の場合は何もしない
    if errorCode == .quotaExceeded {
        return
    }

    // 再度AI Noise Cancellerを利用する場合
    Task {
        let isSetup = await SkyWayNoiseCanceller.shared.setup()
    }
}
```

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

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 が設定されます。

```swift
// セットアップ時に設定する場合
let isSetup = await SkyWayNoiseCanceller.shared.setup(options: .init(strength: 90))

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

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

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

```swift
// 初期化時にモデルを'medium'に設定
let isSetup = await SkyWayNoiseCanceller.shared.setup(options: .init(modelType: .medium))
```

## サンプリングレートについて

通話品質および処理の最適化のためにサンプリングレートは 16kHz にすることを推奨します。
サンプリングレートを変更せずとも AI Noise Canceller を利用することは可能ですが、ノイズ抑制の効果が低下する可能性があります。

音声の Publish/Subscribe の前に、サンプリングレートを設定してください。

ただし、音声デバイスによっては実際のサンプリングレートの変更ができない場合があることに注意してください。

```swift
// サンプリングレートを 16kHz に設定
AudioSettings.setPreferredSampleRate(16000.0)

```
