Udostępnij za pośrednictwem


Szybki start: transkrypcja i analiza po wywołaniu

Dokumentacja usługi językowej | Language Studio | Speech Service — dokumentacja | usługi Mowa Studio

W tym przewodniku Szybki start w języku C# przeprowadzisz analizę tonacji i podsumowanie konwersacji transkrypcji centrum telefonicznego. Przykład automatycznie zidentyfikuje, kategoryzuje i redaguje poufne informacje. Przewodnik Szybki start implementuje scenariusz między usługami, który korzysta z funkcji usług Azure Cognitive Speech i Azure Cognitive Language Services.

Napiwek

Wypróbuj program Language Studio lub Speech Studio, aby dowiedzieć się, jak używać usług Language and Speech do analizowania konwersacji w centrum połączeń.

Aby wdrożyć rozwiązanie transkrypcji centrum obsługi telefonicznej na platformie Azure z podejściem bez kodu, wypróbuj klienta pozyskiwania.

Następujące usługi Azure AI dla funkcji mowy są używane w przewodniku Szybki start:

  • Transkrypcja wsadowa: przesyłanie partii plików audio na potrzeby transkrypcji.
  • Separacja głośników: rozdziel wiele głośników przez diaryzacja mono 16khz 16-bitowych plików PCM wav.

Usługa language oferuje następujące funkcje, które są używane:

  • Wyodrębnianie i redagowanie informacji osobowych (PII): identyfikowanie, kategoryzowanie i redagowanie poufnych informacji w transkrypcji konwersacji.
  • Podsumowanie konwersacji: podsumuj w tekście abstrakcyjnym, co każdy uczestnik konwersacji powiedział o problemach i rozwiązaniach. Na przykład centrum telefoniczne może grupować problemy z produktami, które mają dużą ilość.
  • Analiza tonacji i wyszukiwania opinii: analizowanie transkrypcji i kojarzenie pozytywnych, neutralnych lub negatywnych tonacji na poziomie wypowiedzi i konwersacji.

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz bezpłatnie
  • Utwórz zasób z wieloma usługami w witrynie Azure Portal. Ten przewodnik Szybki start wymaga tylko jednego zasobu wielousługowego usług Azure AI. Przykładowy kod umożliwia określenie oddzielnych kluczy zasobów Language i Speech .
  • Pobierz klucz zasobu i region. Po wdrożeniu zasobu usług Azure AI wybierz pozycję Przejdź do zasobu , aby wyświetlić klucze i zarządzać nimi.

Ważne

Ten przewodnik Szybki start wymaga dostępu do podsumowania konwersacji. Aby uzyskać dostęp, musisz przesłać żądanie online i zatwierdzić je.

Wartości --languageKey i --languageEndpoint w tym przewodniku Szybki start muszą odpowiadać zasobowi, który znajduje się w jednym z regionów obsługiwanych przez interfejs API podsumowania konwersacji: eastus, northeuropei uksouth.

Uruchamianie analizy transkrypcji po wywołaniu za pomocą języka C#

Wykonaj następujące kroki, aby skompilować i uruchomić przykład kodu szybkiego startu analizy transkrypcji po wywołaniu.

  1. Skopiuj przykładowe pliki scenarios/csharp/dotnetcore/call-center/ z usługi GitHub. Jeśli masz zainstalowane narzędzie Git, otwórz wiersz polecenia i uruchom git clone polecenie , aby pobrać repozytorium przykładów zestawu Speech SDK.

    git clone https://github.com/Azure-Samples/cognitive-services-speech-sdk.git
    
  2. Otwórz wiersz polecenia i przejdź do katalogu projektu.

    cd <your-local-path>/scenarios/csharp/dotnetcore/call-center/call-center/
    
  3. Skompiluj projekt przy użyciu interfejsu wiersza polecenia platformy .NET.

    dotnet build
    
  4. Uruchom aplikację z preferowanymi argumentami wiersza polecenia. Zobacz użycie i argumenty dotyczące dostępnych opcji.

    Oto przykład transkrypcji z przykładowego pliku audio w usłudze 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
    

    Jeśli masz już transkrypcję danych wejściowych, oto przykład, który wymaga tylko zasobu języka:

    dotnet run --languageKey YourResourceKey --languageEndpoint YourResourceEndpoint --jsonInput "YourTranscriptionFile.json" --stereo  --output summary.json
    

    Zastąp YourResourceKey ciąg kluczem zasobu usług Azure AI, zastąp ciąg regionem zasobów usług Azure AI (takim jak eastus), a następnie zastąp YourResourceRegion YourResourceEndpoint ciąg punktem końcowym usług Azure AI. Upewnij się, że ścieżki określone przez --input i --output są prawidłowe. W przeciwnym razie należy zmienić ścieżki.

    Ważne

    Pamiętaj, aby usunąć klucz z kodu po zakończeniu i nigdy nie publikować go publicznie. W przypadku środowiska produkcyjnego użyj bezpiecznego sposobu przechowywania i uzyskiwania dostępu do poświadczeń, takich jak usługa Azure Key Vault. Aby uzyskać więcej informacji, zobacz artykuł Dotyczący zabezpieczeń usług Azure AI.

Sprawdzanie wyników

Dane wyjściowe konsoli zawierają pełną konwersację i podsumowanie. Oto przykład ogólnego podsumowania z przeredacjonowaniem w celu zwięzłości:

Conversation summary:
    issue: Customer wants to sign up for insurance.
    resolution: Customer was advised that customer would be contacted by the insurance company.

Jeśli określisz --output FILE opcjonalny argument, do pliku zostanie zapisana wersja JSON wyników. Dane wyjściowe pliku to kombinacja odpowiedzi JSON z interfejsów API transkrypcji wsadowej (mowa), tonacji (język) i podsumowania konwersacji (język).

Właściwość transcription zawiera obiekt JSON z wynikami analizy tonacji scalonej z transkrypcją wsadową. Oto przykład z redactions w celu zwięzłości:

{
    "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
}   

Właściwość conversationAnalyticsResults zawiera obiekt JSON z wynikami analizy podsumowania konwersacji i podsumowania konwersacji. Oto przykład z redactions w celu zwięzłości:

{
  "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": []
        }
      ]
    }
  }
}

Użycie i argumenty

Użycie: call-center -- [...]

Ważne

Możesz użyć zasobu z wieloma usługami lub oddzielnych zasobów języka i mowy . W obu przypadkach --languageKey wartości i --languageEndpoint muszą odpowiadać zasobowi, który znajduje się w jednym z regionów obsługiwanych przez interfejs API podsumowania konwersacji: eastus, northeuropei uksouth.

Opcje połączenia obejmują:

Opcje wejściowe obejmują:

  • --input URL: Wprowadź dźwięk z adresu URL. Musisz ustawić --input opcję lub --jsonInput .
  • --jsonInput FILE: Wprowadź istniejący wynik JSON transkrypcji wsadowej z pliku. W przypadku tej opcji wystarczy zasób language, aby przetworzyć już istniejącą transkrypcję. W przypadku tej opcji nie potrzebujesz pliku audio ani zasobu usługi Mowa. Zastępuje .--input Musisz ustawić --input opcję lub --jsonInput .
  • --stereo: wskazuje, że dźwięk za pośrednictwem adresu URL wejściowego "" powinien mieć format stereo. Jeśli nie określono stereo, zakłada się, że przyjmuje się pliki 16-bitowe PCM 16-bitowe. Diarization of mono files (Diarization of mono files) służy do oddzielania wielu głośników. Diarization plików stereo nie jest obsługiwane, ponieważ pliki stereo 2-kanałowe powinny już mieć jeden głośnik na kanał.
  • --certificate: plik certyfikatu PEM. Wymagane dla języka C++.

Opcje językowe obejmują:

  • --language LANGUAGE: język używany do analizy tonacji i analizy konwersacji. Ta wartość powinna być dwuliterowym kodem ISO 639-1. Domyślna wartość to en.
  • --locale LOCALE: ustawienia regionalne do użycia na potrzeby transkrypcji wsadowej dźwięku. Domyślna wartość to en-US.

Opcje danych wyjściowych obejmują:

  • --help: Pokaż pomoc użycia i zatrzymaj
  • --output FILE: wyprowadza transkrypcję, tonację, dane osobowe konwersacji i podsumowania konwersacji w formacie JSON do pliku tekstowego. Aby uzyskać więcej informacji, zobacz przykłady danych wyjściowych.

Czyszczenie zasobów

Aby usunąć utworzony zasób usług Azure AI, możesz użyć witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.

Następne kroki