オーディオ フィルターの管理
重要
この記事で説明されている機能は、現在パブリック プレビュー段階にあります。 このプレビュー バージョンはサービス レベル アグリーメントなしで提供されており、運用環境のワークロードに使用することは推奨されません。 特定の機能はサポート対象ではなく、機能が制限されることがあります。 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。
Azure Communication Services SDK を使用してオーディオ処理機能を管理する方法について説明します。 オーディオ フィルターを使用して、通話前や通話中にさまざまなオーディオ機能を適用する方法について説明します。
現在、5 種類の異なるフィルターを制御できます。
アナログ自動ゲイン制御
アナログ自動ゲイン制御は、通話前に利用できるフィルターです。 このフィルターは、既定で有効になっています。
デジタル自動ゲイン制御
デジタル自動ゲイン制御は、通話前に利用できるフィルターです。 このフィルターは、既定で有効になっています。
音楽モード
音楽モードは、通話前と通話中に利用できるフィルターです。 音楽モードに関する詳細については、こちらをご覧ください。 音楽モードは、ネイティブ プラットフォームでの 1 対 1 の通話とグループ通話でのみ機能することに注意してください。 現在、音楽モードはネイティブと Web 間の 1 対 1 の通話では機能しません。 音楽モードは、既定で無効になっています。
エコーのキャンセル
エコーのキャンセルは、通話前と通話中に利用できるフィルターです。 音楽モードが有効になっている場合のみ、エコーのキャンセルを切り替えることができます。 このフィルターは、既定で有効になっています。
ノイズ抑制
ノイズ抑制は、通話前と通話中に利用できるフィルターです。 現在使用可能なモードは、Off
、Auto
、Low
、High
です。 この機能は、既定で High
に設定されています。
前提条件
- アクティブなサブスクリプションが含まれる Azure アカウント。 無料でアカウントを作成する
- デプロイ済みの Communication Services リソース。 Communication Services リソースを作成する
- 通話クライアントを有効にするためのユーザー アクセス トークン。 詳細については、アクセス トークンの作成と管理に関する記事を参照してください。
- 省略可能: クイックスタートを完了して、アプリケーションに音声通話を追加します
SDK のインストール
プロジェクトレベルの build.gradle ファイルを見つけて、buildscript
と allprojects
の下にあるリポジトリの一覧に「mavenCentral()
」を追加します。
buildscript {
repositories {
...
mavenCentral()
...
}
}
allprojects {
repositories {
...
mavenCentral()
...
}
}
次に、モジュール レベルの build.gradle ファイル内で、次の行を dependencies
セクションに追加します。
dependencies {
...
implementation 'com.azure.android:azure-communication-calling:1.0.0'
...
}
必要なオブジェクトを初期化する
CallAgent
インスタンスを作成するには、CallClient
インスタンス上で createCallAgent
メソッドを呼び出す必要があります。 この呼び出しは、CallAgent
インスタンス オブジェクトを非同期に返します。
createCallAgent
メソッドは、アクセス トークンをカプセル化する CommunicationUserCredential
を引数として受け取ります。
DeviceManager
にアクセスするには、まず callAgent
インスタンスを作成する必要があります。 それから、CallClient.getDeviceManager
メソッドを使用して DeviceManager
を取得することができます。
String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential).get();
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
呼び出し元の表示名を設定するには、この代替メソッドを使用します。
String userToken = '<user token>';
CallClient callClient = new CallClient();
CommunicationTokenCredential tokenCredential = new CommunicationTokenCredential(userToken);
android.content.Context appContext = this.getApplicationContext(); // From within an activity, for instance
CallAgentOptions callAgentOptions = new CallAgentOptions();
callAgentOptions.setDisplayName("Alice Bob");
DeviceManager deviceManager = callClient.getDeviceManager(appContext).get();
CallAgent callAgent = callClient.createCallAgent(appContext, tokenCredential, callAgentOptions).get();
オーディオ フィルター機能を使用すると、発信オーディオにさまざまなオーディオ前処理オプションを適用できます。 オーディオ フィルターには OutgoingAudioFilters
と LiveOutgoingAudioFilters
の 2 種類があり、OutgoingAudioFilters
は通話の開始前に設定を変更し、LiveOutgoingAudioFilters
は通話の進行中に設定を変更します。
まず、次の SDK の呼び出しと関連クラスをインポートする必要があります。
import com.azure.android.communication.calling.OutgoingAudioOptions;
import com.azure.android.communication.calling.OutgoingAudioFilters;
import com.azure.android.communication.calling.LiveOutgoingAudioFilters;
通話が開始される前
OutgoingAudioFilters
は通話開始後に適用できます。
次のコードに示すように、OutgoingAudioFilters
を作成し、OutgoingAudioOptions に渡すことから始めます。
OutgoingAudioOptions outgoingAudioOptions = new OutgoingAudioOptions();
OutgoingAudioFilters filters = new OutgoingAudioFilters();
filters.setNoiseSuppressionMode(NoiseSuppressionMode.HIGH);
filters.setAnalogAutomaticGainControlEnabled(true);
filters.setDigitalAutomaticGainControlEnabled(true);
filters.setMusicModeEnabled(true);
filters.setAcousticEchoCancellationEnabled(true);
outgoingAudioOptions.setAudioFilters(filters);
通話中
LiveOutgoingAudioFilters
は通話開始後に適用できます。 このオブジェクトは、通話開始後に通話オブジェクトから取得できます。 LiveOutgoingAudioFilters
の設定を変更するには、クラス内のメンバーを有効な値に設定することで適用されます。
アクティブな通話中に使用できるのは、OutgoingAudioFilters
から使用できる次のフィルターのサブセットのみです: 音楽モード、エコーのキャンセル、ノイズ抑制モード。
LiveOutgoingAudioFilters filters = call.getLiveOutgoingAudioFilters();
filters.setMusicModeEnabled(false);
filters.setAcousticEchoCancellationEnabled(false);
filters.setNoiseSuppressionMode(NoiseSuppressionMode.HIGH);
システムを設定する
Xcode プロジェクトを作成する
Xcode で、新しい iOS プロジェクトを作成し、[単一ビュー アプリ] テンプレートを選択します。 このクイックスタートでは SwiftUI フレームワークを使用します。そのため、[Language] を Swift に、[Interface] を SwiftUI に設定する必要があります。
このクイックスタートでは、テストは作成しません。 [Include Tests] チェック ボックスはオフにしてもかまいません。
CocoaPods を使用してパッケージと依存関係をインストールする
この例のように、アプリケーション用の Podfile を作成します。
platform :ios, '13.0' use_frameworks! target 'AzureCommunicationCallingSample' do pod 'AzureCommunicationCalling', '~> 1.0.0' end
pod install
を実行します。Xcode を使用して
.xcworkspace
を開きます。
マイクへのアクセスを要求する
デバイスのマイクにアクセスするには、NSMicrophoneUsageDescription
を使用してアプリの情報プロパティ一覧を更新する必要があります。 関連付けられた値を文字列に設定します。これは、システムがユーザーにアクセスを要求するために使用するダイアログ内に含まれます。
プロジェクト ツリーの [Info.plist] エントリを右クリックし、[Open As]>[Source Code] を選択します。 最上位の <dict>
セクションに以下の行を追加してから、ファイルを保存します。
<key>NSMicrophoneUsageDescription</key>
<string>Need microphone access for VOIP calling.</string>
アプリのフレームワークを設定する
プロジェクトの ContentView.swift ファイルを開きます。 ファイルの先頭に import
宣言を追加して、AzureCommunicationCalling
ライブラリをインポートします。 さらに、AVFoundation
をインポートします。 これは、コード内のオーディオ アクセス許可要求に必要になります。
import AzureCommunicationCalling
import AVFoundation
CallAgent を初期化する
CallClient
から CallAgent
インスタンスを作成するには、初期化された後に CallAgent
オブジェクトを非同期に返す callClient.createCallAgent
メソッドを使用する必要があります。
通話クライアントを作成するには、CommunicationTokenCredential
オブジェクトを渡します。
import AzureCommunication
let tokenString = "token_string"
var userCredential: CommunicationTokenCredential?
do {
let options = CommunicationTokenRefreshOptions(initialToken: token, refreshProactively: true, tokenRefresher: self.fetchTokenSync)
userCredential = try CommunicationTokenCredential(withOptions: options)
} catch {
updates("Couldn't created Credential object", false)
initializationDispatchGroup!.leave()
return
}
// tokenProvider needs to be implemented by Contoso, which fetches a new token
public func fetchTokenSync(then onCompletion: TokenRefreshOnCompletion) {
let newToken = self.tokenProvider!.fetchNewToken()
onCompletion(newToken, nil)
}
作成した CommunicationTokenCredential
オブジェクトを CallClient
に渡し、表示名を設定します。
self.callClient = CallClient()
let callAgentOptions = CallAgentOptions()
options.displayName = " iOS Azure Communication Services User"
self.callClient!.createCallAgent(userCredential: userCredential!,
options: callAgentOptions) { (callAgent, error) in
if error == nil {
print("Create agent succeeded")
self.callAgent = callAgent
} else {
print("Create agent failed")
}
})
オーディオ フィルター機能を使用すると、発信オーディオにさまざまなオーディオ前処理オプションを適用できます。 オーディオ フィルターには OutgoingAudioFilters
と LiveOutgoingAudioFilters
の 2 種類があり、OutgoingAudioFilters
は通話の開始前に設定を変更し、LiveOutgoingAudioFilters
は通話の進行中に設定を変更します。
まず、次の SDK の呼び出しをインポートする必要があります。
import AzureCommunicationCalling
通話が開始される前
OutgoingAudioFilters
は通話開始後に適用できます。
次のコードに示すように、OutgoingAudioFilters
を作成し、OutgoingAudioOptions に渡すことから始めます。
let outgoingAudioOptions = OutgoingAudioOptions()
let filters = OutgoingAudioFilters()
filters.NoiseSuppressionMode = NoiseSuppressionMode.high
filters.analogAutomaticGainControlEnabled = true
filters.digitalAutomaticGainControlEnabled = true
filters.musicModeEnabled = true
filters.acousticEchoCancellationEnabled = true
outgoingAudioOptions.audioFilters = filters
通話中
LiveOutgoingAudioFilters
は通話開始後に適用できます。 このオブジェクトは、通話開始後に通話オブジェクトから取得できます。 LiveOutgoingAudioFilters
の設定を変更するには、クラス内のメンバーを有効な値に設定することで適用されます。
アクティブな通話中に使用できるのは、OutgoingAudioFilters
から使用できる次のフィルターのサブセットのみです: 音楽モード、エコーのキャンセル、ノイズ抑制モード。
LiveOutgoingAudioFilters filters = call.liveOutgoingAudioFilters
filters.musicModeEnabled = true
filters.acousticEchoCancellationEnabled = true
filters.NoiseSuppressionMode = NoiseSuppressionMode.high
システムを設定する
Visual Studio プロジェクトの作成
UWP アプリの場合、Visual Studio 2022 で、新しい空のアプリ (ユニバーサル Windows) プロジェクトを作成します。 プロジェクト名を入力した後、10.0.17763.0 より後の Windows SDK を自由に選択できます。
WinUI 3 アプリの場合、Blank App, Packaged (WinUI 3 in Desktop) テンプレートで新しいプロジェクトを作成し、シングルページの WinUI 3 アプリを設定します。 Windows App SDK バージョン 1.3 以降が必要です。
NuGet パッケージ マネージャーを使用してパッケージと依存関係をインストールする
Calling SDK の API とライブラリは、NuGet パッケージにより一般公開されています。
次の手順では、Calling SDK NuGet パッケージを検索、ダウンロード、インストールする方法の例を示します。
- [ツール]>[NuGet パッケージ マネージャー]>[ソリューションの NuGet パッケージの管理] を選んで、NuGet パッケージ マネージャーを開きます。
- [参照] を選び、検索ボックスに「
Azure.Communication.Calling.WindowsClient
」と入力します。 - [プレリリースを含める] チェック ボックスがオンになっていることを確認します。
Azure.Communication.Calling.WindowsClient
パッケージを選んでから、Azure.Communication.Calling.WindowsClient
1.4.0-beta.1 以降のバージョンを選びます。- 右側のタブで、Communication Services プロジェクトに対応するチェック ボックスをオンにします。
- [インストール] ボタンを選択します。
オーディオ フィルター機能を使用すると、発信オーディオにさまざまなオーディオ前処理オプションを適用できます。 オーディオ フィルターには OutgoingAudioFilters
と LiveOutgoingAudioFilters
の 2 種類があり、OutgoingAudioFilters
は通話の開始前に設定を変更し、LiveOutgoingAudioFilters
は通話の進行中に設定を変更します。
まず、次の SDK の呼び出しをインポートする必要があります。
using Azure.Communication;
using Azure.Communication.Calling.WindowsClient;
通話が開始される前
OutgoingAudioFilters
は通話開始後に適用できます。
次のコードに示すように、OutgoingAudioFilters
を作成し、OutgoingAudioOptions に渡すことから始めます。
var outgoingAudioOptions = new OutgoingAudioOptions();
var filters = new OutgoingAudioFilters()
{
AnalogAutomaticGainControlEnabled = true,
DigitalAutomaticGainControlEnabled = true,
MusicModeEnabled = true,
AcousticEchoCancellationEnabled = true,
NoiseSuppressionMode = NoiseSuppressionMode.High
};
outgoingAudioOptions.Filters = filters;
通話中
LiveOutgoingAudioFilters
は通話開始後に適用できます。 このオブジェクトは、通話開始後に通話オブジェクトから取得できます。 LiveOutgoingAudioFilters
の設定を変更するには、クラス内のメンバーを有効な値に設定することで適用されます。
アクティブな通話中に使用できるのは、OutgoingAudioFilters
から使用できる次のフィルターのサブセットのみです: 音楽モード、エコーのキャンセル、ノイズ抑制モード。
LiveOutgoingAudioFilters filter = call.LiveOutgoingAudioFilters;
filter.MusicModeEnabled = true;
filter.AcousticEchoCancellationEnabled = true;
filter.NoiseSuppressionMode = NoiseSuppressionMode.Auto;