Inicio rápido: análisis y transcripción posteriores a las llamadas
Documentación del servicio de lenguaje | Language Studio | Documentación del servicio voz | Speech Studio
En este inicio rápido C#, hará análisis de opinión y resumen de conversaciones de las transcripciones del centro de llamadas. En el ejemplo se identificará, clasificará y redactará automáticamente información confidencial. Mediante el inicio rápido se implementa un escenario entre servicios que usa características de los servicios de Azure Cognitive Speech y Azure Cognitive Language.
Sugerencia
Pruebe Language Studio o Speech Studio para ver una demostración de cómo usar los servicios Lenguaje y Voz para analizar las conversaciones del centro de llamadas.
Para implementar una solución de transcripción del centro de llamadas en Azure con un enfoque sin código, pruebe el cliente de ingesta.
En el inicio rápido se usan las siguientes características de servicios de Azure AI para Voz:
- Transcripción por lotes: envíe un lote de archivos de audio para transcribirlos.
- Separación de hablantes: separe varios hablantes por medio de la diarización de archivos WAV PCM de 16 bits 16khz mono.
El servicio de lenguaje ofrece las siguientes características empleadas:
- Extracción y censura de la información de identificación personal (PII): identifique, clasifique y censure la información confidencial en la transcripción de las conversaciones.
- Resumen de la conversación: resuma en texto abstracto lo que cada participante en la conversación dijo sobre los problemas y las soluciones. Por ejemplo, un centro de llamadas puede agrupar los problemas de los productos de gran volumen.
- Análisis de sentimiento y minería de opiniones: analice las transcripciones y asocie opiniones positivas, neutras o negativas a nivel de expresión y conversación.
Prerrequisitos
- Una suscripción a Azure: cree una cuenta gratuita
- Creación de un recurso de varios servicios en Azure Portal. Para este inicio rápido solo es necesario un recurso de varios servicios de servicios de Azure AI. Con el código de ejemplo puede especificar lenguaje y recursos de clave de voz.
- Obtenga la clave de recurso y la región. Una vez implementado el recurso de servicios de Azure AI, seleccione Ir al recurso para ver y administrar las claves.
Importante
Para este inicio rápido es necesario acceder al resumen de conversaciones. Para obtener acceso, debe enviar una solicitud en línea y recibir la aprobación.
Los valores --languageKey
y --languageEndpoint
de esta guía de inicio rápido se deben corresponder con un recurso que se encuentra en una de las regiones admitidas por la API de resumen de conversación: eastus
, northeurope
y uksouth
.
Ejecución del análisis de transcripción posterior a la llamada con C#
Complete los siguientes pasos para compilar y ejecutar un código de inicio rápido de análisis de transcripción posterior a la llamada de ejemplo.
Copie los archivos de ejemplo scenarios/csharp/dotnetcore/call-center/ de GitHub. Si tiene Git instalado, abra un símbolo del sistema y ejecute el comando
git clone
para descargar el repositorio de ejemplos del SDK de Voz.git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
Abra un símbolo del sistema y cambie al directorio del proyecto.
cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
Compile el proyecto con la CLI de .NET.
dotnet build
Ejecute la aplicación con los argumentos de la línea de comandos preferidos. Consulte uso y argumentos para ver las opciones disponibles.
Aquí puede ver un ejemplo en el que se transcribe a partir de un archivo de audio de ejemplo en 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 ya tiene una transcripción para la entrada, este es un ejemplo para el que solo se necesita un recurso de lenguaje:
dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --jsonInput "YourTranscriptionFile.json" --stereo --output summary.json
Sustituya
YourResourceKey
por la clave de recurso de servicios de Azure AI, reemplaceYourResourceRegion
con la región del recurso de servicios de Azure AI (por ejemplo,eastus
) y reemplaceYourResourceEndpoint
por el punto de conexión de servicios de Azure AI. Asegúrese de que las rutas de acceso especificadas por--input
y--output
sean válidas. De lo contrario, deberá cambiar las rutas de acceso.Importante
Recuerde quitar la clave del código cuando haya terminado y no hacerla nunca pública. En el caso de producción, use una forma segura de almacenar sus credenciales y acceder a ellas, como Azure Key Vault. Consulte el artículo Seguridad de servicios de Azure AI para obtener más información.
Comprobar los resultados
En la salida de la consola se muestra la conversación completa y el resumen. Aquí tiene un ejemplo del resumen general, con redacciones por razones de brevedad:
Conversation summary:
issue: Customer wants to sign up for insurance.
resolution: Customer was advised that customer would be contacted by the insurance company.
Si especifica el --output FILE
argumento opcional , una versión JSON de los resultados se escribe en el archivo. La salida del archivo es una combinación de las respuestas JSON de las API de transcripción por lotes (voz), sentimiento (lenguaje) y los resúmenes de conversación (lenguaje).
La propiedad transcription
contiene un objeto JSON con los resultados del análisis de sentimiento combinado con la transcripción por lotes. Este es un ejemplo, con redacciones por razones de brevedad:
{
"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 propiedad conversationAnalyticsResults
contiene un objeto JSON con los resultados del análisis de resumen de conversación e información de identificación personal de la conversación. Este es un ejemplo, con redacciones por razones de brevedad:
{
"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": []
}
]
}
}
}
Uso y argumentos
Uso: call-center -- [...]
Importante
Puede usar un recurso de varios servicios o un recurso independiente Lenguaje y Voz. En cualquier caso, los valores --languageKey
y --languageEndpoint
se deben corresponder con un recurso que se encuentra en una de las regiones admitidas por la API de resumen de conversación: eastus
, northeurope
y uksouth
.
Las opciones de conexión incluyen:
--speechKey KEY
: su clave de recurso servicios de Azure AI o Voz. Obligatorio en las transcripciones de audio con opción desde URL--input
.--speechRegion REGION
: su región de recurso servicios de Azure AI o Voz. Obligatorio en las transcripciones de audio con opción desde URL--input
. Ejemplos:eastus
,northeurope
--languageKey KEY
: su clave de recurso servicios de Azure AI o Lenguaje. Necesario.--languageEndpoint ENDPOINT
: su punto de conexión de recurso servicios de Azure AI o Lenguaje. Necesario. Ejemplo:https://YourResourceName.cognitiveservices.azure.com
Otras entradas incluyen:
--input URL
: audio de entrada de URL. Debe establecer una de las siguientes opciones:--input
o--jsonInput
.--jsonInput FILE
: escriba un resultado JSON de transcripción por lotes existente de FILE. Con esta opción, solo necesita un recurso de lenguaje para procesar una transcripción que tenga. Si recurre a esta opción, no es necesario un archivo de audio ni un recurso de voz. Invalida--input
. Debe establecer una de las siguientes opciones:--input
o--jsonInput
.--stereo
: indica que el audio por «dirección URL de entrada» debería estar en formato estéreo. Si estéreo no aparece especificado, se adoptan los archivos WAV de PCM mono de 16 khz de 16 bits. La diarización de archivos mono sirve para diferenciar varios hablantes. No se admite la diarización de archivos con formato estéreo, dado que los archivos estéreo de dos canales ya deben contar con un hablante por canal.--certificate
: el archivo de certificado PEM. Obligatorio para C++.
Entre las opciones de idioma se incluyen:
--language LANGUAGE
: el lenguaje empleado en el análisis de opiniones y el análisis de conversación. Este valor debe consistir en un código ISO 639-1 de dos letras. El valor predeterminado esen
.--locale LOCALE
: la configuración regional que se va a usar en la transcripción por lotes de audio. El valor predeterminado esen-US
.
Las opciones de entrada incluyen:
--help
: mostrar la ayuda de uso y parar--output FILE
: generar la transcripción, la opinión, la información de identificación personal en la conversación y resúmenes de conversación con formato JSON en un archivo de texto. Para obtener más información, consulte ejemplos de salida.
Limpieza de recursos
Puede usar Azure Portal o la Interfaz de la línea de comandos (CLI) de Azure para quitar el recurso de servicios de Azure AI que creó.