通話録音の概要
通話レコーディングで提供される、レコーディングを開始、停止、一時停止、再開するための一連の API を使うと、Azure Communication Services で可能な複数の通話シナリオを記録できます。 PSTN、WebRTC、SIP 通話のいずれであっても、サーバー側のビジネス ロジックからこれらの API にアクセスできます。 また、録音の開始をサーバー アプリケーションに指示するユーザー アクションによって、録音をトリガーできます。
ビジネス ニーズに応じて、Azure Communication Services のさまざまな通話の実装に通話レコーディングを使用できます。
たとえば、1:1 または 1:N の音声通話とビデオ通話を録音できます。
また、通話レコーディングを使うと、Call Automation によって管理される複雑な PSTN または VoIP のインバウンドとアウトバウンドの通話ワークフローを記録することもできます。
通話の確立方法に関係なく、通話レコーディングを使うと、組み込みの一時ストレージに 24 時間保存される混合または非混合のメディア ファイルを生成できます。 ファイルを取得して、Azure Blob Store Bring Your Own Storage、またはお使いのストレージ ソリューションに移動することができます。 通話録音では、Azure Communication Services のすべてのデータ領域がサポートされます。
ビジネス ニーズをサポートする通話レコーディング
通話レコーディングは、ビジネス ニーズとユース ケースに対応するために、複数のメディア出力とコンテンツ タイプをサポートしています。 記録の保持、会議のメモ、コーチングとトレーニング、コンプライアンスと遵守などのシナリオには、ミキシング形式を使用できます。 または、品質保証のユース ケースや、高度な分析や AI ベース (人工知能) の高度な通話後処理などの、より複雑なシナリオに対処するには、非ミキシング音声形式を使うことができます。
ビデオ
チャネルの種類 | コンテンツ フォーマット | 解決方法 | サンプリング レート | ビット レート | データ速度 | 出力 | 説明 |
---|---|---|---|---|---|---|---|
混合 | mp4 | 1920 x 1080、16 FPS (1 秒あたりのフレーム数) | 16 kHz | 1 Mbps | 7.5 MB/分* | 単一ファイル、単一チャネル | 表示名付きの既定の 3 x 3 (最もアクティブなスピーカー) タイル配置の混合ビデオ |
オーディオ
チャネルの種類 | コンテンツ フォーマット | サンプリング レート | ビット レート | データ速度 | 出力 | 説明 |
---|---|---|---|---|---|---|
混合 | mp3 | 16 kHz | 48 kbps | 0.36 MB/分* | 単一ファイル、単一チャネル | 参加者全員のミキシング オーディオ |
混合 | wav | 16 kHz | 256 kbps | 1.92 MB/分 | 単一ファイル、単一チャネル | 参加者全員のミキシング オーディオ |
ミックスされていない | wav | 16 kHz | 256 kbps | チャネルあたり 1.92 MB/分* | 単一ファイル、最大 5 wav チャネル | 非ミキシング オーディオ、チャネルごとに 1 人の参加者、最大 5 チャネル |
[*注] Mp3 および Mp4 形式では、非可逆圧縮が使用され、ビットレートが可変になります。したがって、前の表のデータ レート値は理論上の最大値を反映しています。 WAV 形式は圧縮されず、ビットレートは固定されているため、データ レートの計算は正確です。
Call Recording API を使用してレコーディングを完全に制御する
Call Recording API を使うと、内部ビジネス ロジック トリガーによってレコーディングを管理できます (グループ通話を作成して会話をレコーディングするアプリケーションなど)。 また、録音の開始をサーバー アプリケーションに指示するユーザー アクションによって、録音をトリガーできます。 Call Recording API では、レコーディングを開始するために serverCallId
のみが使われます。 serverCallId
を取得する方法については、「通話レコーディングのクイックスタート」をご覧ください。
録音が開始されると、recordingId
が返され、これを一時停止や再開などの後続の操作で利用できます。
操作 | 操作対象 | 説明 |
---|---|---|
レコーディングを開始する | serverCallId |
recordingId を返します。 |
録音状態を取得する | recordingId |
RecordingStateResult を返します。 |
録音の一時停止 | recordingId |
通話録音の一時停止と再開により、通話または会議の一部の録音をスキップし、1 つのファイルへの録音を再開することができます。 |
録音の再開 | recordingId |
一時停止になっている録音操作を再開します。 コンテンツは一時停止前のコンテンツと同じファイルに入ります。 |
録音の停止 | recordingId |
録音を停止し、ファイル ダウンロードのための最終メディア処理を開始します。 |
Event Grid の通知
通話レコーディングでは、メディアとメタデータに関連する通知を提供するために、Azure Event Grid が使われます。
Note
Azure Communication Services には、録音用に短期のメディア ストレージが用意されています。 レコーディングは 24 時間ダウンロードできます。 24 時間が経過すると、レコーディングは使用できなくなります。
Event Grid の通知 Microsoft.Communication.RecordingFileStatusUpdated
は、録音を取得する準備ができたときに発行されます。通常は、録音プロセスが完了 (会議が終了、録音の停止など) してから 1、2 分後になります。 録音のイベント通知には contentLocation
と metadataLocation
が含まれます。これらは、録音されたメディアと録音メタデータ ファイルの両方を取得するために使用できます。
通知スキーマ リファレンス
{
"id": string, // Unique guid for event
"topic": string, // /subscriptions/{subscription-id}/resourceGroups/{group-name}/providers/Microsoft.Communication/communicationServices/{communication-services-resource-name}
"subject": string, // /recording/call/{call-id}/serverCallId/{serverCallId}/recordingId/{recordingId}
"data": {
"recordingStorageInfo": {
"recordingChunks": [
{
"documentId": string, // Document id for retrieving from storage
"index": int, // Index providing ordering for this chunk in the entire recording
"endReason": string, // Reason for chunk ending: "SessionEnded", "ChunkMaximumSizeExceeded”, etc.
"metadataLocation": <string>, // url of the metadata for this chunk
"contentLocation": <string>, // url of the mp4, mp3, or wav for this chunk
"deleteLocation": <string> // url of the mp4, mp3, or wav to delete this chunk
}
]
},
"recordingStartTime": string, // ISO 8601 date time for the start of the recording
"recordingDurationMs": int, // Duration of recording in milliseconds
"sessionEndReason": string // Reason for call ending: "CallEnded", "InitiatorLeft", etc.
},
"eventType": string, // "Microsoft.Communication.RecordingFileStatusUpdated"
"dataVersion": string, // "1.0"
"metadataVersion": string, // "1"
"eventTime": string // ISO 8601 date time for when the event was created
}
メタデータ スキーマ リファレンス
{
"resourceId": <string>, // stable resource id of the Azure Communication Services resource recording
"callId": <string>, // id of the call
"chunkDocumentId": <string>, // object identifier for the chunk this metadata corresponds to
"chunkIndex": <number>, // index of this chunk with respect to all chunks in the recording
"chunkStartTime": <string>, // ISO 8601 datetime for the start time of the chunk this metadata corresponds to
"chunkDuration": <number>, // [Chunk duration has a maximum of 4 hours] duration of the chunk this metadata corresponds to in milliseconds
"pauseResumeIntervals": [
"startTime": <string>, // ISO 8601 datetime for the time at which the recording was paused
"duration": <number> // duration of the pause in the recording in milliseconds
],
"recordingInfo": {
"contentType": <string>, // content type of recording, e.g. audio/audioVideo
"channelType": <string>, // channel type of recording, e.g. mixed/unmixed
"format": <string>, // format of the recording, e.g. mp4/mp3/wav
"audioConfiguration": {
"sampleRate": <number>, // sample rate for audio recording
"bitRate": <number>, // bitrate for audio recording
"channels": <number> // number of audio channels in output recording
},
"videoConfiguration": {
"longerSideLength": <number>, // longerSideLength for video recording
"shorterSideLength": <number>, // shorterSideLength for video recording
"frameRate": <number>, // frameRate for video recording
"bitRate": <number> // bitrate for video recording
}
},
"participants": [
{
"participantId": <string>, // participant identifier of a participant captured in the recording
"channel": <number> // channel the participant was assigned to if the recording is unmixed
}
]
}
規制とプライバシーに関する考慮事項
多くの国/領域や州には、通話レコーディングに適用される法律や規制があります。 PSTN、音声、ビデオ通話では、多くの場合、ユーザーが通信レコーディングに同意する必要があります。 通話の録音機能を法律に従って使用することは、責任が求められます。 お客様は、各参加者に適用される法令に従った方法で、記録された通信の当事者から同意を得る必要があります。
個人データの管理に関する規制では、ユーザー データをエクスポートできることが求められます。 これらの要件をサポートするために、レコーディング メタデータ ファイルでは、participants
配列に各通話参加者の participantId
が格納されています。 participants
配列内の Azure Communication Services ユーザー ID を内部ユーザー ID と相互参照して、通話の参加者を識別することができます。
次のステップ
興味のある記事を次に示します。
- 通話レコーディングの分析情報とログの詳細を確認する
- Call Automation の詳細を確認します。
- ビデオ通話の詳細を確認します。