Teilen über


Schnellstart: Erstellen einer Diarisierung in Echtzeit

Referenzdokumentation | Paket (NuGet) | Zusätzliche Beispiele auf GitHub

In dieser Schnellstartanleitung führen Sie eine Anwendung für die Sprache-in-Text-Transkription mit Echtzeit-Diarisierung aus. Die Diarisierung unterscheidet zwischen den verschiedenen Sprechern, die an der Unterhaltung teilnehmen. Der Speech-Dienst stellt Informationen darüber bereit, welcher Sprecher einen bestimmten Teil der transkribierten Sprache sprach.

Die Sprecherinformationen sind im Ergebnis im Feld Sprecher-ID enthalten. Die Sprecher-ID ist ein generischer Bezeichner, der jedem Unterhaltungsteilnehmer vom Dienst während der Erkennung zugewiesen wird, wenn verschiedene Sprecher aus den bereitgestellten Audioinhalten identifiziert werden.

Tipp

Sie können Spracherkennung in Echtzeit in Speech Studio ausprobieren, ohne sich zu registrieren oder Code zu schreiben. Allerdings unterstützt Speech Studio noch keine Diarisierung.

Voraussetzungen

Einrichten der Umgebung

Das Speech SDK ist als NuGet-Paket verfügbar und implementiert .NET Standard 2.0. Sie installieren das Speech SDK im weiteren Verlauf dieses Leitfadens. Überprüfen Sie jedoch zunächst im SDK-Installationsleitfaden, ob weitere Anforderungen gelten.

Festlegen von Umgebungsvariablen

Sie müssen Ihre Anwendung authentifizieren, um auf Azure KI Services zuzugreifen. In diesem Artikel wird erläutert, wie Sie Umgebungsvariablen verwenden, um Ihre Anmeldeinformationen zu speichern. Anschließend können Sie von Ihrem Code aus auf die Umgebungsvariablen zugreifen, um Ihre Anwendung zu authentifizieren. Verwenden Sie in der Produktion eine sicherere Methode, Ihre Anmeldeinformationen zu speichern und darauf zuzugreifen.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

Um die Umgebungsvariable für Ihren Speech-Ressourcenschlüssel und die Region festzulegen, öffnen Sie ein Konsolenfenster, und befolgen Sie die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.

  • Zum Festlegen der Umgebungsvariablen SPEECH_KEY ersetzen Sie your-key durch einen der Schlüssel für Ihre Ressource.
  • Zum Festlegen der Umgebungsvariablen SPEECH_REGION ersetzen Sie your-region durch eine der Regionen für Ihre Ressource.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Hinweis

Wenn Sie nur in der aktuellen Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Variable mit set anstatt setx festlegen.

Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle Programme neu starten, die die Umgebungsvariablen lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, starten Sie Visual Studio neu, bevor Sie das Beispiel ausführen.

Implementieren Sie die Diarisierung aus der Datei mit Unterhaltungstranskription

Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung zu erstellen und das Speech SDK zu installieren.

  1. Öffnen Sie ein Eingabeaufforderungsfenster in dem Ordner, in dem das neue Projekt angezeigt werden soll. Führen Sie diesen Befehl aus, um eine Konsolenanwendung mit der .NET CLI zu erstellen.

    dotnet new console
    

    Mit diesem Befehl wird die Program.cs-Datei im Projektverzeichnis erstellt.

  2. Installieren Sie das Speech SDK mit der .NET-CLI in Ihrem neuen Projekt.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Ersetzen Sie den Inhalt von Program.cs durch den folgenden Code.

    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    using Microsoft.CognitiveServices.Speech.Transcription;
    
    class Program 
    {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        static string speechKey = Environment.GetEnvironmentVariable("SPEECH_KEY");
        static string speechRegion = Environment.GetEnvironmentVariable("SPEECH_REGION");
    
        async static Task Main(string[] args)
        {
            var filepath = "katiesteve.wav";
            var speechConfig = SpeechConfig.FromSubscription(speechKey, speechRegion);        
            speechConfig.SpeechRecognitionLanguage = "en-US";
            speechConfig.SetProperty(PropertyId.SpeechServiceResponse_DiarizeIntermediateResults, "true"); 
    
            var stopRecognition = new TaskCompletionSource<int>(TaskCreationOptions.RunContinuationsAsynchronously);
    
            // Create an audio stream from a wav file or from the default microphone
            using (var audioConfig = AudioConfig.FromWavFileInput(filepath))
            {
                // Create a conversation transcriber using audio stream input
                using (var conversationTranscriber = new ConversationTranscriber(speechConfig, audioConfig))
                {
                    conversationTranscriber.Transcribing += (s, e) =>
                    {
                        Console.WriteLine($"TRANSCRIBING: Text={e.Result.Text} Speaker ID={e.Result.SpeakerId}");
                    };
    
                    conversationTranscriber.Transcribed += (s, e) =>
                    {
                        if (e.Result.Reason == ResultReason.RecognizedSpeech)
                        {
                            Console.WriteLine();
                            Console.WriteLine($"TRANSCRIBED: Text={e.Result.Text} Speaker ID={e.Result.SpeakerId}");
                            Console.WriteLine();
                        }
                        else if (e.Result.Reason == ResultReason.NoMatch)
                        {
                            Console.WriteLine($"NOMATCH: Speech could not be transcribed.");
                        }
                    };
    
                    conversationTranscriber.Canceled += (s, e) =>
                    {
                        Console.WriteLine($"CANCELED: Reason={e.Reason}");
    
                        if (e.Reason == CancellationReason.Error)
                        {
                            Console.WriteLine($"CANCELED: ErrorCode={e.ErrorCode}");
                            Console.WriteLine($"CANCELED: ErrorDetails={e.ErrorDetails}");
                            Console.WriteLine($"CANCELED: Did you set the speech resource key and region values?");
                            stopRecognition.TrySetResult(0);
                        }
    
                        stopRecognition.TrySetResult(0);
                    };
    
                    conversationTranscriber.SessionStopped += (s, e) =>
                    {
                        Console.WriteLine("\n    Session stopped event.");
                        stopRecognition.TrySetResult(0);
                    };
    
                    await conversationTranscriber.StartTranscribingAsync();
    
                    // Waits for completion. Use Task.WaitAny to keep the task rooted.
                    Task.WaitAny(new[] { stopRecognition.Task });
    
                    await conversationTranscriber.StopTranscribingAsync();
                }
            }
        }
    }
    
  4. Rufen Sie die Beispielaudiodatei ab oder verwenden Sie Ihre eigene .wav-Datei. Ersetzen Sie katiesteve.wav durch den Pfad und den Namen Ihrer .wav-Datei.

    Die Anwendung erkennt die Sprache von mehreren Teilnehmern der Unterhaltung. Ihre Audiodatei sollte mehrere Sprecher enthalten.

  5. Um die Sprache für die Spracherkennung zu ändern, ersetzen Sie en-US durch eine andere en-US. Beispiel: es-ES für Spanisch (Spanien). Die Standardsprache ist en-US, wenn Sie keine Sprache angeben. Ausführliche Informationen zum Identifizieren einer von mehreren Sprachen, die gesprochen werden können, finden Sie unter Sprachenerkennung.

  6. Starten Sie Ihre Konsolenanwendung, um die Transkription der Unterhaltung zu beginnen:

    dotnet run
    

Wichtig

Stellen Sie sicher, dass Sie die Umgebungsvariablen SPEECH_KEY und SPEECH_REGION festlegen. Wenn Sie diese Variablen nicht festlegen, wird für das Beispiel eine Fehlermeldung ausgegeben.

Die transkribierte Unterhaltung sollte als Text ausgegeben werden:

TRANSCRIBING: Text=good morning steve Speaker ID=Unknown
TRANSCRIBING: Text=good morning steve how are Speaker ID=Guest-1
TRANSCRIBING: Text=good morning steve how are you doing today Speaker ID=Guest-1

TRANSCRIBED: Text=Good morning, Steve. How are you doing today? Speaker ID=Guest-1

TRANSCRIBING: Text=good morning katie Speaker ID=Unknown
TRANSCRIBING: Text=good morning katie i hope Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a great Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a great start to Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a great start to your day Speaker ID=Guest-2

TRANSCRIBED: Text=Good morning, Katie. I hope you're having a great start to your day. Speaker ID=Guest-2

TRANSCRIBING: Text=have you tried Speaker ID=Unknown
TRANSCRIBING: Text=have you tried the latest Speaker ID=Unknown
TRANSCRIBING: Text=have you tried the latest real time Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what in Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what in real time Speaker ID=Guest-1

TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1

TRANSCRIBING: Text=not yet Speaker ID=Unknown
TRANSCRIBING: Text=not yet i Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch trans Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization Speaker ID=Guest-2  
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization function Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produc Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces di Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature Speaker ID=Guest-2  
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to di Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real time Speaker ID=Guest-2

TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization results after the whole audio is processed. Is the new feature able to diarize in real time? Speaker ID=Guest-2

TRANSCRIBING: Text=absolutely Speaker ID=Unknown
TRANSCRIBING: Text=absolutely i Speaker ID=Unknown
TRANSCRIBING: Text=absolutely i recom Speaker ID=Guest-1
TRANSCRIBING: Text=absolutely i recommend Speaker ID=Guest-1
TRANSCRIBING: Text=absolutely i recommend you give it a try Speaker ID=Guest-1

TRANSCRIBED: Text=Absolutely, I recommend you give it a try. Speaker ID=Guest-1

TRANSCRIBING: Text=that's exc Speaker ID=Unknown
TRANSCRIBING: Text=that's exciting Speaker ID=Unknown
TRANSCRIBING: Text=that's exciting let me try Speaker ID=Guest-2
TRANSCRIBING: Text=that's exciting let me try it right now Speaker ID=Guest-2

TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=Guest-2

Redner werden je nach Anzahl der Redner in der Unterhaltung als Gast-1, Gast-2 usw. identifiziert.

Hinweis

Möglicherweise sehen Sie Speaker ID=Unknown in einigen der frühen Zwischenergebnisse, wenn der Sprecher noch nicht identifiziert wurde. Ohne zwischengeschaltete Diarisierungsergebnisse (wenn Sie die PropertyId.SpeechServiceResponse_DiarizeIntermediateResults-Eigenschaft nicht auf „wahr“ festlegen), ist die Sprecher-ID immer „Unbekannt“.

Bereinigen von Ressourcen

Sie können das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (CLI) verwenden, um die erstellte Speech-Ressource zu entfernen.

Referenzdokumentation | Paket (NuGet) | Zusätzliche Beispiele auf GitHub

In dieser Schnellstartanleitung führen Sie eine Anwendung für die Sprache-in-Text-Transkription mit Echtzeit-Diarisierung aus. Die Diarisierung unterscheidet zwischen den verschiedenen Sprechern, die an der Unterhaltung teilnehmen. Der Speech-Dienst stellt Informationen darüber bereit, welcher Sprecher einen bestimmten Teil der transkribierten Sprache sprach.

Die Sprecherinformationen sind im Ergebnis im Feld Sprecher-ID enthalten. Die Sprecher-ID ist ein generischer Bezeichner, der jedem Unterhaltungsteilnehmer vom Dienst während der Erkennung zugewiesen wird, wenn verschiedene Sprecher aus den bereitgestellten Audioinhalten identifiziert werden.

Tipp

Sie können Spracherkennung in Echtzeit in Speech Studio ausprobieren, ohne sich zu registrieren oder Code zu schreiben. Allerdings unterstützt Speech Studio noch keine Diarisierung.

Voraussetzungen

Einrichten der Umgebung

Das Speech SDK ist als NuGet-Paket verfügbar und implementiert .NET Standard 2.0. Sie installieren das Speech SDK im weiteren Verlauf dieses Leitfadens. Überprüfen Sie jedoch zunächst im SDK-Installationsleitfaden, ob weitere Anforderungen gelten.

Festlegen von Umgebungsvariablen

Sie müssen Ihre Anwendung authentifizieren, um auf Azure KI Services zuzugreifen. In diesem Artikel wird erläutert, wie Sie Umgebungsvariablen verwenden, um Ihre Anmeldeinformationen zu speichern. Anschließend können Sie von Ihrem Code aus auf die Umgebungsvariablen zugreifen, um Ihre Anwendung zu authentifizieren. Verwenden Sie in der Produktion eine sicherere Methode, Ihre Anmeldeinformationen zu speichern und darauf zuzugreifen.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

Um die Umgebungsvariable für Ihren Speech-Ressourcenschlüssel und die Region festzulegen, öffnen Sie ein Konsolenfenster, und befolgen Sie die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.

  • Zum Festlegen der Umgebungsvariablen SPEECH_KEY ersetzen Sie your-key durch einen der Schlüssel für Ihre Ressource.
  • Zum Festlegen der Umgebungsvariablen SPEECH_REGION ersetzen Sie your-region durch eine der Regionen für Ihre Ressource.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Hinweis

Wenn Sie nur in der aktuellen Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Variable mit set anstatt setx festlegen.

Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle Programme neu starten, die die Umgebungsvariablen lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, starten Sie Visual Studio neu, bevor Sie das Beispiel ausführen.

Implementieren Sie die Diarisierung aus der Datei mit Unterhaltungstranskription

Führen Sie die folgenden Schritte aus, um eine Konsolenanwendung zu erstellen und das Speech SDK zu installieren.

  1. Erstellen Sie in Visual Studio Community 2022 ein neues C++-Konsolenprojekt mit dem Namen ConversationTranscription.

  2. Klicken Sie auf Tools>NuGet-Paket-Manager>Paket-Manager-Konsole. Führen Sie diesen Befehl in der Paket-Manager-Konsole aus:

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. Ersetzen Sie den Inhalt von ConversationTranscription.cpp durch den folgenden Code.

    #include <iostream> 
    #include <stdlib.h>
    #include <speechapi_cxx.h>
    #include <future>
    
    using namespace Microsoft::CognitiveServices::Speech;
    using namespace Microsoft::CognitiveServices::Speech::Audio;
    using namespace Microsoft::CognitiveServices::Speech::Transcription;
    
    std::string GetEnvironmentVariable(const char* name);
    
    int main()
    {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        auto speechKey = GetEnvironmentVariable("SPEECH_KEY");
        auto speechRegion = GetEnvironmentVariable("SPEECH_REGION");
    
        if ((size(speechKey) == 0) || (size(speechRegion) == 0)) {
            std::cout << "Please set both SPEECH_KEY and SPEECH_REGION environment variables." << std::endl;
            return -1;
        }
    
        auto speechConfig = SpeechConfig::FromSubscription(speechKey, speechRegion);
        speechConfig->SetProperty(PropertyId::SpeechServiceResponse_DiarizeIntermediateResults, "true"); 
    
        speechConfig->SetSpeechRecognitionLanguage("en-US");
    
        auto audioConfig = AudioConfig::FromWavFileInput("katiesteve.wav");
        auto conversationTranscriber = ConversationTranscriber::FromConfig(speechConfig, audioConfig);
    
        // promise for synchronization of recognition end.
        std::promise<void> recognitionEnd;
    
        // Subscribes to events.
        conversationTranscriber->Transcribing.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                std::cout << "TRANSCRIBING:" << e.Result->Text << std::endl;
                std::cout << "Speaker ID=" << e.Result->SpeakerId << std::endl;
            });
    
        conversationTranscriber->Transcribed.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                if (e.Result->Reason == ResultReason::RecognizedSpeech)
                {
                    std::cout << "\n" << "TRANSCRIBED: Text=" << e.Result->Text << std::endl;
                    std::cout << "Speaker ID=" << e.Result->SpeakerId << "\n" << std::endl;
                }
                else if (e.Result->Reason == ResultReason::NoMatch)
                {
                    std::cout << "NOMATCH: Speech could not be transcribed." << std::endl;
                }
            });
    
        conversationTranscriber->Canceled.Connect([&recognitionEnd](const ConversationTranscriptionCanceledEventArgs& e)
            {
                auto cancellation = CancellationDetails::FromResult(e.Result);
                std::cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
                if (cancellation->Reason == CancellationReason::Error)
                {
                    std::cout << "CANCELED: ErrorCode=" << (int)cancellation->ErrorCode << std::endl;
                    std::cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                    std::cout << "CANCELED: Did you set the speech resource key and region values?" << std::endl;
                }
                else if (cancellation->Reason == CancellationReason::EndOfStream)
                {
                    std::cout << "CANCELED: Reach the end of the file." << std::endl;
                }
            });
    
        conversationTranscriber->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
            {
                std::cout << "Session stopped.";
                recognitionEnd.set_value(); // Notify to stop recognition.
            });
    
        conversationTranscriber->StartTranscribingAsync().wait();
    
        // Waits for recognition end.
        recognitionEnd.get_future().wait();
    
        conversationTranscriber->StopTranscribingAsync().wait();
    }
    
    std::string GetEnvironmentVariable(const char* name)
    {
    #if defined(_MSC_VER)
        size_t requiredSize = 0;
        (void)getenv_s(&requiredSize, nullptr, 0, name);
        if (requiredSize == 0)
        {
            return "";
        }
        auto buffer = std::make_unique<char[]>(requiredSize);
        (void)getenv_s(&requiredSize, buffer.get(), requiredSize, name);
        return buffer.get();
    #else
        auto value = getenv(name);
        return value ? value : "";
    #endif
    }
    
  4. Rufen Sie die Beispielaudiodatei ab oder verwenden Sie Ihre eigene .wav-Datei. Ersetzen Sie katiesteve.wav durch den Pfad und den Namen Ihrer .wav-Datei.

    Die Anwendung erkennt die Sprache von mehreren Teilnehmern der Unterhaltung. Ihre Audiodatei sollte mehrere Sprecher enthalten.

  5. Um die Sprache für die Spracherkennung zu ändern, ersetzen Sie en-US durch eine andere en-US. Beispiel: es-ES für Spanisch (Spanien). Die Standardsprache ist en-US, wenn Sie keine Sprache angeben. Ausführliche Informationen zum Identifizieren einer von mehreren Sprachen, die gesprochen werden können, finden Sie unter Sprachenerkennung.

  6. Zum Starten der Unterhaltungstranskription müssen Sie Ihre Anwendung erstellen und ausführen:

    Wichtig

    Stellen Sie sicher, dass Sie die Umgebungsvariablen SPEECH_KEY und SPEECH_REGION festlegen. Wenn Sie diese Variablen nicht festlegen, wird für das Beispiel eine Fehlermeldung ausgegeben.

Die transkribierte Unterhaltung sollte als Text ausgegeben werden:

TRANSCRIBING:good morning
Speaker ID=Unknown
TRANSCRIBING:good morning steve
Speaker ID=Unknown
TRANSCRIBING:good morning steve how are you doing
Speaker ID=Guest-1
TRANSCRIBING:good morning steve how are you doing today
Speaker ID=Guest-1

TRANSCRIBED: Text=Good morning, Steve. How are you doing today?
Speaker ID=Guest-1

TRANSCRIBING:good
Speaker ID=Unknown
TRANSCRIBING:good morning
Speaker ID=Unknown
TRANSCRIBING:good morning kat
Speaker ID=Unknown
TRANSCRIBING:good morning katie i hope you're having a
Speaker ID=Guest-2
TRANSCRIBING:good morning katie i hope you're having a great start to your day
Speaker ID=Guest-2

TRANSCRIBED: Text=Good morning, Katie. I hope you're having a great start to your day.
Speaker ID=Guest-2

TRANSCRIBING:have you
Speaker ID=Unknown
TRANSCRIBING:have you tried
Speaker ID=Unknown
TRANSCRIBING:have you tried the latest
Speaker ID=Unknown
TRANSCRIBING:have you tried the latest real
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which can
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which can tell you
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which can tell you who said
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which can tell you who said what
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which can tell you who said what in
Speaker ID=Guest-1
TRANSCRIBING:have you tried the latest real time diarization in microsoft speech service which can tell you who said what in real time
Speaker ID=Guest-1

TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time?
Speaker ID=Guest-1

TRANSCRIBING:not yet
Speaker ID=Unknown
TRANSCRIBING:not yet i
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch trans
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization function
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces di
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to di
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real
Speaker ID=Guest-2
TRANSCRIBING:not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real time
Speaker ID=Guest-2

TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization results after the whole audio is processed. Is the new feature able to diarize in real time?
Speaker ID=Guest-2

TRANSCRIBING:absolutely
Speaker ID=Unknown
TRANSCRIBING:absolutely i
Speaker ID=Unknown
TRANSCRIBING:absolutely i recom
Speaker ID=Guest-1
TRANSCRIBING:absolutely i recommend
Speaker ID=Guest-1
TRANSCRIBING:absolutely i recommend you
Speaker ID=Guest-1
TRANSCRIBING:absolutely i recommend you give it a try
Speaker ID=Guest-1

TRANSCRIBED: Text=Absolutely, I recommend you give it a try.
Speaker ID=Guest-1

TRANSCRIBING:that's exc
Speaker ID=Unknown
TRANSCRIBING:that's exciting
Speaker ID=Unknown
TRANSCRIBING:that's exciting let me
Speaker ID=Guest-2
TRANSCRIBING:that's exciting let me try
Speaker ID=Guest-2
TRANSCRIBING:that's exciting let me try it right now
Speaker ID=Guest-2

TRANSCRIBED: Text=That's exciting. Let me try it right now.
Speaker ID=Guest-2

Redner werden je nach Anzahl der Redner in der Unterhaltung als Gast-1, Gast-2 usw. identifiziert.

Hinweis

Möglicherweise sehen Sie Speaker ID=Unknown in einigen der frühen Zwischenergebnisse, wenn der Sprecher noch nicht identifiziert wurde. Ohne zwischengeschaltete Diarisierungsergebnisse (wenn Sie die PropertyId::SpeechServiceResponse_DiarizeIntermediateResults-Eigenschaft nicht auf „wahr“ festlegen), ist die Sprecher-ID immer „Unbekannt“.

Bereinigen von Ressourcen

Sie können das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (CLI) verwenden, um die erstellte Speech-Ressource zu entfernen.

Referenzdokumentation | Paket (Go) | Zusätzliche Beispiele auf GitHub

Das Speech-SDK für die Go-Programmiersprache unterstützt keine Unterhaltungstranskriptionen. Wählen Sie eine andere Programmiersprache aus, oder verwenden Sie die Go-Referenz und -Beispiele unter dem entsprechenden Link am Anfang dieses Artikels.

Referenzdokumentation | Zusätzliche Beispiele auf GitHub

In dieser Schnellstartanleitung führen Sie eine Anwendung für die Sprache-in-Text-Transkription mit Echtzeit-Diarisierung aus. Die Diarisierung unterscheidet zwischen den verschiedenen Sprechern, die an der Unterhaltung teilnehmen. Der Speech-Dienst stellt Informationen darüber bereit, welcher Sprecher einen bestimmten Teil der transkribierten Sprache sprach.

Die Sprecherinformationen sind im Ergebnis im Feld Sprecher-ID enthalten. Die Sprecher-ID ist ein generischer Bezeichner, der jedem Unterhaltungsteilnehmer vom Dienst während der Erkennung zugewiesen wird, wenn verschiedene Sprecher aus den bereitgestellten Audioinhalten identifiziert werden.

Tipp

Sie können Spracherkennung in Echtzeit in Speech Studio ausprobieren, ohne sich zu registrieren oder Code zu schreiben. Allerdings unterstützt Speech Studio noch keine Diarisierung.

Voraussetzungen

Einrichten der Umgebung

Um Ihre Umgebung einzurichten, installieren Sie das Speech SDK. Das Beispiel in diesem Schnellstart funktioniert mit der Java-Runtime.

  1. Installieren Sie Apache Maven. Führen Sie dann mvn -v aus, um die erfolgreiche Installation zu bestätigen.

  2. Erstellen Sie im Stammverzeichnis Ihres Projekts eine neue Datei pom.xml und kopieren Sie Folgendes hinein:

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>com.microsoft.cognitiveservices.speech.samples</groupId>
        <artifactId>quickstart-eclipse</artifactId>
        <version>1.0.0-SNAPSHOT</version>
        <build>
            <sourceDirectory>src</sourceDirectory>
            <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.7.0</version>
                <configuration>
                <source>1.8</source>
                <target>1.8</target>
                </configuration>
            </plugin>
            </plugins>
        </build>
        <dependencies>
            <dependency>
            <groupId>com.microsoft.cognitiveservices.speech</groupId>
            <artifactId>client-sdk</artifactId>
            <version>1.40.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. Installieren Sie das Speech SDK und Abhängigkeiten.

    mvn clean dependency:copy-dependencies
    

Festlegen von Umgebungsvariablen

Sie müssen Ihre Anwendung authentifizieren, um auf Azure KI Services zuzugreifen. In diesem Artikel wird erläutert, wie Sie Umgebungsvariablen verwenden, um Ihre Anmeldeinformationen zu speichern. Anschließend können Sie von Ihrem Code aus auf die Umgebungsvariablen zugreifen, um Ihre Anwendung zu authentifizieren. Verwenden Sie in der Produktion eine sicherere Methode, Ihre Anmeldeinformationen zu speichern und darauf zuzugreifen.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

Um die Umgebungsvariable für Ihren Speech-Ressourcenschlüssel und die Region festzulegen, öffnen Sie ein Konsolenfenster, und befolgen Sie die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.

  • Zum Festlegen der Umgebungsvariablen SPEECH_KEY ersetzen Sie your-key durch einen der Schlüssel für Ihre Ressource.
  • Zum Festlegen der Umgebungsvariablen SPEECH_REGION ersetzen Sie your-region durch eine der Regionen für Ihre Ressource.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Hinweis

Wenn Sie nur in der aktuellen Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Variable mit set anstatt setx festlegen.

Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle Programme neu starten, die die Umgebungsvariablen lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, starten Sie Visual Studio neu, bevor Sie das Beispiel ausführen.

Implementieren Sie die Diarisierung aus der Datei mit Unterhaltungstranskription

Folgen Sie diesen Schritten, um eine Konsolenanwendung für die Transkription von Gesprächen zu erstellen.

  1. Erstellen Sie eine neue Datei namens ConversationTranscription.java im gleichen Projektstammverzeichnis.

  2. Kopieren Sie den folgenden Code in ConversationTranscription.java:

    import com.microsoft.cognitiveservices.speech.*;
    import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
    import com.microsoft.cognitiveservices.speech.transcription.*;
    
    import java.util.concurrent.Semaphore;
    import java.util.concurrent.ExecutionException;
    import java.util.concurrent.Future;
    
    public class ConversationTranscription {
        // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        private static String speechKey = System.getenv("SPEECH_KEY");
        private static String speechRegion = System.getenv("SPEECH_REGION");
    
        public static void main(String[] args) throws InterruptedException, ExecutionException {
    
            SpeechConfig speechConfig = SpeechConfig.fromSubscription(speechKey, speechRegion);
            speechConfig.setSpeechRecognitionLanguage("en-US");
            AudioConfig audioInput = AudioConfig.fromWavFileInput("katiesteve.wav");
            speechConfig.setProperty(PropertyId.SpeechServiceResponse_DiarizeIntermediateResults, "true");
    
            Semaphore stopRecognitionSemaphore = new Semaphore(0);
    
            ConversationTranscriber conversationTranscriber = new ConversationTranscriber(speechConfig, audioInput);
            {
                // Subscribes to events.
                conversationTranscriber.transcribing.addEventListener((s, e) -> {
                    System.out.println("TRANSCRIBING: Text=" + e.getResult().getText() + " Speaker ID=" + e.getResult().getSpeakerId() );
                });
    
                conversationTranscriber.transcribed.addEventListener((s, e) -> {
                    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
                        System.out.println();
                        System.out.println("TRANSCRIBED: Text=" + e.getResult().getText() + " Speaker ID=" + e.getResult().getSpeakerId() );
                        System.out.println();
                    }
                    else if (e.getResult().getReason() == ResultReason.NoMatch) {
                        System.out.println("NOMATCH: Speech could not be transcribed.");
                    }
                });
    
                conversationTranscriber.canceled.addEventListener((s, e) -> {
                    System.out.println("CANCELED: Reason=" + e.getReason());
    
                    if (e.getReason() == CancellationReason.Error) {
                        System.out.println("CANCELED: ErrorCode=" + e.getErrorCode());
                        System.out.println("CANCELED: ErrorDetails=" + e.getErrorDetails());
                        System.out.println("CANCELED: Did you update the subscription info?");
                    }
    
                    stopRecognitionSemaphore.release();
                });
    
                conversationTranscriber.sessionStarted.addEventListener((s, e) -> {
                    System.out.println("\n    Session started event.");
                });
    
                conversationTranscriber.sessionStopped.addEventListener((s, e) -> {
                    System.out.println("\n    Session stopped event.");
                });
    
                conversationTranscriber.startTranscribingAsync().get();
    
                // Waits for completion.
                stopRecognitionSemaphore.acquire();
    
                conversationTranscriber.stopTranscribingAsync().get();
            }
    
            speechConfig.close();
            audioInput.close();
            conversationTranscriber.close();
    
            System.exit(0);
        }
    }
    
  3. Rufen Sie die Beispielaudiodatei ab oder verwenden Sie Ihre eigene .wav-Datei. Ersetzen Sie katiesteve.wav durch den Pfad und den Namen Ihrer .wav-Datei.

    Die Anwendung erkennt die Sprache von mehreren Teilnehmern der Unterhaltung. Ihre Audiodatei sollte mehrere Sprecher enthalten.

  4. Um die Sprache für die Spracherkennung zu ändern, ersetzen Sie en-US durch eine andere en-US. Beispiel: es-ES für Spanisch (Spanien). Die Standardsprache ist en-US, wenn Sie keine Sprache angeben. Ausführliche Informationen zum Identifizieren einer von mehreren Sprachen, die gesprochen werden können, finden Sie unter Sprachenerkennung.

  5. Führen Sie Ihre neue Konsolenanwendung aus, um die Unterhaltungstranskription zu starten:

    javac ConversationTranscription.java -cp ".;target\dependency\*"
    java -cp ".;target\dependency\*" ConversationTranscription
    

Wichtig

Stellen Sie sicher, dass Sie die Umgebungsvariablen SPEECH_KEY und SPEECH_REGION festlegen. Wenn Sie diese Variablen nicht festlegen, wird für das Beispiel eine Fehlermeldung ausgegeben.

Die transkribierte Unterhaltung sollte als Text ausgegeben werden:

TRANSCRIBING: Text=good morning Speaker ID=Unknown
TRANSCRIBING: Text=good morning steve Speaker ID=Unknown
TRANSCRIBING: Text=good morning steve how Speaker ID=Guest-1
TRANSCRIBING: Text=good morning steve how are you doing Speaker ID=Guest-1
TRANSCRIBING: Text=good morning steve how are you doing today Speaker ID=Guest-1

TRANSCRIBED: Text=Good morning, Steve. How are you doing today? Speaker ID=Guest-1

TRANSCRIBING: Text=good morning katie i hope Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a great Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a great start to Speaker ID=Guest-2
TRANSCRIBING: Text=good morning katie i hope you're having a great start to your day Speaker ID=Guest-2

TRANSCRIBED: Text=Good morning, Katie. I hope you're having a great start to your day. Speaker ID=Guest-2

TRANSCRIBING: Text=have you tried Speaker ID=Unknown
TRANSCRIBING: Text=have you tried the latest Speaker ID=Unknown
TRANSCRIBING: Text=have you tried the latest real Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what in Speaker ID=Guest-1
TRANSCRIBING: Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what in real time Speaker ID=Guest-1

TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1

TRANSCRIBING: Text=not yet Speaker ID=Unknown
TRANSCRIBING: Text=not yet i Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch trans Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization function Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces di Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to di Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real Speaker ID=Guest-2
TRANSCRIBING: Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real time Speaker ID=Guest-2

TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization results after the whole audio is processed. Is the new feature able to diarize in real time? Speaker ID=Guest-2

TRANSCRIBING: Text=absolutely Speaker ID=Unknown
TRANSCRIBING: Text=absolutely i recom Speaker ID=Guest-1
TRANSCRIBING: Text=absolutely i recommend Speaker ID=Guest-1
TRANSCRIBING: Text=absolutely i recommend you Speaker ID=Guest-1
TRANSCRIBING: Text=absolutely i recommend you give it a try Speaker ID=Guest-1

TRANSCRIBED: Text=Absolutely, I recommend you give it a try. Speaker ID=Guest-1

TRANSCRIBING: Text=that's exc Speaker ID=Unknown
TRANSCRIBING: Text=that's exciting Speaker ID=Unknown
TRANSCRIBING: Text=that's exciting let me try Speaker ID=Guest-2
TRANSCRIBING: Text=that's exciting let me try it right now Speaker ID=Guest-2

TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=Guest-2

Redner werden je nach Anzahl der Redner in der Unterhaltung als Gast-1, Gast-2 usw. identifiziert.

Hinweis

Möglicherweise sehen Sie Speaker ID=Unknown in einigen der frühen Zwischenergebnisse, wenn der Sprecher noch nicht identifiziert wurde. Ohne zwischengeschaltete Diarisierungsergebnisse (wenn Sie die PropertyId.SpeechServiceResponse_DiarizeIntermediateResults-Eigenschaft nicht auf „wahr“ festlegen), ist die Sprecher-ID immer „Unbekannt“.

Bereinigen von Ressourcen

Sie können das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (CLI) verwenden, um die erstellte Speech-Ressource zu entfernen.

Referenzdokumentation | Paket (npm) | Zusätzliche Beispiele auf GitHub | Quellcode der Bibliothek

In dieser Schnellstartanleitung führen Sie eine Anwendung für die Sprache-in-Text-Transkription mit Echtzeit-Diarisierung aus. Die Diarisierung unterscheidet zwischen den verschiedenen Sprechern, die an der Unterhaltung teilnehmen. Der Speech-Dienst stellt Informationen darüber bereit, welcher Sprecher einen bestimmten Teil der transkribierten Sprache sprach.

Die Sprecherinformationen sind im Ergebnis im Feld Sprecher-ID enthalten. Die Sprecher-ID ist ein generischer Bezeichner, der jedem Unterhaltungsteilnehmer vom Dienst während der Erkennung zugewiesen wird, wenn verschiedene Sprecher aus den bereitgestellten Audioinhalten identifiziert werden.

Tipp

Sie können Spracherkennung in Echtzeit in Speech Studio ausprobieren, ohne sich zu registrieren oder Code zu schreiben. Allerdings unterstützt Speech Studio noch keine Diarisierung.

Voraussetzungen

Einrichten der Umgebung

Um Ihre Umgebung einzurichten, installieren Sie das Speech SDK für JavaScript. Falls Sie lediglich den Paketnamen für die Installation benötigen, können Sie den folgenden Befehl ausführen: npm install microsoft-cognitiveservices-speech-sdk. Anweisungen zu einer geführten Installation finden Sie im SDK-Installationsleitfaden.

Festlegen von Umgebungsvariablen

Sie müssen Ihre Anwendung authentifizieren, um auf Azure KI Services zuzugreifen. In diesem Artikel wird erläutert, wie Sie Umgebungsvariablen verwenden, um Ihre Anmeldeinformationen zu speichern. Anschließend können Sie von Ihrem Code aus auf die Umgebungsvariablen zugreifen, um Ihre Anwendung zu authentifizieren. Verwenden Sie in der Produktion eine sicherere Methode, Ihre Anmeldeinformationen zu speichern und darauf zuzugreifen.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

Um die Umgebungsvariable für Ihren Speech-Ressourcenschlüssel und die Region festzulegen, öffnen Sie ein Konsolenfenster, und befolgen Sie die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.

  • Zum Festlegen der Umgebungsvariablen SPEECH_KEY ersetzen Sie your-key durch einen der Schlüssel für Ihre Ressource.
  • Zum Festlegen der Umgebungsvariablen SPEECH_REGION ersetzen Sie your-region durch eine der Regionen für Ihre Ressource.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Hinweis

Wenn Sie nur in der aktuellen Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Variable mit set anstatt setx festlegen.

Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle Programme neu starten, die die Umgebungsvariablen lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, starten Sie Visual Studio neu, bevor Sie das Beispiel ausführen.

Implementieren Sie die Diarisierung aus der Datei mit Unterhaltungstranskription

Führen Sie die folgenden Schritte aus, um eine neue Konsolenanwendung für die Unterhaltungstranskription zu erstellen.

  1. Öffnen Sie ein Eingabeaufforderungsfenster, in dem Sie das neue Projekt anlegen möchten, und erstellen Sie eine neue Datei mit dem Namen ConversationTranscription.js.

  2. Installieren Sie das Speech SDK für JavaScript:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. Kopieren Sie den folgenden Code in ConversationTranscription.js:

    const fs = require("fs");
    const sdk = require("microsoft-cognitiveservices-speech-sdk");
    
    // This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
    const speechConfig = sdk.SpeechConfig.fromSubscription(process.env.SPEECH_KEY, process.env.SPEECH_REGION);
    
    function fromFile() {
        const filename = "katiesteve.wav";
    
        let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync(filename));
        let conversationTranscriber = new sdk.ConversationTranscriber(speechConfig, audioConfig);
    
        var pushStream = sdk.AudioInputStream.createPushStream();
    
        fs.createReadStream(filename).on('data', function(arrayBuffer) {
            pushStream.write(arrayBuffer.slice());
        }).on('end', function() {
            pushStream.close();
        });
    
        console.log("Transcribing from: " + filename);
    
        conversationTranscriber.sessionStarted = function(s, e) {
            console.log("SessionStarted event");
            console.log("SessionId:" + e.sessionId);
        };
        conversationTranscriber.sessionStopped = function(s, e) {
            console.log("SessionStopped event");
            console.log("SessionId:" + e.sessionId);
            conversationTranscriber.stopTranscribingAsync();
        };
        conversationTranscriber.canceled = function(s, e) {
            console.log("Canceled event");
            console.log(e.errorDetails);
            conversationTranscriber.stopTranscribingAsync();
        };
        conversationTranscriber.transcribed = function(s, e) {
            console.log("TRANSCRIBED: Text=" + e.result.text + " Speaker ID=" + e.result.speakerId);
        };
    
        // Start conversation transcription
        conversationTranscriber.startTranscribingAsync(
            function () {},
            function (err) {
                console.trace("err - starting transcription: " + err);
            }
        );
    
    }
    fromFile();
    
  4. Rufen Sie die Beispielaudiodatei ab oder verwenden Sie Ihre eigene .wav-Datei. Ersetzen Sie katiesteve.wav durch den Pfad und den Namen Ihrer .wav-Datei.

    Die Anwendung erkennt die Sprache von mehreren Teilnehmern der Unterhaltung. Ihre Audiodatei sollte mehrere Sprecher enthalten.

  5. Um die Sprache für die Spracherkennung zu ändern, ersetzen Sie en-US durch eine andere en-US. Beispiel: es-ES für Spanisch (Spanien). Die Standardsprache ist en-US, wenn Sie keine Sprache angeben. Ausführliche Informationen zum Identifizieren einer von mehreren Sprachen, die gesprochen werden können, finden Sie unter Sprachenerkennung.

  6. Führen Sie die neue Konsolenanwendung aus, um die Spracherkennung aus einer Datei zu starten:

    node.exe ConversationTranscription.js
    

Wichtig

Stellen Sie sicher, dass Sie die Umgebungsvariablen SPEECH_KEY und SPEECH_REGION festlegen. Wenn Sie diese Variablen nicht festlegen, wird für das Beispiel eine Fehlermeldung ausgegeben.

Die transkribierte Unterhaltung sollte als Text ausgegeben werden:

SessionStarted event
SessionId:E87AFBA483C2481985F6C9AF719F616B
TRANSCRIBED: Text=Good morning, Steve. Speaker ID=Unknown
TRANSCRIBED: Text=Good morning, Katie. Speaker ID=Unknown
TRANSCRIBED: Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time? Speaker ID=Guest-1
TRANSCRIBED: Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization result until whole audio get processed. Speaker ID=Guest-2
TRANSCRIBED: Text=Is the new feature can diarize in real time? Speaker ID=Guest-2
TRANSCRIBED: Text=Absolutely. Speaker ID=Guest-1
TRANSCRIBED: Text=That's exciting. Let me try it right now. Speaker ID=Guest-2
Canceled event
undefined
SessionStopped event
SessionId:E87AFBA483C2481985F6C9AF719F616B

Redner werden je nach Anzahl der Redner in der Unterhaltung als Gast-1, Gast-2 usw. identifiziert.

Bereinigen von Ressourcen

Sie können das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (CLI) verwenden, um die erstellte Speech-Ressource zu entfernen.

Referenzdokumentation | Paket (Download) | Zusätzliche Beispiele auf GitHub

Das Speech SDK für Objective-C unterstützt die Unterhaltungstranskription, es wurde hier jedoch noch kein Leitfaden bereitgestellt. Wählen Sie eine andere Programmiersprache aus, um loszulegen und sich über die Konzepte zu informieren, oder verwenden Sie die Objective-C-Referenz und -Beispiele unter dem entsprechenden Link am Anfang dieses Artikels.

Referenzdokumentation | Paket (Download) | Zusätzliche Beispiele auf GitHub

Das Speech SDK für Swift unterstützt die Unterhaltungstranskription, es wurde hier jedoch noch kein Leitfaden bereitgestellt. Wählen Sie eine andere Programmiersprache aus, um loszulegen und sich über die Konzepte zu informieren, oder verwenden Sie die Swift-Referenz und -Beispiele unter dem entsprechenden Link am Anfang dieses Artikels.

Referenzdokumentation | Paket (PyPi) | Zusätzliche Beispiele auf GitHub

In dieser Schnellstartanleitung führen Sie eine Anwendung für die Sprache-in-Text-Transkription mit Echtzeit-Diarisierung aus. Die Diarisierung unterscheidet zwischen den verschiedenen Sprechern, die an der Unterhaltung teilnehmen. Der Speech-Dienst stellt Informationen darüber bereit, welcher Sprecher einen bestimmten Teil der transkribierten Sprache sprach.

Die Sprecherinformationen sind im Ergebnis im Feld Sprecher-ID enthalten. Die Sprecher-ID ist ein generischer Bezeichner, der jedem Unterhaltungsteilnehmer vom Dienst während der Erkennung zugewiesen wird, wenn verschiedene Sprecher aus den bereitgestellten Audioinhalten identifiziert werden.

Tipp

Sie können Spracherkennung in Echtzeit in Speech Studio ausprobieren, ohne sich zu registrieren oder Code zu schreiben. Allerdings unterstützt Speech Studio noch keine Diarisierung.

Voraussetzungen

Einrichten der Umgebung

Das Speech SDK für Python ist als PyPI-Modul (Python Package Index) verfügbar. Das Speech SDK für Python ist mit Windows, Linux und macOS kompatibel.

Installieren Sie eine Python-Version ab 3.7. Prüfen Sie im SDK-Installationshandbuch zunächst, ob weitere Anforderungen gelten.

Festlegen von Umgebungsvariablen

Sie müssen Ihre Anwendung authentifizieren, um auf Azure KI Services zuzugreifen. In diesem Artikel wird erläutert, wie Sie Umgebungsvariablen verwenden, um Ihre Anmeldeinformationen zu speichern. Anschließend können Sie von Ihrem Code aus auf die Umgebungsvariablen zugreifen, um Ihre Anwendung zu authentifizieren. Verwenden Sie in der Produktion eine sicherere Methode, Ihre Anmeldeinformationen zu speichern und darauf zuzugreifen.

Wichtig

Es wird empfohlen, die Microsoft Entra ID-Authentifizierung mit verwalteten Identitäten für Azure-Ressourcen zu kombinieren, um das Speichern von Anmeldeinformationen mit den in der Cloud ausgeführten Anwendungen zu vermeiden.

Wenn Sie einen API-Schlüssel verwenden, speichern Sie ihn an einer anderen Stelle sicher, z. B. in Azure Key Vault. Fügen Sie den API-Schlüssel nicht direkt in Ihren Code ein, und machen Sie ihn nicht öffentlich zugänglich.

Weitere Informationen zur Sicherheit von KI Services finden Sie unter Authentifizieren von Anforderungen an Azure KI Services.

Um die Umgebungsvariable für Ihren Speech-Ressourcenschlüssel und die Region festzulegen, öffnen Sie ein Konsolenfenster, und befolgen Sie die Anweisungen für Ihr Betriebssystem und Ihre Entwicklungsumgebung.

  • Zum Festlegen der Umgebungsvariablen SPEECH_KEY ersetzen Sie your-key durch einen der Schlüssel für Ihre Ressource.
  • Zum Festlegen der Umgebungsvariablen SPEECH_REGION ersetzen Sie your-region durch eine der Regionen für Ihre Ressource.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Hinweis

Wenn Sie nur in der aktuellen Konsole auf die Umgebungsvariable zugreifen müssen, können Sie die Variable mit set anstatt setx festlegen.

Nachdem Sie die Umgebungsvariablen hinzugefügt haben, müssen Sie möglicherweise alle Programme neu starten, die die Umgebungsvariablen lesen müssen, einschließlich des Konsolenfensters. Wenn Sie beispielsweise Visual Studio als Editor verwenden, starten Sie Visual Studio neu, bevor Sie das Beispiel ausführen.

Implementieren Sie die Diarisierung aus der Datei mit Unterhaltungstranskription

Führen Sie die folgenden Schritte aus, um eine neue Konsolenanwendung zu erstellen.

  1. Öffnen Sie ein Eingabeaufforderungsfenster, in dem Sie das neue Projekt anlegen möchten, und erstellen Sie eine neue Datei mit dem Namen conversation_transcription.py.

  2. Führen Sie diesen Befehl aus, um das Speech SDK zu installieren:

    pip install azure-cognitiveservices-speech
    
  3. Kopieren Sie den folgenden Code in conversation_transcription.py:

    import os
    import time
    import azure.cognitiveservices.speech as speechsdk
    
    def conversation_transcriber_recognition_canceled_cb(evt: speechsdk.SessionEventArgs):
        print('Canceled event')
    
    def conversation_transcriber_session_stopped_cb(evt: speechsdk.SessionEventArgs):
        print('SessionStopped event')
    
    def conversation_transcriber_transcribed_cb(evt: speechsdk.SpeechRecognitionEventArgs):
        print('\nTRANSCRIBED:')
        if evt.result.reason == speechsdk.ResultReason.RecognizedSpeech:
            print('\tText={}'.format(evt.result.text))
            print('\tSpeaker ID={}\n'.format(evt.result.speaker_id))
        elif evt.result.reason == speechsdk.ResultReason.NoMatch:
            print('\tNOMATCH: Speech could not be TRANSCRIBED: {}'.format(evt.result.no_match_details))
    
    def conversation_transcriber_transcribing_cb(evt: speechsdk.SpeechRecognitionEventArgs):
        print('TRANSCRIBING:')
        print('\tText={}'.format(evt.result.text))
        print('\tSpeaker ID={}'.format(evt.result.speaker_id))
    
    def conversation_transcriber_session_started_cb(evt: speechsdk.SessionEventArgs):
        print('SessionStarted event')
    
    def recognize_from_file():
        # This example requires environment variables named "SPEECH_KEY" and "SPEECH_REGION"
        speech_config = speechsdk.SpeechConfig(subscription=os.environ.get('SPEECH_KEY'), region=os.environ.get('SPEECH_REGION'))
        speech_config.speech_recognition_language="en-US"
        speech_config.set_property(property_id=speechsdk.PropertyId.SpeechServiceResponse_DiarizeIntermediateResults, value='true')
    
        audio_config = speechsdk.audio.AudioConfig(filename="katiesteve.wav")
        conversation_transcriber = speechsdk.transcription.ConversationTranscriber(speech_config=speech_config, audio_config=audio_config)
    
        transcribing_stop = False
    
        def stop_cb(evt: speechsdk.SessionEventArgs):
            #"""callback that signals to stop continuous recognition upon receiving an event `evt`"""
            print('CLOSING on {}'.format(evt))
            nonlocal transcribing_stop
            transcribing_stop = True
    
        # Connect callbacks to the events fired by the conversation transcriber
        conversation_transcriber.transcribed.connect(conversation_transcriber_transcribed_cb)
        conversation_transcriber.transcribing.connect(conversation_transcriber_transcribing_cb)
        conversation_transcriber.session_started.connect(conversation_transcriber_session_started_cb)
        conversation_transcriber.session_stopped.connect(conversation_transcriber_session_stopped_cb)
        conversation_transcriber.canceled.connect(conversation_transcriber_recognition_canceled_cb)
        # stop transcribing on either session stopped or canceled events
        conversation_transcriber.session_stopped.connect(stop_cb)
        conversation_transcriber.canceled.connect(stop_cb)
    
        conversation_transcriber.start_transcribing_async()
    
        # Waits for completion.
        while not transcribing_stop:
            time.sleep(.5)
    
        conversation_transcriber.stop_transcribing_async()
    
    # Main
    
    try:
        recognize_from_file()
    except Exception as err:
        print("Encountered exception. {}".format(err))
    
  4. Rufen Sie die Beispielaudiodatei ab oder verwenden Sie Ihre eigene .wav-Datei. Ersetzen Sie katiesteve.wav durch den Pfad und den Namen Ihrer .wav-Datei.

    Die Anwendung erkennt die Sprache von mehreren Teilnehmern der Unterhaltung. Ihre Audiodatei sollte mehrere Sprecher enthalten.

  5. Um die Sprache für die Spracherkennung zu ändern, ersetzen Sie en-US durch eine andere en-US. Beispiel: es-ES für Spanisch (Spanien). Die Standardsprache ist en-US, wenn Sie keine Sprache angeben. Ausführliche Informationen zum Identifizieren einer von mehreren Sprachen, die gesprochen werden können, finden Sie unter Sprachenerkennung.

  6. Führen Sie Ihre neue Konsolenanwendung aus, um die Unterhaltungstranskription zu starten:

    python conversation_transcription.py
    

Wichtig

Stellen Sie sicher, dass Sie die Umgebungsvariablen SPEECH_KEY und SPEECH_REGION festlegen. Wenn Sie diese Variablen nicht festlegen, wird für das Beispiel eine Fehlermeldung ausgegeben.

Die transkribierte Unterhaltung sollte als Text ausgegeben werden:

TRANSCRIBING:
        Text=good morning
        Speaker ID=Unknown
TRANSCRIBING:
        Text=good morning steve
        Speaker ID=Unknown
TRANSCRIBING:
        Text=good morning steve how are
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=good morning steve how are you doing today
        Speaker ID=Guest-1

TRANSCRIBED:
        Text=Good morning, Steve. How are you doing today?
        Speaker ID=Guest-1

TRANSCRIBING:
        Text=good morning katie
        Speaker ID=Unknown
TRANSCRIBING:
        Text=good morning katie i hope you're having a
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=good morning katie i hope you're having a great start to
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=good morning katie i hope you're having a great start to your day
        Speaker ID=Guest-2

TRANSCRIBED:
        Text=Good morning, Katie. I hope you're having a great start to your day.
        Speaker ID=Guest-2

TRANSCRIBING:
        Text=have you
        Speaker ID=Unknown
TRANSCRIBING:
        Text=have you tried
        Speaker ID=Unknown
TRANSCRIBING:
        Text=have you tried the latest
        Speaker ID=Unknown
TRANSCRIBING:
        Text=have you tried the latest real
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which can
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which can tell you
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said        
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what   
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what in
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=have you tried the latest real time diarization in microsoft speech service which can tell you who said what in real time
        Speaker ID=Guest-1

TRANSCRIBED:
        Text=Have you tried the latest real time diarization in Microsoft Speech Service which can tell you who said what in real time?
        Speaker ID=Guest-1

TRANSCRIBING:
        Text=not yet
        Speaker ID=Unknown
TRANSCRIBING:
        Text=not yet i
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch trans
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization function
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces di
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization     
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to di
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=not yet i've been using the batch transcription with diarization functionality but it produces diarization results after the whole audio is processed is the new feature able to diarize in real time
        Speaker ID=Guest-2

TRANSCRIBED:
        Text=Not yet. I've been using the batch transcription with diarization functionality, but it produces diarization results after the whole audio is processed. Is the new feature able to diarize in real time?
        Speaker ID=Guest-2

TRANSCRIBING:
        Text=absolutely
        Speaker ID=Unknown
TRANSCRIBING:
        Text=absolutely i
        Speaker ID=Unknown
TRANSCRIBING:
        Text=absolutely i recom
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=absolutely i recommend
        Speaker ID=Guest-1
TRANSCRIBING:
        Text=absolutely i recommend you give it a try
        Speaker ID=Guest-1

TRANSCRIBED:
        Text=Absolutely, I recommend you give it a try.
        Speaker ID=Guest-1

TRANSCRIBING:
        Text=that's exc
        Speaker ID=Unknown
TRANSCRIBING:
        Text=that's exciting
        Speaker ID=Unknown
TRANSCRIBING:
        Text=that's exciting let me
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=that's exciting let me try
        Speaker ID=Guest-2
TRANSCRIBING:
        Text=that's exciting let me try it right now
        Speaker ID=Guest-2

TRANSCRIBED:
        Text=That's exciting. Let me try it right now.
        Speaker ID=Guest-2

Redner werden je nach Anzahl der Redner in der Unterhaltung als Gast-1, Gast-2 usw. identifiziert.

Hinweis

Möglicherweise sehen Sie Speaker ID=Unknown in einigen der frühen Zwischenergebnisse, wenn der Sprecher noch nicht identifiziert wurde. Ohne zwischengeschaltete Diarisierungsergebnisse (wenn Sie die PropertyId.SpeechServiceResponse_DiarizeIntermediateResults-Eigenschaft nicht auf „wahr“ festlegen), ist die Sprecher-ID immer „Unbekannt“.

Bereinigen von Ressourcen

Sie können das Azure-Portal oder die Azure-Befehlszeilenschnittstelle (CLI) verwenden, um die erstellte Speech-Ressource zu entfernen.

REST-API-Referenz für die Spracherkennung | REST-API-Referenz für die Spracherkennung für kurze Audiodateien | Zusätzliche Beispiele auf GitHub

Die REST-API unterstützt keine Unterhaltungstranskription. Wählen Sie oben auf dieser Seite eine andere Programmiersprache oder ein anderes Tool aus.

Die Speech-CLI unterstützt keine Unterhaltungstranskription. Wählen Sie oben auf dieser Seite eine andere Programmiersprache oder ein anderes Tool aus.

Nächster Schritt