Partilhar via


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, northeuropee 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.

  1. 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
    
  2. Abra um prompt de comando e mude para o diretório do projeto.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Crie o projeto com a CLI do .NET.

    dotnet build
    
  4. 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, substitua YourResourceRegion pela região de recursos dos serviços de IA do Azure (como eastus) e substitua YourResourceEndpoint 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, northeuropee uksouth.

As opções de conexão incluem:

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.

Próximos passos