Guia de início rápido: transcrição e análise pós-chamada
Documentação | do serviço de idiomas Language Studio | Documentação | do serviço de fala Speech Studio
Neste início rápido em C#, você executa a análise de sentimento e o resumo de conversas das transcrições do call center . O exemplo identificará, categorizará e editará automaticamente informações confidenciais. O guia de início rápido implementa um cenário entre serviços que usa recursos dos serviços Azure Cognitive Speech e Azure Cognitive Language .
Gorjeta
Experimente o Language Studio ou o Speech Studio para obter uma demonstração sobre como usar os serviços de Linguagem e Fala para analisar conversas de call center.
Para implantar uma solução de transcrição de call center no Azure com uma abordagem sem código, experimente o Ingestion Client.
Os seguintes serviços de IA do Azure para recursos de fala são usados no início rápido:
- Transcrição em lote: envie um lote de arquivos de áudio para transcrição.
- Separação de alto-falantes: Separe vários alto-falantes através da diarização de arquivos wav PCM mono de 16khz de 16 bits.
O serviço de idiomas oferece os seguintes recursos que são usados:
- Extração e redação de Informações de Identificação Pessoal (PII): Identifique, categorize e retire informações confidenciais na transcrição da conversa.
- Resumo da conversa: Resumir em texto abstrato o que cada participante da conversa disse sobre os problemas e resoluções. Por exemplo, um call center pode agrupar problemas de produtos que têm um grande volume.
- Análise de sentimento e mineração de opinião: Analise transcrições e associe sentimentos positivos, neutros ou negativos no nível de enunciado e conversa.
Pré-requisitos
- Subscrição do Azure - Criar uma gratuitamente
- Crie um recurso multisserviço no portal do Azure. Este início rápido requer apenas um recurso multisserviço de serviços de IA do Azure. O código de exemplo permite especificar chaves de recurso de idioma e fala separadas.
- Obtenha a chave de recurso e a região. Depois que seu recurso de serviços de IA do Azure for implantado, selecione Ir para o recurso para exibir e gerenciar chaves.
Importante
Este guia de início rápido requer acesso ao resumo da conversa. Para ter acesso, é preciso enviar uma solicitação online e aprová-la.
Os --languageKey
valores e --languageEndpoint
neste início rápido devem corresponder a um recurso que esteja em uma das regiões suportadas pela API de resumo de conversação: eastus
, northeurope
e uksouth
.
Execute a análise de transcrição pós-chamada com C#
Siga estas etapas para criar e executar o exemplo de código de início rápido de análise de transcrição pós-chamada.
Copie os arquivos de exemplo scenarios/csharp/dotnetcore/call-center/ do GitHub. Se você tiver o Git instalado, abra um prompt de comando e execute o
git clone
comando para baixar o repositório de exemplos do Speech SDK.git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
Abra um prompt de comando e mude para o diretório do projeto.
cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
Crie o projeto com a CLI do .NET.
dotnet build
Execute o aplicativo com seus argumentos de linha de comando preferidos. Consulte o uso e os argumentos para as opções disponíveis.
Aqui está um exemplo que transcreve de um arquivo de áudio de exemplo no 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 você já tiver uma transcrição para entrada, aqui está um exemplo que requer apenas um recurso de idioma:
dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --jsonInput "YourTranscriptionFile.json" --stereo --output summary.json
Substitua
YourResourceKey
pela chave de recurso dos serviços de IA do Azure, substituaYourResourceRegion
pela região de recursos dos serviços de IA do Azure (comoeastus
) e substituaYourResourceEndpoint
pelo ponto de extremidade dos serviços de IA do Azure. Certifique-se de que os caminhos especificados por--input
e--output
são válidos. Caso contrário, você deve mudar os caminhos.Importante
Lembre-se de remover a chave do seu código quando terminar e nunca publicá-la publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo de segurança dos serviços de IA do Azure para obter mais informações.
Ver resultados
A saída do console mostra a conversa completa e o resumo. Aqui está um exemplo do resumo geral, com redações para brevidade:
Conversation summary:
issue: Customer wants to sign up for insurance.
resolution: Customer was advised that customer would be contacted by the insurance company.
Se você especificar o --output FILE
argumento opcional, uma versão JSON dos resultados será gravada no arquivo. A saída do arquivo é uma combinação das respostas JSON das APIs de transcrição em lote (Fala), sentimento (Idioma) e resumo de conversação (Idioma).
A transcription
propriedade contém um objeto JSON com os resultados da análise de sentimento mesclados com a transcrição em lote. Aqui está um exemplo, com redações para brevidade:
{
"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
}
A conversationAnalyticsResults
propriedade contém um objeto JSON com os resultados da PII da conversa e da análise de resumo da conversa. Aqui está um exemplo, com redações para brevidade:
{
"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 e argumentos
Utilização: call-center -- [...]
Importante
Você pode usar um recurso multisserviço ou recursos separados de Idioma e Fala . Em ambos os casos, os --languageKey
valores e --languageEndpoint
devem corresponder a um recurso que esteja em uma das regiões suportadas pela API de resumo de conversação: eastus
, northeurope
e uksouth
.
As opções de conexão incluem:
--speechKey KEY
: Os seus serviços de IA do Azure ou a chave de recurso de Voz . Necessário para transcrições de áudio com a--input
opção de URL de.--speechRegion REGION
: seus serviços de IA do Azure ou região de recurso de fala . Necessário para transcrições de áudio com a--input
opção de URL de. Exemplos:eastus
,northeurope
--languageKey KEY
: seus serviços de IA do Azure ou chave de recurso de idioma . Obrigatório.--languageEndpoint ENDPOINT
: seus serviços de IA do Azure ou ponto de extremidade de recurso de linguagem . Obrigatório. Exemplo:https://YourResourceName.cognitiveservices.azure.com
As opções de entrada incluem:
--input URL
: Entrada de áudio do URL. Você deve definir a--input
opção ou--jsonInput
.--jsonInput FILE
: Insira um resultado JSON de transcrição em lote existente de FILE. Com esta opção, você só precisa de um recurso de idioma para processar uma transcrição que você já tem. Com essa opção, você não precisa de um arquivo de áudio ou um recurso de fala. Substitui--input
. Você deve definir a--input
opção ou--jsonInput
.--stereo
: Indica que o áudio através de '''URL de entrada' deve estar em formato estéreo. Se estéreo não é especificado, então mono 16khz 16 bit PCM wav arquivos são assumidos. Diarização de arquivos mono é usado para separar vários alto-falantes. A diarização de arquivos estéreo não é suportada, uma vez que os arquivos estéreo de 2 canais já devem ter um alto-falante por canal.--certificate
: O arquivo de certificado PEM. Necessário para C++.
As opções linguísticas incluem:
--language LANGUAGE
: A linguagem a ser usada para análise de sentimento e análise de conversação. Este valor deve ser um código ISO 639-1 de duas letras. O valor predefinido éen
.--locale LOCALE
: A localidade a ser usada para transcrição em lote de áudio. O valor predefinido éen-US
.
As opções de saída incluem:
--help
: Mostrar a ajuda de uso e parar--output FILE
: Envie a transcrição, sentimento, PII de conversa e resumos de conversa em formato JSON para um arquivo de texto. Para obter mais informações, consulte exemplos de saída.
Clean up resources (Limpar recursos)
Você pode usar o portal do Azure ou a CLI (Interface de Linha de Comando) do Azure para remover o recurso de serviços de IA do Azure que você criou.