Sdílet prostřednictvím


Rychlý start: Přepis a analýza po volání

Dokumentace | | ke službě Language Studio Speech |

V tomto rychlém startu v jazyce C# provedete analýzu mínění a shrnutí konverzací přepisů call center . Ukázka automaticky identifikuje, kategorizuje a redakce citlivých informací. Rychlý start implementuje scénář mezi službami, který používá funkce služeb Azure Cognitive Speech a Azure Cognitive Language .

Tip

Vyzkoušejte Language Studio nebo Speech Studio pro ukázku, jak používat služby Language and Speech k analýze konverzací v call centru.

Pokud chcete nasadit řešení přepisu call centra do Azure s přístupem bez kódu, zkuste klienta příjmu dat.

V rychlém startu se používají následující služby Azure AI pro funkce služby Speech:

  • Dávkový přepis: Odešle dávku zvukových souborů pro přepis.
  • Oddělení reproduktorů: Oddělte více reproduktorů diarizací mono 16khz 16bitových souborů PCM wav.

Služba Language nabízí následující funkce, které se používají:

  • Extrakce a redakce identifikovatelných osobních údajů: Identifikace, kategorizace a redakce citlivých informací v přepisu konverzace.
  • Shrnutí konverzací: Shrnutí v abstraktním textu, co každý účastník konverzace řekl o problémech a řešeních. Call center může například seskupit problémy s produkty, které mají velký objem.
  • Analýza mínění a dolování názorů: Analyzujte přepisy a přidružujte pozitivní, neutrální nebo negativní mínění na úrovni promluvy a konverzace.

Požadavky

Důležité

Tento rychlý start vyžaduje přístup k sumarizaci konverzací. Pokud chcete získat přístup, musíte odeslat online žádost a schválit ji.

Hodnoty --languageKey a --languageEndpoint hodnoty v tomto rychlém startu musí odpovídat prostředku, který je v jedné z oblastí podporovaných rozhraním API souhrnu konverzací: eastus, northeuropea uksouth.

Spuštění analýzy přepisu po volání pomocí jazyka C#

Pomocí těchto kroků sestavte a spusťte příklad kódu rychlého startu pro analýzu přepisu po volání.

  1. Zkopírujte scénáře /csharp/dotnetcore/call-center/ ukázkové soubory z GitHubu. Pokud máte nainstalovaný Git, otevřete příkazový řádek a spusťte git clone příkaz pro stažení úložiště ukázek sady Speech SDK.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. Otevřete příkazový řádek a přejděte do adresáře projektu.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Sestavte projekt pomocí .NET CLI.

    dotnet build
    
  4. Spusťte aplikaci s upřednostňovanými argumenty příkazového řádku. Dostupné možnosti najdete v tématu využití a argumenty .

    Tady je příklad, který přepisuje z ukázkového zvukového souboru na GitHubu:

    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
    

    Pokud už máte přepis pro vstup, tady je příklad, který vyžaduje pouze prostředek jazyka:

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

    Nahraďte YourResourceKey klíčem prostředku služby Azure AI, nahraďte YourResourceRegion oblastí prostředků služeb Azure AI (napříkladeastus) a nahraďte YourResourceEndpoint koncovým bodem služeb Azure AI. Ujistěte se, že cesty zadané --input a --output jsou platné. Jinak je nutné změnit cesty.

    Důležité

    Nezapomeňte klíč z kódu odebrat, až to budete hotovi, a nikdy ho veřejně neposílejte. V produkčním prostředí použijte bezpečný způsob ukládání přihlašovacích údajů a přístupu k vašim přihlašovacím údajům, jako je Azure Key Vault. Další informace najdete v článku zabezpečení služeb Azure AI.

Kontrola výsledků

Výstup konzoly zobrazuje úplnou konverzaci a souhrn. Tady je příklad celkového souhrnu s redakcemi pro stručnost:

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

Pokud zadáte --output FILE volitelný argument, zapíše se do souboru verze výsledků JSON. Výstup souboru je kombinací odpovědí JSON z dávkového přepisu (Speech), mínění (jazyk) a rozhraní API pro sumarizaci konverzací (jazyk).

Vlastnost transcription obsahuje objekt JSON s výsledky analýzy mínění sloučené s dávkovým přepisem. Tady je příklad s redakcemi pro stručnost:

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

Vlastnost conversationAnalyticsResults obsahuje objekt JSON s výsledky piI konverzace a analýzy souhrnu konverzací. Tady je příklad s redakcemi pro stručnost:

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

Využití a argumenty

Použití: call-center -- [...]

Důležité

Můžete použít prostředek s více službami nebo samostatné prostředky jazyka a řeči . V obou případech musí hodnoty odpovídat prostředku, --languageKey který je v jedné z oblastí podporovaných rozhraním API pro sumarizaci konverzací: eastus, northeuropea uksouth.--languageEndpoint

Mezi možnosti připojení patří:

Mezi vstupní možnosti patří:

  • --input URL: Vstup zvuku z adresy URL. Musíte nastavit buď tuto --input možnost, nebo --jsonInput možnost.
  • --jsonInput FILE: Zadejte existující výsledek JSON dávkového přepisu ze souboru FILE. S touto možností potřebujete pouze prostředek jazyka ke zpracování přepisu, který už máte. Díky této možnosti nepotřebujete zvukový soubor ani prostředek služby Speech. Přepisy --input. Musíte nastavit buď tuto --input možnost, nebo --jsonInput možnost.
  • --stereo: Označuje, že zvuk přes "vstupní adresu URL" by měl být ve stereo formátu. Pokud stereo není zadáno, předpokládá se mono 16khz 16bitové soubory PCM wav. Diarizace mono souborů se používá k oddělení více reproduktorů. Diarizace stereo souborů není podporována, protože 2kanálové stereo soubory by už měly mít jeden reproduktor na kanál.
  • --certificate: Soubor certifikátu PEM. Požadováno pro C++.

Mezi jazykové možnosti patří:

  • --language LANGUAGE: Jazyk, který se má použít k analýze mínění a analýze konverzací. Tato hodnota by měla být dvoumísmenný kód ISO 639-1. Výchozí hodnota je en.
  • --locale LOCALE: Národní prostředí, které se má použít k dávkovému přepisu zvuku. Výchozí hodnota je en-US.

Mezi možnosti výstupu patří:

  • --help: Zobrazení nápovědy k používání a zastavení
  • --output FILE: Výstup přepisu, mínění, piI konverzace a souhrny konverzací ve formátu JSON do textového souboru. Další informace najdete v příkladech výstupu.

Vyčištění prostředků

Prostředek služby Azure AI, který jste vytvořili, můžete odebrat pomocí webu Azure Portal nebo rozhraní příkazového řádku Azure (CLI ).

Další kroky