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:
- Trascrizione batch: invia un batch di file audio per la trascrizione.
- Separazione altoparlante: separa più altoparlanti tramite la diarizzazione di file wav mono a 16 kHz, 16 bit PCM.
Il servizio di linguaggio offre le funzionalità seguenti:
- Estrazione e offuscamento delle informazioni personali: identifica, classifica e offusca le informazioni sensibili nella trascrizione della conversazione.
- Riepilogo conversazioni: riepiloga in testo astratto ciò che ogni partecipante alla conversazione ha detto sui problemi e sulle risoluzioni. Ad esempio, un call center può raggruppare problemi relativi al prodotto con un volume elevato.
- Analisi valutazione e opinion mining: analizza le trascrizioni e associa valutazioni positive, neutrali o negative a livello di espressione e conversazione.
Prerequisiti
- Sottoscrizione di Azure: creare un account gratuito
- Creare una risorsa multiservizio 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 di Servizi di Azure AI, 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
, northeurope
e 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.
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
Aprire un prompt dei comandi e passare alla directory del progetto.
cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
Compilare il progetto con l’interfaccia della riga di comando .NET.
dotnet build
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, sostituireYourResourceRegion
con l’ area della risorsa Servizi di Azure AI (ad esempioeastus
) e sostituireYourResourceEndpoint
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
, northeurope
e 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.