Démarrage rapide : Transcription et analytique post-appel
Documentation du service de langage | Language Studio | Documentation du service Speech | Speech Studio
Dans ce guide de démarrage rapide C#, vous effectuez une analyse des sentiments et un résumé des conversations dans les transcriptions du centre d’appels. L’exemple va automatiquement identifier, catégoriser et adapter des informations sensibles. Le guide de démarrage rapide implémente un scénario multiservice qui utilise à la fois les fonctionnalités des services Speech et des services de langage d’Azure Cognitive Services.
Conseil
Essayez Language Studio ou Speech Studio pour une démonstration de l’utilisation des services Language et Speech visant à analyser les conversations de centre d’appels.
Pour déployer une solution de transcription de centre d’appels dans Azure avec une approche sans code, essayez le client d’ingestion.
Les fonctionnalités Azure AI services pour Speech suivantes sont utilisées dans le démarrage rapide :
- Transcription par lot : Envoyez un lot de fichiers audio à la transcription.
- Séparation des haut-parleurs : Séparez les multiples haut-parleurs grâce à la diarisation des fichiers wav PCM mono 16 khz 16 bits.
Le service Language offre les fonctionnalités suivantes :
- Extraction et rédaction d’informations d’identification personnelles : identifiez, catégorisez et rédigez les informations sensibles dans la transcription de conversation.
- Résumé de la conversation : résume sous forme de texte ce que chaque participant à la conversation a dit à propos des problèmes et des résolutions. Par exemple, un centre d’appels peut regrouper les problèmes produit qui sont les plus fréquents.
- Analyse des sentiments et exploration des opinions : analysez les transcriptions et associez des sentiments positifs, neutres ou négatifs au niveau de l’énoncé et de la conversation.
Prérequis
- Abonnement Azure - En créer un gratuitement
- Créez une ressource multiservice dans le Portail Azure. Ce démarrage rapide nécessite une seule ressource multiservice Azure AI services. L’exemple de code vous permet de spécifier des clés de ressources Language et Speech distinctes.
- Obtenez la clé de ressource et la région. Une fois votre ressource Azure AI services déployée, sélectionnez Accéder à la ressource pour afficher et gérer des clés.
Important
Ce guide de démarrage rapide nécessite un accès au résumé des conversations. Pour l’obtenir, vous devez envoyer une demande en ligne et la faire approuver.
Les valeurs --languageKey
et --languageEndpoint
figurant dans ce guide de démarrage rapide doivent correspondre à une ressource qui se trouve dans l’une des régions prises en charge par l’API de résumé des conversations : eastus
, northeurope
et uksouth
.
Exécuter l’analyse de la transcription post-appel avec C#
Suivez ces étapes pour générer et exécuter l’exemple de code de démarrage rapide de l’analyse de la transcription post-appel.
Copiez les exemples de fichiers scenarios/csharp/dotnetcore/call-center/ à partir de GitHub. Si Git est installé, ouvrez une invite de commandes et exécutez la commande
git clone
pour télécharger le dépôt d’exemples du SDK Speech.git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
Ouvrez une invite de commandes et accédez au répertoire du projet.
cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
Générez le projet avec l’interface CLI .NET.
dotnet build
Exécutez l’application avec vos arguments de ligne de commande préférés. Consultez la section Utilisation et arguments pour connaître les options disponibles.
Voici un exemple qui transcrit un exemple de fichier audio sur 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
Si vous avez déjà une transcription pour l’entrée, voici un exemple qui nécessite uniquement une ressource Language :
dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --jsonInput "YourTranscriptionFile.json" --stereo --output summary.json
Remplacez
YourResourceKey
par votre clé de ressource Azure AI services, remplacezYourResourceRegion
par la région de votre ressource Azure AI services (par exempleeastus
), puis remplacezYourResourceEndpoint
par votre point de terminaison Azure AI services. Vérifiez que les chemins spécifiés par--input
et--output
sont valides. Sinon, vous devez modifier les chemins d’accès.Important
N’oubliez pas de supprimer la clé de votre code une fois que vous avez terminé, et ne la postez jamais publiquement. Pour la production, utilisez un moyen sécurisé de stocker et d’accéder à vos informations d’identification comme Azure Key Vault. Pour plus d’informations, consultez l’article sur la sécurité d’Azure AI services.
Vérifier les résultats
La sortie de la console affiche la conversation complète et le résumé. Voici un exemple de résumé global, avec des corrections à des fins de concision :
Conversation summary:
issue: Customer wants to sign up for insurance.
resolution: Customer was advised that customer would be contacted by the insurance company.
Si vous spécifiez l’argument facultatif --output FILE
, une version JSON des résultats est écrite dans le fichier. La sortie du fichier est une combinaison des réponses JSON de la transcription par lot (Speech), des sentiments (Language) et des API de résumé des conversations (Language).
La propriété transcription
contient un objet JSON avec les résultats de l’analyse des sentiments fusionnés avec la transcription par lot. Voici un exemple, avec des corrections à des fins de concision :
{
"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 propriété conversationAnalyticsResults
contient un objet JSON avec les résultats de l’analyse des informations d’identification personnelle et du résumé des conversations. Voici un exemple, avec des corrections à des fins de concision :
{
"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": []
}
]
}
}
}
Utilisation et arguments
Utilisation : call-center -- [...]
Important
Vous pouvez utiliser une ressource multiservice ou des ressources Language et. Dans les deux cas, les valeurs --languageKey
et --languageEndpoint
doivent correspondre à une ressource qui se trouve dans l’une des régions prises en charge par l’API de résumé des conversations : eastus
, northeurope
et uksouth
.
Les options de connexion sont les suivantes :
--speechKey KEY
: clé de votre ressource Azure AI services ou Speech. Obligatoire pour les transcriptions audio avec l’option--input
à partir d’une URL.--speechRegion REGION
: région de votre ressource Azure AI services ou Speech. Obligatoire pour les transcriptions audio avec l’option--input
à partir d’une URL. Exemples :eastus
,northeurope
--languageKey KEY
: clé de votre ressource Azure AI services ou Language. Obligatoire.--languageEndpoint ENDPOINT
: clé de votre point de terminaison Azure AI services ou Language. Obligatoire. Exemple :https://YourResourceName.cognitiveservices.azure.com
Les options d’entrée sont les suivantes :
--input URL
: Audio d’entrée à partir d’une URL. Vous devez définir l’option--input
ou--jsonInput
.--jsonInput FILE
: Entrez un résultat JSON de transcription par lot existant à partir d’un FICHIER. Avec cette option, vous avez uniquement besoin d’une ressource Language pour traiter une transcription que vous avez déjà. Avec cette option, vous n’avez pas besoin d’un fichier audio ni d’une ressource Speech. Substitue--input
. Vous devez définir l’option--input
ou--jsonInput
.--stereo
:Indique que l’audio qui passe par l’URL d’entrée doit être au format stéréo. Si le format stéréo n’est pas spécifié, alors les fichiers sont supposés être des fichiers wav PCM mono 16 khz 16 bits. La diarisation des fichiers mono est utilisée pour séparer les multiples haut-parleurs. La diarisation des fichiers stéréo n’est pas prise en charge, car les fichiers stéréo bicanaux doivent déjà avoir un seul haut-parleur par canal.--certificate
: Fichier de certificat PEM. Obligatoire pour C++.
Les options de langue sont les suivantes :
--language LANGUAGE
: Langue à utiliser pour l’analyse des sentiments et l’analyse des conversations. Cette valeur doit être un code ISO 639-1 à deux lettres. La valeur par défaut esten
.--locale LOCALE
: Paramètres régionaux à utiliser pour la transcription par lot de l’audio. La valeur par défaut esten-US
.
Les options de sortie sont les suivantes :
--help
: Affichage de l’aide de l’utilisateur et de l’arrêt--output FILE
: Génère les résumés des transcriptions, des sentiments, des informations d’identification personnelle dans les conversations et des conversations au format JSON dans un fichier texte. Pour plus d’informations, consultez les exemples de sortie.
Nettoyer les ressources
Vous pouvez utiliser le Portail Azure ou l’interface CLI Azure pour supprimer la ressource Azure AI services que vous avez créée.