Share via


Schnellstart: Transkription und Analyse nach dem Anruf

Dokumentation zum Sprachdienst | Language Studio | Dokumentation zum Spracherkennungsdienst | Speech Studio

In dieser C#-Schnellstartanleitung führen Sie eine Stimmungsanalyse und Konversationszusammenfassung von Callcenter-Transkriptionen durch. Im Beispiel werden vertrauliche Informationen automatisch identifiziert, kategorisiert und überarbeitet. Die Schnellstartanleitung implementiert ein dienstübergreifendes Szenario, das Features der Dienste Azure Cognitive Speech und Azure Cognitive Language verwendet.

Tipp

Testen Sie Language Studio oder Speech Studio, um sich eine Demonstration dazu anzusehen, wie Sie die Language- und Speech- Dienste zum Analysieren von Callcenter-Unterhaltungen verwenden.

Zum Bereitstellen einer Call Center-Transkriptionslösung für Azure mit einem programmierfreien Ansatz können Sie den Erfassungsclient testen.

Die folgenden Azure KI Services für Speech-Features werden in diesem Schnellstart verwendet:

  • Batchtranskription: Senden eines Batches von Audiodateien für die Transkription.
  • Sprechertrennung: Trennen mehrerer Sprecher durch Diarisierung von 16 kHz-16 Bit-PCM-WAV-Mono-Dateien.

Der Sprachdienst bietet die folgenden Features:

Voraussetzungen

Wichtig

Diese Schnellstartanleitung erfordert Zugriff auf die Konversationszusammenfassung. Um Zugriff zu erhalten, müssen Sie eine Onlineanforderung einreichen und diese genehmigen lassen.

Die Werte --languageKey und --languageEndpoint in diesem Schnellstart müssen einer Ressource entsprechen, die sich in einer der Regionen befindet, die von der Konversationszusammenfassungs-API unterstützt werden: eastus, northeurope und uksouth.

Ausführen der Transkriptionsanalyse nach dem Anruf mit C#

Führen Sie die folgenden Schritte aus, um das Schnellstartcodebeispiel für die Transkriptionsanalyse nach dem Aufruf zu erstellen und auszuführen.

  1. Kopieren Sie die scenarios/csharp/dotnetcore/call-center/-Beispieldateien aus GitHub. Wenn Git installiert ist, öffnen Sie eine Eingabeaufforderung, und führen Sie den Befehl git clone aus, um das Repository mit den Speech SDK-Beispielen herunterzuladen.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. Öffnen Sie eine Eingabeaufforderung, und wechseln Sie zum Projektverzeichnis.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Erstellen Sie das Projekt mit der .NET-CLI.

    dotnet build
    
  4. Führen Sie die Anwendung mit Ihren bevorzugten Befehlszeilenargumenten aus. Weitere Informationen zu den verfügbaren Optionen finden Sie unter Verwendung und Argumente.

    Hier ist ein Beispiel für die Transkription aus einer Beispielaudiodatei auf GitHub:

    dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --speechKey YourResourceKey --speechRegion YourResourceRegion --input "https://github.com/Azure-Samples/cognitive-services-speech-sdk/raw/master/scenarios/call-center/sampledata/Call1_separated_16k_health_insurance.wav" --stereo  --output summary.json
    

    Wenn Sie bereits über eine Transkription zur Eingabe verfügen, finden Sie hier ein Beispiel, das nur eine Language-Ressource erfordert:

    dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --jsonInput "YourTranscriptionFile.json" --stereo  --output summary.json
    

    Ersetzen Sie YourResourceKey durch Ihren Azure KI Services-Ressourcenschlüssel, YourResourceRegion durch die Region Ihrer Azure KI Services-Ressource (z. B. eastus) und YourResourceEndpoint durch Ihren Azure KI Services-Endpunkt. Stellen Sie sicher, dass die durch --input und --output angegebenen Pfade gültig sind. Andernfalls müssen Sie die Pfade ändern.

    Wichtig

    Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen. Verwenden Sie für die Produktion eine sichere Art der Speicherung und des Zugriffs auf Ihre Anmeldeinformationen wie Azure Key Vault. Weitere Informationen finden Sie im Artikel zur Azure KI Services-Sicherheit.

Überprüfen der Ergebnisse

Die Konsolenausgabe zeigt die vollständige Konversation und Zusammenfassung an. Hier sehen Sie ein Beispiel für die Gesamtzusammenfassung mit kürzenden Bearbeitungen:

Conversation summary:
    issue: Customer wants to sign up for insurance.
    resolution: Customer was advised that customer would be contacted by the insurance company.

Wenn Sie das optionale Argument--output FILE angeben, wird eine JSON-Version der Ergebnisse in die Datei geschrieben. Die Dateiausgabe ist eine Kombination der JSON-Antworten aus den APIs für Batch-Transkription (Speech), Stimmung (Language) und Konversationszusammenfassungs (Language).

Die transcription-Eigenschaft enthält ein JSON-Objekt mit den Ergebnissen der mit der Batchtranskription zusammengeführten Stimmungsanalyse. Im Folgenden finden Sie ein Beispiel mit kürzenden Bearbeitungen:

{
    "source": "https://github.com/Azure-Samples/cognitive-services-speech-sdk/raw/master/scenarios/call-center/sampledata/Call1_separated_16k_health_insurance.wav",
// Example results redacted for brevity
        "nBest": [
          {
            "confidence": 0.77464247,
            "lexical": "hello thank you for calling contoso who am i speaking with today",
            "itn": "hello thank you for calling contoso who am i speaking with today",
            "maskedITN": "hello thank you for calling contoso who am i speaking with today",
            "display": "Hello, thank you for calling Contoso. Who am I speaking with today?",
            "sentiment": {
              "positive": 0.78,
              "neutral": 0.21,
              "negative": 0.01
            }
          },
        ]
// Example results redacted for brevity
}   

Die conversationAnalyticsResults-Eigenschaft enthält ein JSON-Objekt mit den Ergebnissen der Analyse von Konversations-PII und Konversationszusammenfassung. Im Folgenden finden Sie ein Beispiel mit kürzenden Bearbeitungen:

{
  "conversationAnalyticsResults": {
    "conversationSummaryResults": {
      "conversations": [
        {
          "id": "conversation1",
          "summaries": [
            {
              "aspect": "issue",
              "text": "Customer wants to sign up for insurance"
            },
            {
              "aspect": "resolution",
              "text": "Customer was advised that customer would be contacted by the insurance company"
            }
          ],
          "warnings": []
        }
      ],
      "errors": [],
      "modelVersion": "2022-05-15-preview"
    },
    "conversationPiiResults": {
      "combinedRedactedContent": [
        {
          "channel": "0",
          "display": "Hello, thank you for calling Contoso. Who am I speaking with today? Hi, ****. Uh, are you calling because you need health insurance?", // Example results redacted for brevity
          "itn": "hello thank you for calling contoso who am i speaking with today hi **** uh are you calling because you need health insurance", // Example results redacted for brevity
          "lexical": "hello thank you for calling contoso who am i speaking with today hi **** uh are you calling because you need health insurance" // Example results redacted for brevity
        },
        {
          "channel": "1",
          "display": "Hi, my name is **********. I'm trying to enroll myself with Contoso. Yes. Yeah, I'm calling to sign up for insurance.", // Example results redacted for brevity
          "itn": "hi my name is ********** i'm trying to enroll myself with contoso yes yeah i'm calling to sign up for insurance", // Example results redacted for brevity
          "lexical": "hi my name is ********** i'm trying to enroll myself with contoso yes yeah i'm calling to sign up for insurance" // Example results redacted for brevity
        }
      ],
      "conversations": [
        {
          "id": "conversation1",
          "conversationItems": [
            {
              "id": "0",
              "redactedContent": {
                "itn": "hello thank you for calling contoso who am i speaking with today",
                "lexical": "hello thank you for calling contoso who am i speaking with today",
                "text": "Hello, thank you for calling Contoso. Who am I speaking with today?"
              },
              "entities": [],
              "channel": "0",
              "offset": "PT0.77S"
            },
            {
              "id": "1",
              "redactedContent": {
                "itn": "hi my name is ********** i'm trying to enroll myself with contoso",
                "lexical": "hi my name is ********** i'm trying to enroll myself with contoso",
                "text": "Hi, my name is **********. I'm trying to enroll myself with Contoso."
              },
              "entities": [
                {
                  "text": "Mary Rondo",
                  "category": "Name",
                  "offset": 15,
                  "length": 10,
                  "confidenceScore": 0.97
                }
              ],
              "channel": "1",
              "offset": "PT4.55S"
            },
            {
              "id": "2",
              "redactedContent": {
                "itn": "hi **** uh are you calling because you need health insurance",
                "lexical": "hi **** uh are you calling because you need health insurance",
                "text": "Hi, ****. Uh, are you calling because you need health insurance?"
              },
              "entities": [
                {
                  "text": "Mary",
                  "category": "Name",
                  "offset": 4,
                  "length": 4,
                  "confidenceScore": 0.93
                }
              ],
              "channel": "0",
              "offset": "PT9.55S"
            },
            {
              "id": "3",
              "redactedContent": {
                "itn": "yes yeah i'm calling to sign up for insurance",
                "lexical": "yes yeah i'm calling to sign up for insurance",
                "text": "Yes. Yeah, I'm calling to sign up for insurance."
              },
              "entities": [],
              "channel": "1",
              "offset": "PT13.09S"
            },
// Example results redacted for brevity
          ],
          "warnings": []
        }
      ]
    }
  }
}

Verwendung und Argumente

Syntax: call-center -- [...]

Wichtig

Sie können eine mehrere Dienste-Ressource verwenden oder separate Language- und Speech-Ressourcen. In beiden Fällen müssen die Werte --languageKey und --languageEndpoint einer Ressource entsprechen, die sich in einer der Regionen befindet, die von der Konversationszusammenfassungs-API unterstützt werden: eastus, northeurope und uksouth.

Beispiele für Verbindungsoptionen:

  • --speechKey KEY: Ihr Azure KI Services- oder Speech-Ressourcenschlüssel. Erforderlich für Audiotranskriptionen mit der „--input von URL“-Option.

  • --speechRegion REGION: Ihre Azure KI Services- oder Speech-Ressourcenregion. Erforderlich für Audiotranskriptionen mit der „--input aus URL“-Option. Beispiele: eastus, northeurope

  • --languageKey KEY: Ihr Azure KI Services- oder Language-Ressourcenschlüssel. Erforderlich.

  • --languageEndpoint ENDPOINT: Ihr Azure KI Services- oder Language-Ressourcenendpunkt. Erforderlich. Beispiel: https://YourResourceName.cognitiveservices.azure.com

Beispiele für Eingabeoptionen:

  • --input URL: Eingabe von Audio aus URL. Sie müssen entweder die Option --input oder --jsonInput setzen.
  • --jsonInput FILE: Eingabe eines vorhandenen Batch-Transkription-JSON-Ergebnisses aus FILE. Mit dieser Option benötigen Sie nur eine Language-Ressource, um eine Transkription zu verarbeiten, die Sie bereits besitzen. Mit dieser Option benötigen Sie keine Audiodatei oder Speech-Ressource. Überschreibt --input. Sie müssen entweder die Option --input oder --jsonInput setzen.
  • --stereo: Gibt an, dass die über die ```Eingabe-URL` eingegebenen Audiodaten im Stereoformat vorliegen sollten. Wenn Stereo nicht angegeben ist, werden 16 kHz-16 Bit-PCM-WAV-Mono-Dateien vorausgesetzt. Mit der Diarisierung von Monodateien werden mehrere Sprecher getrennt. Die Diarisierung von Stereodateien wird nicht unterstützt, da 2-Kanal-Stereodateien bereits über einen Sprecher pro Kanal verfügen sollten.
  • --certificate: Die PEM-Zertifikatdatei. Erforderlich für C++.

Beispiele für Sprachoptionen:

  • --language LANGUAGE: Die Sprache, die für die Stimmungsanalyse und Konversationsanalyse verwendet werden soll. Dieser Wert sollte ein aus zwei Buchstaben bestehender ISO 639-1-Code sein. Standardwert: en.
  • --locale LOCALE: Das Gebietsschema, das für die Audiobatchtranskription verwendet werden soll. Standardwert: en-US.

Beispiele für Ausgabeoptionen:

  • --help : Anzeige von Nutzungshilfe und Beenden
  • --output FILE: Ausgabe von Transkription, Stimmung, Konversations-PII und Konversationszusammenfassungen im JSON-Format in eine Textdatei. Weitere Informationen finden Sie unter Ausgabebeispiele.

Bereinigen von Ressourcen

Sie können das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (Command Line Interface, CLI) verwenden, um die von Ihnen erstellte Azure KI Services-Ressource zu entfernen.

Nächste Schritte