オーディオレシーバー
オーディオレシーバー機能を利用すると、実際のオーディオストリームに影響を与えずにオーディオデータを取得できます。アプリケーションでは、この機能を利用してオーディオデータのコピーを受け取り、さまざまな用途に使用できます。
| 対応する通話タイプ | SDKの最低バージョン |
|---|---|
| 1対1通話、グループ通話(カンファレンス) | PlanetKit 7.0 |
Note
オーディオレシーバーを通じて取得したオーディオデータは、VQE制御が適用される前のオーディオストリームです。
活用事例
オーディオレシーバーの主な活用例は次のとおりです。
- オーディオ分析と転写(音声→テキスト変換)
- 音声アクティビティ検出(VAD)
- オーディオ品質のモニタリング
- 通話分析と指標の収集
- リアルタイムのオーディオ可視化とレベルメータリング
- 通話オーディオをファイルとして録音
実装段階
オーディオレシーバー機能を実装するには、次の手順に従います。
1対1通話
オーディオレシーバーの実装
1対1通話のオーディオデータを受信するためにICallAudioReceiverを継承するクラスを作成します。
#include "PlanetKit.h"
#include "IPlanetKitCallAudioReceiver.h"
class AudioDataReceiver : public PlanetKit::ICallAudioReceiver {
public:
void OnAudio(const PlanetKit::SAudioData& sAudioData) override {
// Access audio data from SAudioData structure:
// - sAudioData.unAudioDataSamplingRate: Sampling rate
// - sAudioData.unAudioDataSampleCount: Number of samples
// - sAudioData.eAudioDataSampleFormat: Sample format
// - sAudioData.ucBuffer: Pointer to audio data
// - sAudioData.unBufferSize: Size of audio data in bytes
// Use the audio data for your use case
// Note: Copy data if you need it beyond this callback
}
};
オーディオレシーバーの設定
オーディオデータの受信を開始するには、PlanetKitCallインスタンスにレシーバーを登録します。
// Create receiver instances
PlanetKit::ICallAudioReceiverPtr pMyAudioReceiver = PlanetKit::MakeSharedPtr<AudioDataReceiver>();
PlanetKit::ICallAudioReceiverPtr pPeerAudioReceiver = PlanetKit::MakeSharedPtr<AudioDataReceiver>();
// Register receivers
m_pCall->RegisterMyAudioReceiver(pMyAudioReceiver); // Local user's audio
m_pCall->RegisterPeerAudioReceiver(pPeerAudioReceiver); // Remote peer's audio
オーディオレシーバーの解除
オーディオデータの受信を中止するには、レシーバーの登録を解除します。
m_pCall->DeregisterMyAudioReceiver(pMyAudioReceiver);
m_pCall->DeregisterPeerAudioReceiver(pPeerAudioReceiver);
グループ通話
オーディオレシーバーの実装
グループ通話の音声データを受信するためにIConferenceAudioReceiverを継承するクラスを作成します。
#include "PlanetKit.h"
#include "IPlanetKitConferenceAudioReceiver.h"
class ConferenceAudioDataReceiver : public PlanetKit::IConferenceAudioReceiver {
public:
void OnAudio(const PlanetKit::SAudioData& sAudioData) override {
// Access audio data from SAudioData structure:
// - sAudioData.unAudioDataSamplingRate: Sampling rate
// - sAudioData.unAudioDataSampleCount: Number of samples
// - sAudioData.eAudioDataSampleFormat: Sample format
// - sAudioData.ucBuffer: Pointer to audio data
// - sAudioData.unBufferSize: Size of audio data in bytes
// Use the audio data for your use case
// Note: Copy data if you need it beyond this callback
}
};
オーディオレシーバーの設定
オーディオデータの受信を開始するには、PlanetKitConferenceインスタンスにレシーバーを登録します。
// Create receiver instances
PlanetKit::IConferenceAudioReceiverPtr pMyAudioReceiver = PlanetKit::MakeSharedPtr<ConferenceAudioDataReceiver>();
PlanetKit::IConferenceAudioReceiverPtr pPeerAudioReceiver = PlanetKit::MakeSharedPtr<ConferenceAudioDataReceiver>();
// Register receivers
m_pConference->RegisterMyAudioReceiver(pMyAudioReceiver); // Local user's audio
m_pConference->RegisterPeersAudioReceiver(pPeerAudioReceiver); // Mixed audio from all peers
オーディオレシーバーの解除
オーディオデータの受信を中止するには、レシーバーの登録を解除します。
m_pConference->DeregisterMyAudioReceiver(pMyAudioReceiver);
m_pConference->DeregisterPeersAudioReceiver(pPeerAudioReceiver);
関連API
オーディオレシーバー機能に関連するAPIは以下のとおりです。
1対1通話
-
ICallAudioReceiver -
PlanetKitCall::RegisterMyAudioReceiver() -
PlanetKitCall::RegisterPeerAudioReceiver() -
PlanetKitCall::DeregisterMyAudioReceiver() -
PlanetKitCall::DeregisterPeerAudioReceiver()
グループ通話
-
IConferenceAudioReceiver -
PlanetKitConference::RegisterMyAudioReceiver() -
PlanetKitConference -
PlanetKitConference::DeregisterMyAudioReceiver() -
PlanetKitConference