Dela via


Snabbstart: Transkription och analys efter anrop

Språktjänstdokumentation | Language Studio | Speech Service-dokumentation | Speech 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 .

Dricks

Prova Language Studio eller Speech Studio för en demonstration om 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: Avgränsa flera högtalare genom diarisering av mono 16khz 16-bitars PCM wav-filer.

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

  • Extrahering och redigering av personligt identifierbar information (PII): Identifiera, kategorisera och redigera känslig information i konversationstranskription.
  • Konversationssammanfattning: Sammanfatta i abstrakt text vad varje konversationsdeltagare sa om problem och lösningar. Ett callcenter kan till exempel gruppera produktproblem som har en hög volym.
  • Attitydanalys och åsiktsutvinning: Analysera transkriptioner och associera positiva, neutrala eller negativa sentiment på yttrande- och konversationsnivå.

Förutsättningar

  • Azure-prenumeration – Skapa en kostnadsfritt
  • Skapa en resurs med flera tjänster i Azure Portal. Den här snabbstarten kräver bara en Azure AI-tjänstresurs för flera tjänster. Med exempelkoden kan du ange separata språk- och talresursnycklar.
  • Hämta resursnyckeln och regionen. När azure AI-tjänstresursen har distribuerats väljer du Gå till resurs för att visa och hantera nycklar.

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 scenarier/csharp/dotnetcore/call-center/exempelfiler 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 din Resursregion för Azure AI-tjänster (till exempel eastus) och ersätt YourResourceEndpoint med din Azure AI-tjänstslutpunkt. 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

Konsolens utdata 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-svaren från BATCH-transkriptionen (Speech), sentiment (Language) och konversationssammanfattnings-API:er (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 en resurs med flera tjänster eller separata språk - och talresurser . 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.

Bland anslutningsalternativen finns:

Bland indataalternativen finns:

  • --input URL: Indataljud från URL. Du måste ange antingen --input alternativet eller --jsonInput .
  • --jsonInput FILE: Ange ett befintligt JSON-resultat för batch-transkription 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: Språket 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