Szybki start: transkrypcja i analiza po wywołaniu

Dokumentacja usługi językowej | Language Studio | Dokumentacja | usługi MowaSpeech Studio

W tym przewodniku Szybki start w języku C# przeprowadzisz analizę tonacji i podsumowanie konwersacji transkrypcji centrum telefonicznego . Przykład automatycznie identyfikuje, 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.

Porada

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 połączeń na platformie Azure z podejściem bez kodu, wypróbuj klienta pozyskiwania.

W przewodniku Szybki start są używane następujące usługi azure AI dla funkcji rozpoznawania mowy:

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

Wymagania wstępne

  • Subskrypcja platformy Azure — utwórz jedną bezpłatnie
  • z wieloma usługami w Azure Portal. Ten przewodnik Szybki start wymaga tylko jednego zasobu usługi Azure AI z wieloma usługami. Przykładowy kod umożliwia określenie i .
  • 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. Aby uzyskać więcej informacji na temat zasobów usług Azure AI, zobacz Pobieranie kluczy dla zasobu.

Ważne

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

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 szybki start analizy transkrypcji po wywołaniu.

  1. Skopiuj scenariusze/csharp/dotnetcore/call-center/ przykładowe pliki z usługi GitHub. Jeśli masz zainstalowaną usługę 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 za pomocą interfejsu wiersza polecenia platformy .NET.

    dotnet build
    
  4. Uruchom aplikację z preferowanymi argumentami wiersza polecenia. Aby uzyskać dostępne opcje, zobacz użycie i argumenty .

    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 element YourResourceRegionregionem zasobów usług Azure AI (takim jak eastus), a następnie zastąp ciąg YourResourceEndpoint 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 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 funkcjami redactions dla 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 for brevity:

{
    "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 konwersacji. Oto przykład z redactions for brevity:

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

lub . 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ą:

  • --speechKey KEY: lub . Wymagane do transkrypcji audio z opcją --input z adresu URL.

  • --speechRegion REGION: lub w regionie. Wymagane do transkrypcji audio z opcją --input z adresu URL. Przykłady: eastus, northeurope

  • --languageKey KEY: lub . Wymagane.

  • --languageEndpoint ENDPOINT: lub utwórz punkt końcowy . Wymagane. Przykład: https://YourResourceName.cognitiveservices.azure.com

Opcje wejściowe obejmują:

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

Opcje języka obejmują:

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

Opcje danych wyjściowych obejmują:

  • --help: Pokaż pomoc dotyczącą 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ć Azure Portal interfejsu wiersza polecenia platformy Azure lub interfejsu wiersza polecenia platformy Azure.

Następne kroki