Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Rufen Sie den Analyseprozessor und die Ausgabeziele für das Amazon Chime SDK auf
Sie können eindeutige Elemente pro Media Insights-Pipeline-Konfiguration nur einmal angeben. Alle Prozessoren und Senken müssen sich im selben AWS Konto befinden, und Sie müssen sie in derselben AWS Region wie den Endpunkt erstellen, den Sie aufrufen. Wenn Sie beispielsweise den us-east-1 Endpunkt für Amazon Chime SDK Media Pipelines verwenden, können Sie keinen Kinesis-Datenstream aus der Region weitergeben. us-west-2
Erweitern Sie jeden Abschnitt, um Informationen zu den einzelnen Zielen zu erhalten.
Unterstützte Waschbecken:. KinesisDataStreamSink
Sie können diesen Prozessor nicht mit einem Amazon Transcribe-Prozessor kombinieren. Weitere Informationen zu Amazon Transcribe Call Analytics finden Sie unter Call Analytics im Amazon Transcribe Developer Guide. Real-time Wenn Sie Post Call Analytics aktivieren, indem Sie sie PostCallAnalyticsSettings in den AmazonTranscribeCallAnalyticsProcessorConfiguration API-Aufruf aufnehmen, erhalten Sie Artefakte am angegebenen Amazon S3-Standort, wenn die Media Insights-Pipeline stoppt und die Verarbeitung abgeschlossen ist.
Anmerkung
Wenn Sie die Pipeline für mehr als 35 Sekunden anhalten und dann wieder aufnehmen, werden Artefakte nach dem Anruf in separaten Dateien mit unterschiedlichen Sitzungs-IDs im Amazon S3-Bucket generiert.
Post-call Zu den Artefakten gehören eine Analytics-JSON-Datei und eine WAV- oder Opus-Datei für Audioaufzeichnungen. Die Amazon S3-Bucket-URL für geschwärzte (wenn Sie Inhaltsredaktion aktivieren) und nicht redigierte Aufzeichnungsdateien wird einmal für jede Amazon Transcribe Call Analytics-Sitzung nach dem Anruf als Teil des Metadatenbereichs an den Kinesis Data Stream gesendet. onetimeMetadata
Bei der Anrufanalyse mit Amazon Transcribe Call Analytics werden Audiodaten aus dem Kinesis Video Stream eingegeben.
-
Unterstützte Medienkodierung: PCM-signiertes 16-Bit-Little-Endian-Audio.
-
Unterstützte Medienabtastraten: Zwischen 8.000 Hz und 48.000 Hz.
StreamConfigurationEingabe für einen Amazon Transcribe Analytics-Prozess:
-
Sie müssen das
KinesisVideoStreamArnfür jeden Stream angeben. -
(Optional) Das KVS
FragmentNumberstartet einen Aufruf-Analytics-Job mit dem Block nach einem bestimmten Fragment. Wenn nicht angegeben, wird der neueste Teil des Kinesis-Videostreams verwendet. -
Das
StreamChannelDefinitiondefiniert, wer spricht. Die Anrufanalyse von Amazon Transcribe erfordert Zweikanal-Audio. Sie müssen angeben, welcher Lautsprecher sich auf welchem Kanal befindet, wenn Sie die API aufrufen. CreateMediaInsightsPipeline Wenn Ihr Agent beispielsweise zuerst spricht, setzen Sie das auf,ChannelId0um den ersten Kanal anzugeben, und auf,ParticipantRoleAGENTum anzuzeigen, dass der Agent spricht.
Anmerkung
Wenn Sie einen Voice Connector verwenden, um MediaInsightsPipeline mit einem Amazon Transcribe Anrufanalyseprozessor einen Anruf zu erstellen, ist das Audio für das Voice Connector-Konto AGENT und das PSTN-Audio für den. CUSTOMER ParticipantRole
Für Voice Connector SIPREC verlassen wir uns auf die SIPREC-Metadaten. In den meisten Fällen wird das Stream-Label mit dem niedrigsten lexikografischen Wert als das angesehen. AGENT
Das folgende Beispiel zeigt den Kinesis Video Stream-Eingang für einen Zweikanal-Audiostream.
"StreamChannelDefinition" : { "NumberOfChannels" : 2 "ChannelDefinitions": [ { "ChannelId": 0, "ParticipantRole": "AGENT" }, { "ChannelId": 1, "ParticipantRole": "CUSTOMER" } ] }
Im Gegensatz dazu zeigt das folgende Beispiel zwei Monoeingänge aus zwei verschiedenen Kinesis Video-Streams.
KVS-1: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 0, "ParticipantRole": "AGENT" } ] } KVS-2: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 1, "ParticipantRole": "CUSTOMER" } ] }
Jeder Amazon Transcribe-Datensatz enthält ein UtteranceEvent oder einCategoryEvent, aber nicht beides. CategoryEventshabe ein detail-type von. TranscribeCallAnalyticsCategoryEvent
Das folgende Beispiel zeigt das einmalige Metadaten-Ausgabeformat für Amazon Transcribe.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "CallAnalyticsMetadata", "mediaInsightsPipelineId": "string", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object } // onetimeMetadata object { "inviteHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string", // siprec metadata in JSON (converted from above XML) // If PostcallSettings are enabled for Amazon Transcribe Call Analytics "s3RecordingUrl": "string", "s3RecordingUrlRedacted": "string" } // inviteHeaders object { "string": "string" }
Das folgende Beispiel zeigt das Amazon Transcribe Call Analytics-Ausgabeformat.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "TranscribeCallAnalytics", "mediaInsightsPipelineId": "string", "metadata": { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string" }, "UtteranceEvent": { "UtteranceId": "string", "ParticipantRole": "string", "IsPartial":boolean, "BeginOffsetMillis":number, "EndOffsetMillis":number, "Transcript": "string", "Sentiment": "string", "Items": [{ "Content": "string", "Confidence":number, "VocabularyFilterMatch":boolean, "Stable":boolean, "ItemType": "string", "BeginOffsetMillis":number, "EndOffsetMillis":number, }, ] "Entities": [{ "Content": "string", "Confidence":number, "Category": "string", // Only PII is supported currently "Type": "string", "BeginOffset":number, "EndOffset":number, }, ], "IssuesDetected": [{ "CharacterOffsets": { "Begin":number, "End":number} }] }, "CategoryEvent": { "MatchedCategories": ["string"], "MatchedDetails": { "string": { "TimestampRanges": [{ "BeginOffsetMillis":number, "EndOffsetMillis":number}] } } } }
Wenn die Konfiguration der Anrufanalyse mit einem Amazon Chime SDK Voice Connector verknüpft ist, wird die folgende Payload für das Voice Connector-Update gesendet, wenn ein Voice Connector-Streaming-Update verfügbar ist.
Das folgende Beispiel zeigt ein Aktualisierungs-Metadatenformat für den Amazon Transcribe-Prozessor und den Transcribe Call Analytics-Prozessor.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "CallAnalyticsMetadata", "callevent-type": "Update", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object } // onetimeMetadata object { "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // sipHeaders object { "string": "string" }
Das folgende Beispiel zeigt ein Aktualisierungs-Metadatenformat für Call Analytics Amazon S3 Recording.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "Recording", "callevent-type": "Update", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded in string of oneTimeMetadata object } // onetimeMetadata object { "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // sipHeaders object { "string": "string" }
Die folgenden Beispiele zeigen die Metadaten für die Aufzeichnung eines SIP-Anrufs zwischen zwei Personen, Alice und Bob. Beide Teilnehmer senden und empfangen Audio und Video. Der Einfachheit halber enthält das Beispiel nur Ausschnitte von SIP und SDP, und SRC zeichnet die Streams jedes Teilnehmers ohne Mischung auf SRS auf.
INVITE sip:recorder@example.com SIP/2.0 Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 To: <sip:recorder@example.com> Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a Session-ID: ab30317f1a784dc48ff824d0d3715d86 ;remote=00000000000000000000000000000000 CSeq: 101 INVITE Max-Forwards: 70 Require: siprec Accept: application/sdp, application/rs-metadata, application/rs-metadata-request Contact: <sip:2000@src.example.com>;+sip.src Content-Type: multipart/mixed;boundary=boundaryContent-Length: [length] Content-Type: application/SDP ... m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:96 a=sendonly ... m=video 49174 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:97 a=sendonly ... m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:98 a=sendonly ... m=video 49176 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:99 a=sendonly .... Content-Type: application/rs-metadata Content-Disposition: recording-session <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>complete</datamode> <group group_id="7+OTCyoxTmqmqyA/1weDAg=="> <associate-time>2010-12-16T23:41:07Z</associate-time> <!-- Standardized extension --> <call-center xmlns='urn:ietf:params:xml:ns:callcenter'> <supervisor>sip:alice@atlanta.com</supervisor> </call-center> <mydata xmlns='http://example.com/my'> <structure>structure!</structure> <whatever>structure</whatever> </mydata> </group> <session session_id="hVpd7YQgRW2nD22h7q60JQ=="> <sipSessionID>ab30317f1a784dc48ff824d0d3715d86; remote=47755a9de7794ba387653f2099600ef2</sipSessionID> <group-ref>7+OTCyoxTmqmqyA/1weDAg== </group-ref> <!-- Standardized extension --> <mydata xmlns='http://example.com/my'> <structure>FOO!</structure> <whatever>bar</whatever> </mydata> </session> <participant participant_id="srfBElmCRp2QB23b7Mpk0w=="> <nameID aor="sip:alice@atlanta.com"> <naSRCme xml:lang="it">Alice</name> </nameID> <!-- Standardized extension --> <mydata xmlns='http://example.com/my'> <structure>FOO!</structure> <whatever>bar</whatever> </mydata> </participant> <participant participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <nameID aor="sip:bob@biloxy.com"> <name xml:lang="it">Bob</name> </nameID> <!-- Standardized extension --> <mydata xmlns='http://example.com/my'> <structure>FOO!</structure> <whatever>bar</whatever> </mydata> </participant> <stream stream_id="UAAMm5GRQKSCMVvLyl4rFw==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>96</label> </stream> <stream stream_id="i1Pz3to5hGk8fuXl+PbwCw==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>97</label> </stream> <stream stream_id="8zc6e0lYTlWIINA6GR+3ag==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>98</label> </stream> <stream stream_id="EiXGlc+4TruqqoDaNE76ag==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <label>99</label> </stream> <sessionrecordingassoc session_id="hVpd7YQgRW2nD22h7q60JQ=="> <associate-time>2010-12-16T23:41:07Z</associate-time> </sessionrecordingassoc> <participantsessionassoc participant_id="srfBElmCRp2QB23b7Mpk0w==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <associate-time>2010-12-16T23:41:07Z</associate-time> </participantsessionassoc> <participantsessionassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw==" session_id="hVpd7YQgRW2nD22h7q60JQ=="> <associate-time>2010-12-16T23:41:07Z</associate-time> </participantsessionassoc> <participantstreamassoc participant_id="srfBElmCRp2QB23b7Mpk0w=="> <send>i1Pz3to5hGk8fuXl+PbwCw==</send> <send>UAAMm5GRQKSCMVvLyl4rFw==</send> <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> <recv>EiXGlc+4TruqqoDaNE76ag==</recv> </participantstreamassoc> <participantstreamassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <send>8zc6e0lYTlWIINA6GR+3ag==</send> <send>EiXGlc+4TruqqoDaNE76ag==</send> <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> </participantstreamassoc> </recording>
Das folgende Beispiel zeigt die aktualisierten Metadaten, wenn ein Anrufteilnehmer den anderen in die Warteschleife versetzt. In diesem Fall empfängt participant_id
srfBElmCRp2QB23b7Mpk0w== nur Medienstreams und sendet keine Medien, sodass das send XML-Element weggelassen wird. participant_id zSfPoSvdSDCmU3A3TRDxAw==Sendet im Gegensatz dazu Medien an den anderen Teilnehmer, empfängt aber keine Medien von diesem, sodass das recv XML-Element weggelassen wird.
INVITE sip:recorder@example.com SIP/2.0 Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 To: <sip:recorder@example.com> Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a Session-ID: ab30317f1a784dc48ff824d0d3715d86 ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 CSeq: 101 INVITE Max-Forwards: 70 Require: siprec Accept: application/sdp, application/rs-metadata, application/rs-metadata-request Contact: <sip:2000@src.example.com>;+sip.src Content-Type: multipart/mixed;boundary=foobar Content-Length: [length] Content-Type: application/SDP ... m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:96 a=sendonly ... m=video 49174 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:97 a=sendonly ... m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:98 a=sendonly ... m=video 49176 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:99 a=sendonly .... Content-Type: application/rs-metadata Content-Disposition: recording-session <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>partial</datamode> <participantstreamassoc participant_id="srfBElmCRp2QB23b7Mpk0w=="> <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> <recv>EiXGlc+4TruqqoDaNE76ag==</recv> </participantstreamassoc> <participantstreamassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <send>8zc6e0lYTlWIINA6GR+3ag==</send> <send>EiXGlc+4TruqqoDaNE76ag==</send> </participantstreamassoc> </recording>
Das folgende Beispiel zeigt, wie die Metadaten aktualisiert werden, wenn der Anruf wieder aufgenommen wird. Die Nutzlast enthält jetzt die recv XML-Elemente send und.
INVITE sip:recorder@example.com SIP/2.0 Via: SIP/2.0/TCP src.example.com;branch=z9hG4bKdf6b622b648d9 From: <sip:2000@example.com>;tag=35e195d2-947d-4585-946f-09839247 To: <sip:recorder@example.com> Call-ID: d253c800-b0d1ea39-4a7dd-3f0e20a Session-ID: ab30317f1a784dc48ff824d0d3715d86 ;remote=f81d4fae7dec11d0a76500a0c91e6bf6 CSeq: 101 INVITE Max-Forwards: 70 Require: siprec Accept: application/sdp, application/rs-metadata, application/rs-metadata-request Contact: <sip:2000@src.example.com>;+sip.src Content-Type: multipart/mixed;boundary=foobar Content-Length: [length] Content-Type: application/SDP ... m=audio 49170 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:96 a=sendonly ... m=video 49174 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:97 a=sendonly ... m=audio 51372 RTP/AVP 0 a=rtpmap:0 PCMU/8000 a=label:98 a=sendonly ... m=video 49176 RTP/AVPF 96 a=rtpmap:96 H.264/90000 a=label:99 a=sendonly .... Content-Type: application/rs-metadata Content-Disposition: recording-session <?xml version="1.0" encoding="UTF-8"?> <recording xmlns='urn:ietf:params:xml:ns:recording:1'> <datamode>partial</datamode> <participantstreamassoc participant_id="srfBElmCRp2QB23b7Mpk0w=="> <send>i1Pz3to5hGk8fuXl+PbwCw==</send> <send>UAAMm5GRQKSCMVvLyl4rFw==</send> <recv>8zc6e0lYTlWIINA6GR+3ag==</recv> <recv>EiXGlc+4TruqqoDaNE76ag==</recv> </participantstreamassoc> <participantstreamassoc participant_id="zSfPoSvdSDCmU3A3TRDxAw=="> <send>8zc6e0lYTlWIINA6GR+3ag==</send> <send>EiXGlc+4TruqqoDaNE76ag==</send> <recv>i1Pz3to5hGk8fuXl+PbwCw==</recv> <recv>UAAMm5GRQKSCMVvLyl4rFw==</recv> </participantstreamassoc> </recording>
Unterstützte Waschbecken:. KinesisDataStreamSink
Sie können diesen Prozessor nicht mit der Amazon Transcribe Call Analytics kombinieren. Weitere Informationen zur Eingabe in und Ausgabe von Amazon Transcribe finden Sie unter Transkribieren von Streaming-Audio im Amazon Transcribe Developer Guide.
Bei der Anruf-Analysesitzung mit Amazon Transcribe werden Audiodaten aus Kinesis Video Stream eingegeben.
-
Unterstützt MediaEncoding: PCM-signiertes 16-Bit-Little-Endian-Audio.
-
Unterstützte MediaSampleRate Abtastraten: Zwischen 8.000 Hz und 48.000 Hz.
StreamConfigurationEingabe für Amazon Transcribe-Prozessoren:
-
Sie müssen das
KinesisVideoStreamArnfür jeden Stream angeben. -
(Optional) KVS
FragmentNumber— Startet einen Job zur Anrufanalyse mit dem Block nach einem bestimmten Fragment. Wenn nicht angegeben, wird der neueste verfügbare Chunk im Kinesis-Videostream verwendet. -
StreamChannelDefinitionAmazon Transcribe unterstützt derzeit Audio mit zwei Kanälen. Sie müssen dasNumberOfChannelsin der Laufzeit angeben.StreamChannelDefinitionZusätzlich müssen Sie den übergeben,ChannelIdwenn Sie Mono-Audio in zwei separaten Kanälen senden. In Ihrem Transkript sind die Kanäle mit den Bezeichnungench_0undch_1versehen. Das folgende Beispiel zeigt den KVS-Eingang für einen Mono-Audiokanal-Stream.
"StreamChannelDefinition" : {" NumberOfChannels" : 1 }
Das folgende Beispiel zeigt den KVS-Eingang für zwei Mono-Audioeingänge in zwei verschiedenen Streams.
KVS-1: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 0 } ] } KVS-2: "StreamChannelDefinition" : { "NumberOfChannels" : 1 "ChannelDefinitions": [ { "ChannelId": 1 } ] }
Anmerkung
Für den Voice Connector, der MediaInsightsPipeline mit einem Amazon Transcribe-Prozessor erstellt wurde, wird das Audio für das Voice Connector-Konto zugewiesen channel-0 und das PSTN-Abschnitt-Audio für. channel-1
Für Voice Connector SIPREC verlassen wir uns auf die SIPREC-Metadaten. In den meisten Fällen wird das Stream-Label mit dem niedrigsten lexikografischen Wert zugewiesen. channel-0
Wenn Sie für die Anrufanalyseprozessoren Amazon Transcribe und Amazon Transcribe zwei Kinesis Video-Streams übergeben und jeder Stream einen Mono-Audiokanal enthält, verschachteln wir beide Kanäle zu einem einzigen Audiostream, bevor wir die Daten zur Transkribierung oder Transkribierung der Anrufanalysedaten verarbeiten.
Das folgende Beispiel zeigt ein einmaliges Metadaten-Ausgabeformat für Amazon Transcribe.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "CallAnalyticsMetadata", "mediaInsightsPipelineId": "string", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "oneTimeMetadata": "string" // JSON encoded string of oneTimeMetadata object } // onetimeMetadata object { "inviteHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // inviteHeaders object { "string": "string" }
Das folgende Beispiel zeigt das Amazon Transcribe-Ausgabeformat.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "Transcribe", "mediaInsightsPipelineId": "string", "metadata": { "voiceconnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string" } "TranscriptEvent": { "Transcript": { "Results": [{ "Alternatives": [{ "Entities": [{ "Category": "string", "Confidence":number, "Content": "string", "EndTime":number, "StartTime":number, "Type": "string" }], "Items": [{ "Confidence":number, "Content": "string", "EndTime":number, "Speaker": "string", "Stable":boolean, "StartTime":number, "Type": "string", "VocabularyFilterMatch":boolean}], "Transcript": "string" }], "ChannelId": "string", "EndTime":number, "IsPartial":boolean, "LanguageCode": "string", "LanguageIdentification": [{ "LanguageCode": "string", "Score":number}], "ResultId": "string", "StartTime":number}] } } }
Unterstützte Senken:KinesisDataStreamSink, SqsQueueSinkSnsTopicSink, undLambdaFunctionSink.
Sie können diesen Prozessor mit dem Amazon Transcribe Call Analytics-Prozessor, dem Amazon Transcribe-Prozessor oder der Anrufaufzeichnung kombinieren. Sie müssen die StartSpeakerSearchTask oder StartVoiceToneAnalysisTask APIs verwenden, um einen Sprachanalyseprozessor aufzurufen. Weitere Informationen zur Verwendung von Sprachanalysen finden Sie unter Verwenden der Amazon Chime SDK-Sprachanalyse.
Die durch Call Analytics generierten Kinesis Data Stream (KDS) -Datensätze enthalten die Medien-Pipeline-ID, den Detailtyp, Metadaten und prozessorspezifische Abschnitte. Informationen zur Nutzung von Daten aus einem Kinesis Data Stream finden Sie im Amazon Kinesis Streams-Entwicklerhandbuch unter Daten aus Amazon Kinesis Data Streams https://docs.aws.amazon.com/streams/latest/dev/building-consumers.html lesen. Um eine Konfiguration mit dieser Senke zu erstellen, benötigen Sie die kinesis:DescribeStream Berechtigung für den angegebenen Stream.
Metadaten
Der metadata Abschnitt der generierten KDS-Datensätze enthält alle Schlüssel-Wert-Paare, die CallAnalyticsRuntimeMetadata während des API-Aufrufs angegeben wurden. CreateMediaInsightsPipeline Wenn eine Anruf-Analysesitzung von einem Voice Connector initiiert wurde, wird der Metadatenbereich automatisch mit den folgenden Parametern gefüllt:
-
transactionId -
fromNumber -
toNumber -
callId -
voiceConnectorId -
direction
Zusätzlich zu den oben aufgeführten Parametern wird der Metadatenbereich für von Voice Connector initiierte Anrufanalysesitzungen mit einem oneTimeMetadata Feld gefüllt, das Folgendes enthält:
-
inviteHeaders -
siprecMetadata
Dieses Feld wird zu Beginn der Sitzung nur einmal in Kinesis Data Streams veröffentlicht und hat den Wert detail-type vonCallAnalyticsMetadata.
Sie können MediaInsightsRuntimeMetadata für jeden CreateMediaInsightsPipeline API-Aufruf eindeutige Identifikatoren in der angeben, sodass Sie die Quelle jedes Datensatzes, der an Ihren Kinesis Data Stream gesendet wird, eindeutig identifizieren können.
Die Aufzeichnung der Anrufanalyse liest Audio aus einem KVS-Stream, zeichnet es als Audiodatei auf und lädt die Datei in den angegebenen Amazon S3-Bucket hoch. Nach der Aufzeichnung sendet die Anrufanalyse auch die Metadaten des Anrufs zusammen mit dem Speicherort der Datei an KDS. Wenn Sie ein Data Warehouse aktivieren, werden die Anrufmetadaten (einschließlich SIPREC-Metadaten, falls SIPREC verwendet wurde) in einer Reihe von Parquet-Tabellen, die Sie abfragen können, an das Data Warehouse geliefert.
Wie bei jedem anderen Call-Analytics-Prozessor müssen Sie zuerst eine Konfiguration für die Pipeline erstellen. Sie können die Amazon Chime SDK-Konsole oder die CLI verwenden, um die Konfiguration zu erstellen. Anschließend verwenden Sie die CLI, um die Pipeline zu erstellen. Weitere Informationen zur Verwendung der Konsole zum Erstellen von Aufzeichnungskonfigurationen finden Sie weiter Erstellen von Anrufanalysekonfigurationen für das Amazon Chime SDK oben in diesem Abschnitt. Weitere Informationen zur Verwendung der Aufzeichnungsworkflows finden Sie weiter Grundlegendes zu den Workflows zum Aufzeichnen von Anrufen für das Amazon Chime SDK oben in diesem Abschnitt.
So verwenden Sie die CLI, um eine Konfiguration zu erstellen
Führen Sie den folgenden Befehl aus:
aws chime-sdk-media-pipeline create-media-insights-pipeline-configuration --cli-input-json file://configuration.json
Das folgende Beispiel zeigt eine JSON-Konfigurationsdatei, bei der nur die Aufzeichnung aktiviert ist:
{ "MediaInsightsPipelineConfigurationName": configuration_name, "ResourceAccessRoleArn":role_arn, "Elements": [ { "KinesisDataStreamSinkConfiguration": { "InsightsTarget":KDS_arn//Where recording live metadata will be delivered. }, "Type": "KinesisDataStreamSink" }, { "S3RecordingSinkConfiguration": { "Destination": "arn:aws:s3:::kvs-recording-testing", "RecordingFileFormat":file_format// Specify "Opus" or "WAV" as the recording file format. }, "Type": "S3RecordingSink" } ] }
Beachten Sie Folgendes:
-
Um die Anrufaufzeichnung über Kinesis Video Streams zu ermöglichen, sollte das Audio PCM-signiert sein (16-Bit-Little-Endian). Die Samplerate muss 8 kHz betragen.
-
Die Entwickler müssen einen ausreichend langen Aufbewahrungszeitraum für den Kinesis Video Stream festlegen, um sicherzustellen, dass die Fragmente erhalten bleiben und für Anrufanalysen verwendet werden können.
-
Wenn Sie die Anrufaufzeichnung entweder alleine oder in Kombination mit anderen Prozessoren aktivieren, müssen Sie zwei Kinesis Video Stream-ARNs für die Aufzeichnung angeben. Die Anrufaufzeichnung unterstützt keinen einzigen Stereo-Audioeingang.
Das folgende Beispiel zeigt das Metadaten-Ausgabeformat für die Aufzeichnung von Amazon S3-Anrufanalysen.
{ "time": "string", // ISO8601 format "service-type": "CallAnalytics", "detail-type": "Recording", "mediaInsightsPipelineId": "string", "s3MediaObjectConsoleUrl": "string", "recordingDurationSeconds": "number", "metadata": "string" // JSON encoded string of the metadata object } // metadata object { "voiceConnectorId": "string", "callId": "string", "transactionId": "string", "fromNumber": "string", "toNumber": "string", "direction": "string", "startTime": "string", // ISO8601 format "endTime": "string", // ISO8601 format "oneTimeMetadata": "string" // JSON encoded in string of oneTimeMetadata object } // onetimeMetadata object { "sipHeaders": "string", // JSON encoded string of SIP Invite headers key-value pair "siprecMetadata": "string", // siprec metadata in XML "siprecMetadataJson": "string" // siprec metadata in JSON (converted from above XML) } // sipHeaders object { "string": "string" }
Um die Sprachverbesserung zu aktivieren, fügen Sie ein VoiceEnhancementSinkConfiguration Element in einen CreateMediaInsightsPipelineConfiguration API-Aufruf ein.
Dieses Beispiel zeigt ein typisches Element.
{ "Type":"VoiceEnhancementSink", "VoiceEnhancementSinkConfiguration": { "Disabled":Boolean(string) // FALSE ==> Voice Enhancement will be performed }
Um eine Konfiguration zu aktualisieren, fügen Sie das VoiceEnhancementSinkConfiguration Element einem UpdateMediaInsightsPipelineConfiguration API-Aufruf hinzu. Wenn Sie dies tun, nimmt die GetMediaInsightsPipelineConfiguration API das VoiceEnhancementSinkConfiguration Element in die Ergebnisse auf.
Diese Beispielanfrage zeigt, wie Voice Enhancement und Amazon S3-Recording aktiviert werden.
POST /media-insights-pipeline-configurations HTTP/1.1 Content-type: application/json { "MediaInsightsPipelineConfigurationName":"media_insights_configuration_name", "ResourceAccessRoleArn":"arn:aws:iam::account_id:role/resource_access_role", "Elements":[ { "Type":"S3RecordingSink", "S3RecordingSinkConfiguration":{ "Destination":"arn:aws:s3:::input_bucket_path", "RecordingFileFormat":"Wav" } }, { "Type":"VoiceEnhancementSink", "VoiceEnhancementSinkConfiguration": { "disabled":"false" } } ], "ClientRequestToken":"client_request_token" }
Anmerkung
Das VoiceEnhancementSink Element erfordert immer ein S3RecordingSink Element in einer Anrufanalysekonfiguration.