発話検知
SkyWay iOS SDK が提供する getAudioLevel() API を用いることで、音量を可視化する UI(ボイスインジケーター)などの実装が可能です。
本ページでは、getAudioLevel() API の利用方法について解説します。
人の声量に絞って取得したい場合は、AI Noise Canceller と併用することで実現可能です。
このライブラリを用いることで、人の声以外の雑音を抑制することができます。
AI Noise Canceller については、こちらの資料をご確認ください。
ストリームの音量レベルを取得する
SkyWay iOS SDK では、音声ストリームの音量レベルを取得する API を提供しています。
getAudioLevel(): Double- 直近100ミリ秒間における音声ストリームの最大音量を返します。
- 戻り値:
- Double: 音量レベルの値を0.0(無音)から1.0(最大音量)までの範囲で返します。
- 相手に Subscribe される前の
LocalAudioStreamや、音声データが流れていない場合は 0.0 を返します。
- API Reference Link:
getAudioLevel() は呼び出される時点の値しか返さないため、ボイスインジケーターのように継続的に音量レベルを監視したい場合は、定期的にメソッドを呼び出します。
以下のサンプルコードは、TimelineView を使って100ミリ秒ごとに LocalAudioStream の音量レベルを取得して Gauge で表示します。
※ RemoteAudioStream でも全く同じように使用できますのでコード例は略します。
struct LocalAudioIndicatorView: View { let localAudioStream: LocalAudioStream var body: some View { TimelineView(.periodic(from: .now, by: 0.1)) { _ in Gauge(value: localAudioStream.getAudioLevel(), in: 0.0...1.0) { Text("Local audio indicator") } } } }