Avvio rapido: Trascrizione post-chiamata e analisi

Documentazione del servizio di linguaggio | Language Studio | Documentazione del servizio Voce | Speech Studio

In questo avvio rapido in C# si eseguono l’analisi valutazione e il riepilogo delle conversazioni delle trascrizioni del call center. L'esempio identificherà, categorizzerà e offuscherà automaticamente le informazioni riservate. L’avvio rapido implementa uno scenario tra servizi che usa le funzionalità dei Servizi cognitivi di Azure per la voce e dei Servizi cognitivi di Azure per il linguaggio.

Suggerimento

Provare Language Studio o Speech Studio per una dimostrazione su come usare i servizi Lingua e Voce per analizzare le conversazioni del call center.

Per distribuire una soluzione di trascrizione del call center in Azure con un approccio senza codice provare il client di inserimento.

Nell’avvio rapido vengono usati i seguenti Servizi di Azure AI per la voce:

Il servizio di linguaggio offre le funzionalità seguenti:

Prerequisiti

Importante

Questo avvio rapido richiede l'accesso al riepilogo conversazioni. Per ottenere l'accesso è necessario inviare una richiesta online e ottenere l’approvazione.

I valori --languageKey e --languageEndpoint in questo avvio rapido devono corrispondere a una risorsa che si trova in una delle aree supportate dall'API riepilogo conversazioni: eastus, northeuropee uksouth.

Eseguire l'analisi della trascrizione post-chiamata con C#

Seguire questa procedura per compilare ed eseguire l'esempio di codice dell’avvio rapido relativo all'analisi della trascrizione post-chiamata.

  1. Copia i file di esempio scenarios/csharp/dotnetcore/call-center/ da GitHub. Con Git installato aprire un prompt dei comandi ed esegui il comando git clone per scaricare il repository degli esempi di Speech SDK.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. Aprire un prompt dei comandi e passare alla directory del progetto.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Compilare il progetto con l’interfaccia della riga di comando .NET.

    dotnet build
    
  4. Eseguire l'applicazione con gli argomenti della riga di comando preferiti. Per le opzioni disponibili vedere utilizzo e argomenti.

    Ecco un esempio che trascrive da un file audio di esempio in 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
    

    Se è già disponibile una trascrizione per l'input, ecco un esempio che richiede solo una risorsa di linguaggio:

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

    Sostituire YourResourceKey con la chiave della risorsa di Servizi di Azure AI, sostituire YourResourceRegion con l’ area della risorsa Servizi di Azure AI (ad esempio eastus) e sostituire YourResourceEndpoint con l'endpoint di Servizi di Azure AI. Verificare che i percorsi specificati da --input e --output siano validi. In caso contrario, è necessario modificare i percorsi.

    Importante

    Al termine, ricordarsi di rimuovere la chiave dal codice e non renderlo mai pubblico. Per un ambiente di produzione usare un metodo sicuro per l'archiviazione e l'accesso alle proprie credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza del Servizi di Azure AI.

Controllare i risultati

L'output della console mostra la conversazione completa e il riepilogo. Di seguito è riportato un esempio di riepilogo generale con offuscamenti per brevità:

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

Se si specifica l'argomento --output FILE facoltativo , nel file viene scritta una versione JSON dei risultati. L'output del file è una combinazione delle risposte JSON dalle API trascrizione batch (Voce), valutazione (linguaggio) e riepilogo conversazioni (linguaggio).

La proprietà transcription contiene un oggetto JSON con i risultati dell'analisi valutazione uniti alla trascrizione batch. Ecco un esempio con offuscamenti per brevità:

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

La proprietàconversationAnalyticsResults contiene un oggetto JSON con i risultati dell'analisi delle informazioni personali delle conversazioni e del riepilogo conversazioni. Ecco un esempio con offuscamenti per brevità:

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

Utilizzo e argomenti

Sintassi: call-center -- [...]

Importante

È possibile usare una risorsa multiservizio o risorse di Linguaggio e Voce separate. In entrambi i casi i valori di --languageKey e --languageEndpoint devono corrispondere a una risorsa che si trova in una delle aree supportate dall'API riepilogo conversazioni: eastus, northeuropee uksouth.

Le opzioni di connessione includono:

  • --speechKey KEY: chiave di risorsa di Servizi di Azure AI o di Voce. Obbligatorio per le trascrizioni audio con l'opzione --input da URL.

  • --speechRegion REGION: regione della risorsa di Servizi di Azure AI o di Voce. Obbligatorio per le trascrizioni audio con l'opzione --input da URL. Esempi: eastus, northeurope

  • --languageKey KEY: chiave di risorsa di Servizi di Azure AI o di Lingua. Obbligatorio.

  • --languageEndpoint ENDPOINT: endpoint di risorsa di Servizi di Azure AI o di Lingua. Obbligatorio. Esempio: https://YourResourceName.cognitiveservices.azure.com

Le opzioni di input includono:

  • --input URL: input audio dal file. È necessario impostare la proprietà --input o --jsonInput.
  • --jsonInput FILE: input del risultato JSON di una trascrizione batch esistente da FILE. Con questa opzione è necessaria solo una risorsa di linguaggio per elaborare una trascrizione già disponibile. Con questa opzione non è necessario un file audio o una risorsa voce. Esegue l'override dell'oggetto --input. È necessario impostare la proprietà --input o --jsonInput.
  • --stereo: indica che l'audio tramite ‘URL di input’ deve essere in formato stereo. Se non è specificato stereo, vengono considerati i file wav a 16 kHz, 16 bit PCM. La diarizzazione dei file mono viene usata per separare più altoparlanti. La diarizzazione dei file stereo non è supportata perché i file stereo a 2 canali hanno già un altoparlante per canale.
  • --certificate: file di certificato PEM. Obbligatorio per C++.

Le opzioni di linguaggio includono:

  • --language LANGUAGE: lingua da usare per l'analisi valutazione e l'analisi della conversazione. Questo valore deve essere un codice ISO 639-1 a due lettere. Il valore predefinito è en.
  • --locale LOCALE: impostazioni locali da usare per la trascrizione batch dell'audio. Il valore predefinito è en-US.

Le opzioni di output includono:

  • --help: mostra l’utilizzo della Guida e arresta
  • --output FILE: output dei riepiloghi di trascrizioni, valutazioni, informazioni personali e conversazioni in formato JSON in un file di testo. Per altre informazioni vedere esempi di output.

Pulire le risorse

Per rimuovere la risorsa servizi di Azure AI creata è possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure.

Passaggi successivi