Condividi tramite


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

  • Sottoscrizione di Azure: creare un account gratuito
  • Crea una risorsa multiservizi nel portale di Azure. Questo avvio rapido richiede solo una risorsa multiservizio di Servizi di Azure AI. Il codice di esempio consente di specificare chiavi di risorsa di Linguaggio e Voce separate.
  • Ottenere la chiave e l'area della risorsa. Dopo aver distribuito la risorsa Azure AI Foundry, selezionare Vai alla risorsa per visualizzare e gestire le chiavi.

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 di risorsa di Azure AI Foundry, sostituire YourResourceRegion con l'area di risorse di Azure AI Foundry (ad esempio eastus) e sostituire YourResourceEndpoint con l'endpoint dei servizi di intelligenza artificiale di Azure. 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 utilizzare una risorsa multiservizio oppure creare risorse separate di e il riconoscimento vocale. 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 della risorsa AI Foundry per l'intelligenza artificiale. Obbligatorio per le trascrizioni audio con l'opzione --input da URL.

  • --speechRegion REGION: . Obbligatorio per le trascrizioni audio con l'opzione --input da URL. Esempi: eastus, northeurope

  • --languageKey KEY: La chiave della risorsa AI Foundry. Obbligatorio.

  • --languageEndpoint ENDPOINT: . 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 di Ai Foundry per Il riconoscimento vocale. 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

È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure per rimuovere la risorsa Azure AI Foundry creata.

Passaggi successivi