Quickstart: Transcriptie en analyse na oproep

Documentatie | voor taalserviceLanguage Studio | Documentatie voor Speech-service | Speech Studio

In deze C#-quickstart voert u sentimentanalyse en gesprekssamenvatting van callcentertranscripties uit. In het voorbeeld worden gevoelige gegevens automatisch geïdentificeerd, gecategoraliseerd en bewerkt. In de quickstart wordt een scenario voor meerdere services geïmplementeerd dat gebruikmaakt van functies van de Azure Cognitive Speech - en Azure Cognitive Language-services .

Tip

Probeer Language Studio of Speech Studio voor een demonstratie over het gebruik van de taal- en spraakservices voor het analyseren van gesprekken in het callcenter.

Als u een oplossing voor callcentertranscriptie wilt implementeren in Azure zonder code, probeert u de Opnameclient.

De volgende Azure AI-services voor Spraak-functies worden gebruikt in de quickstart:

De Taalservice biedt de volgende functies die worden gebruikt:

Vereisten

Belangrijk

Voor deze quickstart is toegang tot gesprekssamenvatting vereist. Als u toegang wilt krijgen, moet u een onlineaanvraag indienen en deze laten goedkeuren.

De --languageKey waarden en --languageEndpoint in deze quickstart moeten overeenkomen met een resource die zich in een van de regio's bevindt die worden ondersteund door de API voor het samenvatten van gesprekken: eastus, northeuropeen uksouth.

Transcriptieanalyse na oproep uitvoeren met C#

Volg deze stappen om het snelstartvoorbeeld voor transcriptieanalyse na oproep te bouwen en uit te voeren.

  1. Kopieer /csharp/dotnetcore/call-center/ voorbeeldbestanden van GitHub. Als u Git hebt geïnstalleerd, opent u een opdrachtprompt en voert u de opdracht uit om de git clone opslagplaats met Speech SDK-voorbeelden te downloaden.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. Open een opdrachtprompt en ga naar de projectmap.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Bouw het project met de .NET CLI.

    dotnet build
    
  4. Voer de toepassing uit met de gewenste opdrachtregelargumenten. Zie gebruik en argumenten voor de beschikbare opties.

    Hier volgt een voorbeeld dat wordt getranscribeerd vanuit een voorbeeldaudiobestand op 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
    

    Als u al een transcriptie voor invoer hebt, volgt hier een voorbeeld waarvoor alleen een taalresource is vereist:

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

    Vervang door YourResourceKey de resourcesleutel van uw Azure AI-services, vervang door YourResourceRegion de resourceregio van uw Azure AI-services (zoals eastus) en vervang door YourResourceEndpoint het eindpunt van uw Azure AI-services. Zorg ervoor dat de paden die zijn opgegeven door --input en --output geldig zijn. Anders moet u de paden wijzigen.

    Belangrijk

    Vergeet niet de sleutel uit uw code te verwijderen wanneer u klaar bent, en plaats deze sleutel nooit in het openbaar. Gebruik voor productie een veilige manier om uw referenties op te slaan en te openen, zoals Azure Key Vault. Zie het artikel Beveiliging van Azure AI-services voor meer informatie.

Resultaten controleren

De console-uitvoer toont het volledige gesprek en de samenvatting. Hier volgt een voorbeeld van de algemene samenvatting, met bewerkingen voor de beknoptheid:

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

Als u het --output FILE optionele argument opgeeft, wordt een JSON-versie van de resultaten naar het bestand geschreven. De bestandsuitvoer is een combinatie van de JSON-antwoorden van de API's voor batchtranscriptie (spraak), sentiment (taal) en gesprekssamenvatting (taal).

De transcription eigenschap bevat een JSON-object met de resultaten van sentimentanalyse samengevoegd met batchtranscriptie. Hier volgt een voorbeeld, met bewerkingen voor de beknoptheid:

{
    "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
}   

De conversationAnalyticsResults eigenschap bevat een JSON-object met de resultaten van de gespreks-PII en gesprekssamenvattingsanalyse. Hier volgt een voorbeeld, met bewerkingen voor de beknoptheid:

{
  "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": []
        }
      ]
    }
  }
}

Gebruik en argumenten

Gebruik: call-center -- [...]

Belangrijk

U kunt een gebruiken of maken en scheiden. In beide gevallen moeten de --languageKey waarden en --languageEndpoint overeenkomen met een resource die zich in een van de regio's bevindt die worden ondersteund door de API voor het samenvatten van gesprekken: , eastusnortheuropeen uksouth.

Verbindingsopties zijn onder andere:

Invoeropties zijn onder andere:

  • --input URL: Voer audio van URL in. U moet de --input optie of --jsonInput instellen.
  • --jsonInput FILE: Voer een bestaand JSON-resultaat voor batchtranscriptie in vanuit FILE. Met deze optie hebt u alleen een taalresource nodig om een transcriptie te verwerken die u al hebt. Met deze optie hebt u geen audiobestand of spraakresource nodig. Overschrijft --input. U moet de --input optie of --jsonInput instellen.
  • --stereo: geeft aan dat de audio via '''input URL' in stereo-indeling moet zijn. Als stereo niet is opgegeven, wordt uitgegaan van mono 16 kHz 16-bits PCM wav-bestanden. Diarisatie van monobestanden wordt gebruikt om meerdere luidsprekers te scheiden. Diarisatie van stereobestanden wordt niet ondersteund, omdat 2-kanaals stereobestanden al één luidspreker per kanaal moeten hebben.
  • --certificate: het PEM-certificaatbestand. Vereist voor C++.

Taalopties zijn onder andere:

  • --language LANGUAGE: De taal die moet worden gebruikt voor sentimentanalyse en gespreksanalyse. Deze waarde moet een ISO 639-1-code van twee letters zijn. De standaardwaarde is en.
  • --locale LOCALE: De landinstelling die moet worden gebruikt voor batchtranscriptie van audio. De standaardwaarde is en-US.

Uitvoeropties zijn onder andere:

  • --help: Gebruikshulp weergeven en stoppen
  • --output FILE: voer de transcriptie, het sentiment, de piI van het gesprek en de gesprekssamenvattingen in JSON-indeling uit naar een tekstbestand. Zie uitvoervoorbeelden voor meer informatie.

Resources opschonen

U kunt de Azure Portal of Azure Cli (Opdrachtregelinterface) gebruiken om de Azure AI-servicesresource die u hebt gemaakt, te verwijderen.

Volgende stappen