アプリケーションのAECリファレンス
アプリケーションAEC(acoustic echo canceller、エコー除去フィルター)リファレンス機能を使用すると、エコー除去に使用するカスタムリファレンスデータを提供できます。
オーディオをスピーカーに出力する前にサウンド効果をミックスするなど、編集が必要な場合があります。AECでデフォルトで使用されるリファレンスデータは元のオーディオに基づいて作成されているため、ミックスしたサウンド効果によってエコーが発生する可能性があります。このようにオーディオを変調した場合は、アプリケーションAECリファレンス機能を使用して正確なリファレンスデータを提供することで、エコーをより完全に除去できます。
AECの詳細については、エコー除去フィルターを参照してください。
| 通話タイプ | SDKの最低バージョン |
|---|---|
| 1対1通話、グループ通話(カンファレンス) | PlanetKit 3.8 |
活用事例
以下のようなアプリケーション要件がある場合、アプリケーションAECリファレンス機能を活用できます。
-
実際のマイクデバイスに入力されたオーディオをカスタムオーディオシンクで変調(サウンド効果ミックスなど)して出力する場合
Note詳しくはアプリケーションAECリファレンス設定が必要な場合を参照してください。
- PlanetKit SDKとは無関係にアプリケーションで音源を再生するなどの動作がある場合
実装手順
アプリケーションAECリファレンス機能を実装する手順は、次のとおりです。
アプリケーションAECリファレンスの使用を開始する
アプリケーションAECリファレンスの使用を開始するには、StartUserAcousticEchoCancellerReference()を呼び出します。
// 1-to-1 call
PlanetKit::PlanetKitCallPtr m_pCall;
... // Obtain the PlanetKitCall instance from the result of MakeCall() or VerifyCall()
m_pCall->StartUserAcousticEchoCancellerReference(nullptr, [](void* pUserData, bool bSuccess) {
if (bSuccess) {
std::wcout << L"Application AEC reference started successfully" << std::endl;
}
});
// Group call
PlanetKit::PlanetKitConferencePtr m_pConference;
... // Obtain the PlanetKitConference instance from the result of JoinConference()
m_pConference->StartUserAcousticEchoCancellerReference(nullptr, [](void* pUserData, bool bSuccess) {
if (bSuccess) {
std::wcout << L"Application AEC reference started successfully" << std::endl;
}
});
アプリケーションAECリファレンスを提供する
アプリケーションAECリファレンスを提供するには、リファレンスオーディオデータを引数としてPutUserAcousticEchoCancellerReference()を呼び出します。
詳細な実装コードの例は、カスタムオーディオシンククラスを実装するを参照してください。
// Create a modified audio data
PlanetKit::SAudioData modifiedAudioData;
// 1-to-1 call
m_pCall->PutUserAcousticEchoCancellerReference(modifiedAudioData);
// Group call
m_pConference->PutUserAcousticEchoCancellerReference(modifiedAudioData);
アプリケーションAECリファレンスの使用を中止する
アプリケーションAECリファレンスの使用を中止するには、StopUserAcousticEchoCancellerReference()を呼び出します。
// 1-to-1 call
m_pCall->StopUserAcousticEchoCancellerReference(nullptr, [](void* pUserData, bool bSuccess) {
if (bSuccess) {
std::wcout << L"Application AEC reference stopped successfully" << std::endl;
}
});
// Group call
m_pConference->StopUserAcousticEchoCancellerReference(nullptr, [](void* pUserData, bool bSuccess) {
if (bSuccess) {
std::wcout << L"Application AEC reference stopped successfully" << std::endl;
}
});
インターフェースの変更
下表は、アプリケーションAECリファレンスに関連するAPIの変更を示しています。
| PlanetKitバージョン | 提供するメソッド | 備考 |
|---|---|---|
| 5.2以上 | StartUserAcousticEchoCancellerReference()PutUserAcousticEchoCancellerReference()StopUserAcousticEchoCancellerReference() | APIの名称が変更されました。 |
| 3.8から5.1まで | StartAECReferenceData()PutAECReferenceData()StopAECReferenceData() | useAECReferenceが削除されました。 |
| 3.7 | PutAECReferenceData() | アプリケーションAECリファレンスを使用するには、1対1通話パラメーターまたはグループ通話パラメーターでuseAECReferenceをtrueに設定してください。 |
関連API
アプリケーションAECリファレンスに関連するAPIは次のとおりです。
1対1通話
-
PlanetKitCall::StartUserAcousticEchoCancellerReference() -
PlanetKitCall::PutUserAcousticEchoCancellerReference() -
PlanetKitCall::StopUserAcousticEchoCancellerReference()