Share via


Snabbstart: Transkription och analys efter anrop

Dokumentation | om språktjänstenLanguage Studio | Dokumentation | om Speech-tjänstenSpeech Studio

I den här C#-snabbstarten utför du attitydanalys och konversationssammanfattning av callcenter-transkriptioner . Exemplet identifierar, kategoriserar och redigerar känslig information automatiskt. Snabbstarten implementerar ett scenario mellan tjänster som använder funktioner i Azure Cognitive Speech - och Azure Cognitive Language-tjänsterna .

Tips

Prova Language Studio eller Speech Studio för en demonstration av hur du använder språk- och taltjänsterna för att analysera samtalscentrets konversationer.

Om du vill distribuera en transkriptionslösning för callcenter till Azure utan kod provar du inmatningsklienten.

Följande Azure AI-tjänster för Speech-funktioner används i snabbstarten:

  • Batch-transkription: Skicka en batch med ljudfiler för transkription.
  • Talarseparation: Separera flera högtalare genom diarisering av mono 16khz 16-bitars PCM wav-filer.

Språktjänsten erbjuder följande funktioner som används:

Förutsättningar

Viktigt

Den här snabbstarten kräver åtkomst till konversationssammanfattning. För att få åtkomst måste du skicka en onlinebegäran och få den godkänd.

Värdena --languageKey och --languageEndpoint i den här snabbstarten måste motsvara en resurs som finns i en av de regioner som stöds av konversationssammanfattnings-API:et: eastus, northeuropeoch uksouth.

Köra transkriptionsanalys efter anrop med C#

Följ de här stegen för att skapa och köra snabbstartsexemplet för transkriptionsanalys efter anrop.

  1. Kopiera /csharp/dotnetcore/call-center/ från GitHub. Om du har Git installerat öppnar du en kommandotolk och kör git clone kommandot för att ladda ned lagringsplatsen för Speech SDK-exempel.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. Öppna en kommandotolk och ändra till projektkatalogen.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Skapa projektet med .NET CLI.

    dotnet build
    
  4. Kör programmet med önskade kommandoradsargument. Se användning och argument för tillgängliga alternativ.

    Här är ett exempel som transkriberar från en exempelljudfil på 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
    

    Om du redan har en transkription för indata, här är ett exempel som bara kräver en språkresurs:

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

    Ersätt YourResourceKey med resursnyckeln för Azure AI-tjänster, ersätt YourResourceRegion med resursregionen för Azure AI-tjänster (till exempel eastus) och ersätt YourResourceEndpoint med azure AI-tjänstslutpunkten. Kontrollera att sökvägarna som anges av --input och --output är giltiga. Annars måste du ändra sökvägarna.

    Viktigt

    Kom ihåg att ta bort nyckeln från koden när du är klar och publicera den aldrig offentligt. För produktion använder du ett säkert sätt att lagra och komma åt dina autentiseringsuppgifter som Azure Key Vault. Mer information finns i säkerhetsartikeln för Azure AI-tjänster.

Kontrollera resultat

Konsolutdata visar hela konversationen och sammanfattningen. Här är ett exempel på den övergripande sammanfattningen, med redigeringar för korthet:

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

Om du anger det --output FILE valfria argumentet skrivs en JSON-version av resultatet till filen. Filutdata är en kombination av JSON-svar från batch-transkriptionen (Speech), sentiment (Language) och api:erna för konversationssammanfattning (Language).

Egenskapen transcription innehåller ett JSON-objekt med resultatet av attitydanalys sammanfogat med batch-transkription. Här är ett exempel med redigeringar för korthet:

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

Egenskapen conversationAnalyticsResults innehåller ett JSON-objekt med resultatet av konversationens PII- och konversationssammanfattningsanalys. Här är ett exempel med redigeringar för korthet:

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

Användning och argument

Användning: call-center -- [...]

Viktigt

Du kan använda resursen med flera tjänster eller separera Språk och Speech-resurser . I båda fallen --languageKey måste värdena och --languageEndpoint motsvara en resurs som finns i en av de regioner som stöds av konversationssammanfattnings-API:et: eastus, northeuropeoch uksouth.

Anslutningsalternativen omfattar:

Indataalternativen omfattar:

  • --input URL: Indataljud från URL. Du måste ange antingen --input alternativet eller --jsonInput .
  • --jsonInput FILE: Ange ett befintligt JSON-resultat för batchavskrift från FILE. Med det här alternativet behöver du bara en språkresurs för att bearbeta en transkription som du redan har. Med det här alternativet behöver du ingen ljudfil eller en Speech-resurs. Åsidosätter --input. Du måste ange antingen --input alternativet eller --jsonInput .
  • --stereo: Anger att ljudet via "indata-URL" ska vara i stereoformat. Om stereo inte anges antas mono-16khz 16-bitars PCM wav-filer. Diarisering av monofiler används för att separera flera högtalare. Diarisering av stereofiler stöds inte, eftersom 2-kanals stereofiler redan bör ha en högtalare per kanal.
  • --certificate: PEM-certifikatfilen. Krävs för C++.

Språkalternativen är:

  • --language LANGUAGE: Det språk som ska användas för attitydanalys och konversationsanalys. Det här värdet ska vara en ISO 639-1-kod med två bokstäver. Standardvärdet är en.
  • --locale LOCALE: Språkvarianten som ska användas för batch-transkription av ljud. Standardvärdet är en-US.

Utdataalternativen omfattar:

  • --help: Visa användningshjälpen och stoppa
  • --output FILE: Mata ut transkription, attityd, konversations-PII och konversationssammanfattningar i JSON-format till en textfil. Mer information finns i utdataexempel.

Rensa resurser

Du kan använda Azure Portal eller Azure Command Line Interface (CLI) för att ta bort azure AI-tjänstresursen som du skapade.

Nästa steg