Guida introduttiva: Trascrizione e analisi post-chiamata

Documentazione del | servizio di linguaggioLanguage Studio | Documentazione del | servizio VoceSpeech Studio

In questa guida introduttiva di C# si eseguono l'analisi del sentiment e il riepilogo delle conversazioni delle trascrizioni del call center . L'esempio identificherà, classificare e redact automaticamente le informazioni sensibili. La guida introduttiva implementa uno scenario tra servizi che usa le funzionalità dei servizi Voce cognitiva di Azure e Del linguaggio cognitivo di Azure .

Suggerimento

Provare Language Studio o Speech Studio per una dimostrazione su come usare i servizi Lingua e Riconoscimento vocale 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.

I servizi di intelligenza artificiale di Azure seguenti per le funzionalità voce vengono usati nella guida introduttiva:

Il servizio Language offre le funzionalità seguenti usate:

Prerequisiti

  • Sottoscrizione di Azure: creare un account gratuito
  • Creare una risorsa multiservizio nel portale di Azure. Questo argomento di avvio rapido richiede solo una risorsa multiservizio per i servizi di Intelligenza artificiale di Azure. Il codice di esempio consente di specificare chiavi di ) e Voce).
  • Ottenere la chiave e l'area della risorsa. Dopo aver distribuito la risorsa dei servizi di intelligenza artificiale di Azure, selezionare Vai alla risorsa per visualizzare e gestire le chiavi. Per altre informazioni sulle risorse dei servizi di intelligenza artificiale di Azure, vedere Ottenere le chiavi per la risorsa.

Importante

Questa guida introduttiva richiede l'accesso al riepilogo della conversazione. Per ottenere l'accesso, è necessario inviare una richiesta online e averla approvata.

I --languageKey valori e --languageEndpoint in questa guida introduttiva devono corrispondere a una risorsa che si trova in una delle aree supportate dall'API di riepilogo della conversazione: eastus, northeuropee uksouth.

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

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

  1. /csharp/dotnetcore/call-center/ (Copia gli scenari di esempio/csharp/dotnetcore/call-center/call-center/ da GitHub). Se Git è installato, aprire un prompt dei comandi ed eseguire il git clone comando 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 di .NET.

    dotnet build
    
  4. Eseguire l'applicazione con gli argomenti della riga di comando preferiti. Per le opzioni disponibili, vedere l'utilizzo e gli 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 si dispone già di una trascrizione per l'input, ecco un esempio che richiede solo una risorsa Language:

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

    Sostituire YourResourceKey con la chiave di risorsa dei servizi di intelligenza artificiale di Azure, sostituire YourResourceRegion con l'area delle risorse dei servizi di intelligenza artificiale di Azure (ad esempio eastus) e sostituire YourResourceEndpoint con l'endpoint dei servizi di intelligenza artificiale di Azure. Assicurarsi 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 la produzione, usare un modo sicuro per archiviare e accedere alle credenziali, ad esempio Azure Key Vault. Per altre informazioni, vedere l'articolo sulla sicurezza dei servizi di intelligenza artificiale di Azure.

Controllare i risultati

L'output della console mostra la conversazione completa e il riepilogo. Di seguito è riportato un esempio del riepilogo complessivo, con le modifiche 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 della trascrizione batch (Speech), del sentiment (Language) e delle API di riepilogo delle conversazioni (Language).

La transcription proprietà contiene un oggetto JSON con i risultati dell'analisi del sentiment uniti alla trascrizione batch. Ecco un esempio, con le redazioni 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 conversationAnalyticsResults proprietà contiene un oggetto JSON con i risultati dell'analisi delle informazioni personali della conversazione e del riepilogo della conversazione. Ecco un esempio, con le redazioni 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 creare e . In entrambi i casi, i --languageKey valori e --languageEndpoint devono corrispondere a una risorsa che si trova in una delle aree supportate dall'API di riepilogo della conversazione: eastus, northeuropee uksouth.

Le opzioni di connessione includono:

  • --speechKey KEY: o . Obbligatorio per le trascrizioni audio con l'opzione dall'URL --input .

  • --speechRegion REGION: artificiale di Azure per intelligenza artificiale di Azure o per voce. Obbligatorio per le trascrizioni audio con l'opzione dall'URL --input . Esempi: eastus, northeurope

  • --languageKey KEY: o Language. Obbligatorio.

  • --languageEndpoint ENDPOINT: o lingua. Obbligatorio. Esempio: https://YourResourceName.cognitiveservices.azure.com

Le opzioni di input includono:

  • --input URL: input audio dall'URL. È necessario impostare l'opzione --input o --jsonInput .
  • --jsonInput FILE: input di un risultato JSON di trascrizione batch esistente da FILE. Con questa opzione è necessaria solo una risorsa lingua per elaborare una trascrizione già disponibile. Con questa opzione non è necessario un file audio o una risorsa Voce. Esegue l'override di --input. È necessario impostare l'opzione --input o --jsonInput .
  • --stereo: indica che l'audio tramite '''URL di input' deve essere in formato stereo. Se non si specifica stereo, verranno usati file WAV PCM a 16 khz a 16 bit. 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 dovrebbero avere già un altoparlante per canale.
  • --certificate: file di certificato PEM. Obbligatorio per C++.

Le opzioni di lingua includono:

  • --language LANGUAGE: lingua da usare per l'analisi del sentiment 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 la Guida all'utilizzo e arresta
  • --output FILE: restituisce i riepiloghi tra trascrizione, sentiment, informazioni personali della conversazione 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 dei servizi di intelligenza artificiale di Azure creata.

Passaggi successivi