本文にスキップする
Version: 6.2

アプリケーションのAECリファレンス

アプリケーションAEC(acoustic echo canceller、エコー除去フィルター)リファレンス機能を使用すると、エコー除去に使用するカスタムリファレンスデータを提供できます。

オーディオをスピーカーに出力する前にサウンド効果をミックスするなど、編集が必要な場合があります。AECでデフォルトで使用されるリファレンスデータは元のオーディオに基づいて作成されているため、ミックスしたサウンド効果によってエコーが発生する可能性があります。このようにオーディオを変調した場合は、アプリケーションAECリファレンス機能を使用して正確なリファレンスデータを提供することで、エコーをより完全に除去できます。

Tip

AECの詳細については、エコー除去フィルターを参照してください。

通話タイプSDKの最低バージョン
1対1通話、グループ通話(カンファレンス)PlanetKit 3.8

活用事例

以下のようなアプリケーション要件がある場合、アプリケーション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()を呼び出します。

Note

詳細な実装コードの例は、カスタムオーディオシンククラスを実装するを参照してください。

// 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.7PutAECReferenceData()アプリケーションAECリファレンスを使用するには、1対1通話パラメーターまたはグループ通話パラメーターでuseAECReferencetrueに設定してください。

関連API

アプリケーションAECリファレンスに関連するAPIは次のとおりです。

1対1通話

グループ通話