Início Rápido: transcrição e análise pós-chamada
Documentação do serviço de linguagem | 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 a sumarização de conversas das transcrições do call center. O exemplo identifica, categoriza e redige automaticamente as informações confidenciais. O início rápido implementa um cenário entre serviços que usa recursos do Serviço Cognitivo do Azure para Fala e do Serviço Cognitivo do Azure para Linguagem.
Dica
Experimente o Language Studio ou o Speech Studio para uma demonstração de como usar os serviços de Linguagem e Fala para analisar conversas do call center.
Para implantar uma solução de transcrição do call center no Azure com uma abordagem sem código, tente o Cliente de Ingestão.
Os seguintes recursos do serviços de IA do Azure para 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-falante: separe vários alto-falantes por meio da diarização de arquivos wav PCM mono de 16 bits e 16khz.
O serviço de Linguagem oferece os seguintes recursos que são usados:
- Extração e redação de PII (informações de identificação pessoal): identifique, categorize e redija informações confidenciais na transcrição de conversas.
- Resumo da conversa: resumir em texto abstrato o que cada participante da conversa disse sobre os problemas e as resoluções. Por exemplo, um call center pode agrupar problemas de produto que têm alto volume.
- Análise de sentimento e mineração de opiniões: analisar transcrições e associar sentimentos positivos, neutros ou negativos no âmbito da conversa e do enunciado.
Pré-requisitos
- Assinatura do Azure – Criar uma gratuitamente
- Criar um recurso de vários serviços no portal do Azure. Este início rápido exige apenas um recurso de vários serviços do serviços de IA do Azure. O código de exemplo permite que você especifique chaves de recurso separadas Linguagem e Fala.
- Obtenha a região e a chave de recurso. Depois que o recurso de serviços de IA do Azure for implantado, selecione Acessar recurso para ver e gerenciar as chaves.
Importante
Este início rápido exige acesso à sumarização de conversas. Para ter acesso, envie uma solicitação online e obtenha a aprovação.
Os valores --languageKey
e --languageEndpoint
neste início rápido devem corresponder a um recurso que está em uma das regiões compatíveis com a API de sumarização de conversas: eastus
, northeurope
e uksouth
.
Executar análise de transcrição pós-chamada com C#
Siga estas etapas para compilar e executar o exemplo de código de início rápido da análise de transcrição pós-chamada.
Copie os arquivos de exemplo scenarios/csharp/dotnetcore/captioning/ do GitHub. Se você tiver o Git instalado, abra um prompt de comando e execute o comando
git clone
para baixar o repositório de exemplos do SDK de Fala.git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
Abra um prompt de comando e altere 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 preferenciais. Confira o uso e os argumentos das 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, segue um exemplo que requer apenas um recurso de Linguagem:
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 do recurso dos serviços de IA do Azure (tal comoeastus
) e substituaYourResourceEndpoint
pelo ponto de extremidade dos serviços de IA do Azure. Verifique se os caminhos especificados por--input
e--output
são válidos. Caso contrário, altere os caminhos.Importante
Lembre-se de remover a chave do seu código quando terminar e nunca poste-a publicamente. Para produção, use uma maneira segura de armazenar e acessar suas credenciais, como o Azure Key Vault. Consulte o artigo sobre segurança do serviços de IA do Azure para obter mais informações.
Verificar os resultados
A saída do console mostra a conversa completa e o resumo. Aqui está um exemplo do resumo geral com redações para edição:
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 argumento opcional --output FILE
, uma versão JSON dos resultados será gravada no arquivo. A saída do arquivo é uma combinação das respostas JSON das APIs transcrição em lote (Fala), sentimento (Linguagem) e resumo de conversa (Linguagem).
A propriedade transcription
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 edição:
{
"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 propriedade conversationAnalyticsResults
contém um objeto JSON com os resultados da PII da conversa e da análise de sumarização de conversas. Aqui está um exemplo com redações para edição:
{
"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
Uso: call-center -- [...]
Importante
Você pode usar um recurso de vários serviços ou recursos separados Linguagem e Fala. Em qualquer caso, os valores --languageKey
e --languageEndpoint
neste início rápido devem corresponder a um recurso que está em uma das regiões compatíveis com a API de sumarização de conversas: eastus
, northeurope
e uksouth
.
As opções de conexão incluem:
--speechKey KEY
: Sua chave do recurso serviços de IA do Azure ou Fala. Necessária para transcrições de áudio com a opção--input
da URL.--speechRegion REGION
: Sua região do recurso serviços de IA do Azure ou Fala. Necessária para transcrições de áudio com a opção--input
da URL. Exemplos:eastus
,northeurope
--languageKey KEY
: Sua chave do recurso serviços de IA do Azure ou Linguagem. Obrigatórios.--languageEndpoint ENDPOINT
: Seu ponto de extremidade do recurso serviços de IA do Azure ou Linguagem. Obrigatórios. Exemplo:https://YourResourceName.cognitiveservices.azure.com
As opções de entrada incluem:
--input URL
: insere áudio da URL. Você deve definir a opção--input
ou--jsonInput
.--jsonInput FILE
: insere um resultado JSON da transcrição em lote existente do ARQUIVO. Com essa opção, você só precisa de um recurso de Linguagem para processar uma transcrição que você já tem. Com essa opção, você não precisa de um arquivo de áudio ou de um recurso de Fala. Substitui--input
. Você deve definir a opção--input
ou--jsonInput
.--stereo
: indica que o áudio por meio de ```URL de entrada` deve estar no formato estéreo. Se o formato estéreo não for especificado, os arquivos wav PCM mono de 16khz e 16 bits serão assumidos. A diarização de arquivos mono é usada para separar vários alto-falantes. Não há suporte para a diarização de arquivos estéreo, pois os arquivos estéreo de dois canais já devem ter um alto-falante por canal.--certificate
: o arquivo de certificado PEM. Necessário para C++.
As opções de idioma incluem:
--language LANGUAGE
: o idioma a ser usado para a análise de sentimento e a análise de conversa. Esse valor deve ser um código ISO 639-1 de duas letras. O valor padrão éen
.--locale LOCALE
: a localidade a ser usada para transcrição em lote de áudio. O valor padrão éen-US
.
As opções de saída incluem:
--help
: mostra a ajuda de uso e parada--output FILE
: gera os resumos de conversa, transcrição, sentimento e PII de conversa no formato JSON para um arquivo de texto. Para saber mais, confira exemplos de saída.
Limpar os recursos
Você pode usar o portal do Azure ou a CLI (Interface de Linha de Comando) do Azure para remover o recurso dos serviços de IA do Azure que você criou.