Udostępnij za pośrednictwem


Szybki start: tworzenie słownika w czasie rzeczywistym

Dokumentacja referencyjna Package (NuGet) | Dodatkowe przykłady w witrynie GitHub |

W tym przewodniku Szybki start uruchomisz aplikację do transkrypcji mowy na tekst z podziałem w czasie rzeczywistym. Diarization rozróżnia różne osoby mówiące, którzy uczestniczą w konwersacji. Usługa rozpoznawania mowy udostępnia informacje o tym, który mówca mówił określoną część transkrypcji mowy.

Informacje o prelegentach są uwzględniane w polu Identyfikator osoby mówiącej. Identyfikator osoby mówiącej jest ogólnym identyfikatorem przypisanym do każdego uczestnika konwersacji przez usługę podczas rozpoznawania, ponieważ różne osoby mówiące są identyfikowane z dostarczonej zawartości audio.

Napiwek

Możesz wypróbować zamianę mowy w czasie rzeczywistym na tekst w programie Speech Studio bez rejestracji ani pisania kodu. Jednak program Speech Studio nie obsługuje jeszcze diaryzacji.

Wymagania wstępne

  • Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
  • Utwórz zasób usługi Mowa w witrynie Azure Portal.
  • Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu , aby wyświetlić klucze i zarządzać nimi.

Konfigurowanie środowiska

Zestaw SPEECH SDK jest dostępny jako pakiet NuGet i implementuje platformę .NET Standard 2.0. Zestaw SPEECH SDK zostanie zainstalowany w dalszej części tego przewodnika, ale najpierw zapoznaj się z przewodnikiem instalacji zestawu SDK, aby uzyskać więcej wymagań.

Ustawianie zmiennych środowiskowych

Aby uzyskać dostęp do usług Azure AI, musisz uwierzytelnić aplikację. W tym artykule pokazano, jak używać zmiennych środowiskowych do przechowywania poświadczeń. Następnie możesz uzyskać dostęp do zmiennych środowiskowych z kodu w celu uwierzytelnienia aplikacji. W przypadku środowiska produkcyjnego użyj bezpieczniejszego sposobu przechowywania poświadczeń i uzyskiwania do nich dostępu.

Ważne

Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.

Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.

Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.

Aby ustawić zmienne środowiskowe dla klucza i regionu zasobu usługi Mowa, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  • Aby ustawić zmienną SPEECH_KEY środowiskową, zastąp klucz jednym z kluczy zasobu.
  • Aby ustawić zmienną SPEECH_REGION środowiskową, zastąp region jednym z regionów zasobu.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Uwaga

Jeśli musisz uzyskać dostęp tylko do zmiennych środowiskowych w bieżącej konsoli, możesz ustawić zmienną środowiskową z wartością set setxzamiast .

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich programów, które muszą odczytać zmienne środowiskowe, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.

Implementowanie diaryzacji z pliku za pomocą transkrypcji konwersacji

Wykonaj następujące kroki, aby utworzyć aplikację konsolową i zainstalować zestaw SPEECH SDK.

  1. Otwórz okno wiersza polecenia w folderze, w którym chcesz utworzyć nowy projekt. Uruchom to polecenie, aby utworzyć aplikację konsolową przy użyciu interfejsu wiersza polecenia platformy .NET.

    dotnet new console
    

    To polecenie tworzy plik Program.cs w katalogu projektu.

  2. Zainstaluj zestaw SPEECH SDK w nowym projekcie przy użyciu interfejsu wiersza polecenia platformy .NET.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Zastąp zawartość Program.cs pliku następującym kodem.

    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. Pobierz przykładowy plik audio lub użyj własnego .wav pliku. Zastąp katiesteve.wav ciąg ścieżką i nazwą .wav pliku.

    Aplikacja rozpoznaje mowę od wielu uczestników konwersacji. Plik audio powinien zawierać wiele głośników.

  5. Aby zmienić język rozpoznawania mowy, zastąp en-US element innym obsługiwanym językiem. Na przykład es-ES w przypadku języka hiszpańskiego (Hiszpania). Język domyślny to en-US , jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikacja języka.

  6. Uruchom aplikację konsolową, aby rozpocząć transkrypcję konwersacji:

    dotnet run
    

Ważne

Upewnij się, że ustawiono SPEECH_KEY zmienne środowiskowe i SPEECH_REGION . Jeśli nie ustawisz tych zmiennych, przykład zakończy się niepowodzeniem z komunikatem o błędzie.

Transkrypcja konwersacji powinna być wyjściowa jako tekst:

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

Prelegenci są identyfikowani jako gość-1, gość-2 itd., w zależności od liczby osób mówiących w konwersacji.

Uwaga

W niektórych wczesnych wynikach pośrednich może wystąpić Speaker ID=Unknown , gdy głośnik nie został jeszcze zidentyfikowany. Bez wyników słownika pośredniego (jeśli nie ustawisz PropertyId.SpeechServiceResponse_DiarizeIntermediateResults właściwości na "true"), identyfikator osoby mówiącej jest zawsze "Nieznany".

Czyszczenie zasobów

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

Dokumentacja referencyjna Package (NuGet) | Dodatkowe przykłady w witrynie GitHub |

W tym przewodniku Szybki start uruchomisz aplikację do transkrypcji mowy na tekst z podziałem w czasie rzeczywistym. Diarization rozróżnia różne osoby mówiące, którzy uczestniczą w konwersacji. Usługa rozpoznawania mowy udostępnia informacje o tym, który mówca mówił określoną część transkrypcji mowy.

Informacje o prelegentach są uwzględniane w polu Identyfikator osoby mówiącej. Identyfikator osoby mówiącej jest ogólnym identyfikatorem przypisanym do każdego uczestnika konwersacji przez usługę podczas rozpoznawania, ponieważ różne osoby mówiące są identyfikowane z dostarczonej zawartości audio.

Napiwek

Możesz wypróbować zamianę mowy w czasie rzeczywistym na tekst w programie Speech Studio bez rejestracji ani pisania kodu. Jednak program Speech Studio nie obsługuje jeszcze diaryzacji.

Wymagania wstępne

  • Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
  • Utwórz zasób usługi Mowa w witrynie Azure Portal.
  • Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu , aby wyświetlić klucze i zarządzać nimi.

Konfigurowanie środowiska

Zestaw SPEECH SDK jest dostępny jako pakiet NuGet i implementuje platformę .NET Standard 2.0. Zestaw SPEECH SDK zostanie zainstalowany w dalszej części tego przewodnika, ale najpierw zapoznaj się z przewodnikiem instalacji zestawu SDK, aby uzyskać więcej wymagań.

Ustawianie zmiennych środowiskowych

Aby uzyskać dostęp do usług Azure AI, musisz uwierzytelnić aplikację. W tym artykule pokazano, jak używać zmiennych środowiskowych do przechowywania poświadczeń. Następnie możesz uzyskać dostęp do zmiennych środowiskowych z kodu w celu uwierzytelnienia aplikacji. W przypadku środowiska produkcyjnego użyj bezpieczniejszego sposobu przechowywania poświadczeń i uzyskiwania do nich dostępu.

Ważne

Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.

Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.

Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.

Aby ustawić zmienne środowiskowe dla klucza i regionu zasobu usługi Mowa, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  • Aby ustawić zmienną SPEECH_KEY środowiskową, zastąp klucz jednym z kluczy zasobu.
  • Aby ustawić zmienną SPEECH_REGION środowiskową, zastąp region jednym z regionów zasobu.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Uwaga

Jeśli musisz uzyskać dostęp tylko do zmiennych środowiskowych w bieżącej konsoli, możesz ustawić zmienną środowiskową z wartością set setxzamiast .

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich programów, które muszą odczytać zmienne środowiskowe, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.

Implementowanie diaryzacji z pliku za pomocą transkrypcji konwersacji

Wykonaj następujące kroki, aby utworzyć aplikację konsolową i zainstalować zestaw SPEECH SDK.

  1. Utwórz nowy projekt konsoli języka C++ w programie Visual Studio Community 2022 o nazwie ConversationTranscription.

  2. Wybierz pozycję Narzędzia Nuget>Menedżer pakietów> Menedżer pakietów Konsola. W konsoli Menedżer pakietów uruchom następujące polecenie:

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. Zastąp zawartość ConversationTranscription.cpp pliku następującym kodem.

    #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. Pobierz przykładowy plik audio lub użyj własnego .wav pliku. Zastąp katiesteve.wav ciąg ścieżką i nazwą .wav pliku.

    Aplikacja rozpoznaje mowę od wielu uczestników konwersacji. Plik audio powinien zawierać wiele głośników.

  5. Aby zmienić język rozpoznawania mowy, zastąp en-US element innym obsługiwanym językiem. Na przykład es-ES w przypadku języka hiszpańskiego (Hiszpania). Język domyślny to en-US , jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikacja języka.

  6. Skompiluj i uruchom aplikację, aby rozpocząć transkrypcję konwersacji:

    Ważne

    Upewnij się, że ustawiono SPEECH_KEY zmienne środowiskowe i SPEECH_REGION . Jeśli nie ustawisz tych zmiennych, przykład zakończy się niepowodzeniem z komunikatem o błędzie.

Transkrypcja konwersacji powinna być wyjściowa jako tekst:

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

Prelegenci są identyfikowani jako gość-1, gość-2 itd., w zależności od liczby osób mówiących w konwersacji.

Uwaga

W niektórych wczesnych wynikach pośrednich może wystąpić Speaker ID=Unknown , gdy głośnik nie został jeszcze zidentyfikowany. Bez wyników słownika pośredniego (jeśli nie ustawisz PropertyId::SpeechServiceResponse_DiarizeIntermediateResults właściwości na "true"), identyfikator osoby mówiącej jest zawsze "Nieznany".

Czyszczenie zasobów

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

Dokumentacja referencyjna Package (Go) | Dodatkowe przykłady w witrynie GitHub |

Zestaw SPEECH SDK dla języka programowania Go nie obsługuje transkrypcji konwersacji. Wybierz inny język programowania lub odwołanie do języka Go i przykłady połączone od początku tego artykułu.

| Dokumentacja referencyjna Dodatkowe przykłady w usłudze GitHub

W tym przewodniku Szybki start uruchomisz aplikację do transkrypcji mowy na tekst z podziałem w czasie rzeczywistym. Diarization rozróżnia różne osoby mówiące, którzy uczestniczą w konwersacji. Usługa rozpoznawania mowy udostępnia informacje o tym, który mówca mówił określoną część transkrypcji mowy.

Informacje o prelegentach są uwzględniane w polu Identyfikator osoby mówiącej. Identyfikator osoby mówiącej jest ogólnym identyfikatorem przypisanym do każdego uczestnika konwersacji przez usługę podczas rozpoznawania, ponieważ różne osoby mówiące są identyfikowane z dostarczonej zawartości audio.

Napiwek

Możesz wypróbować zamianę mowy w czasie rzeczywistym na tekst w programie Speech Studio bez rejestracji ani pisania kodu. Jednak program Speech Studio nie obsługuje jeszcze diaryzacji.

Wymagania wstępne

  • Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
  • Utwórz zasób usługi Mowa w witrynie Azure Portal.
  • Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu , aby wyświetlić klucze i zarządzać nimi.

Konfigurowanie środowiska

Aby skonfigurować środowisko, zainstaluj zestaw SPEECH SDK. Przykład w tym przewodniku Szybki start współpracuje ze środowiskiem uruchomieniowym Języka Java.

  1. Zainstaluj narzędzie Apache Maven. Następnie uruchom polecenie mvn -v , aby potwierdzić pomyślną instalację.

  2. Utwórz nowy pom.xml plik w katalogu głównym projektu i skopiuj do niego następujące elementy:

    <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. Zainstaluj zestaw SPEECH SDK i zależności.

    mvn clean dependency:copy-dependencies
    

Ustawianie zmiennych środowiskowych

Aby uzyskać dostęp do usług Azure AI, musisz uwierzytelnić aplikację. W tym artykule pokazano, jak używać zmiennych środowiskowych do przechowywania poświadczeń. Następnie możesz uzyskać dostęp do zmiennych środowiskowych z kodu w celu uwierzytelnienia aplikacji. W przypadku środowiska produkcyjnego użyj bezpieczniejszego sposobu przechowywania poświadczeń i uzyskiwania do nich dostępu.

Ważne

Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.

Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.

Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.

Aby ustawić zmienne środowiskowe dla klucza i regionu zasobu usługi Mowa, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  • Aby ustawić zmienną SPEECH_KEY środowiskową, zastąp klucz jednym z kluczy zasobu.
  • Aby ustawić zmienną SPEECH_REGION środowiskową, zastąp region jednym z regionów zasobu.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Uwaga

Jeśli musisz uzyskać dostęp tylko do zmiennych środowiskowych w bieżącej konsoli, możesz ustawić zmienną środowiskową z wartością set setxzamiast .

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich programów, które muszą odczytać zmienne środowiskowe, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.

Implementowanie diaryzacji z pliku za pomocą transkrypcji konwersacji

Wykonaj następujące kroki, aby utworzyć aplikację konsolową na potrzeby transkrypcji konwersacji.

  1. Utwórz nowy plik o nazwie ConversationTranscription.java w tym samym katalogu głównym projektu.

  2. Skopiuj następujący kod do ConversationTranscription.javapliku :

    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. Pobierz przykładowy plik audio lub użyj własnego .wav pliku. Zastąp katiesteve.wav ciąg ścieżką i nazwą .wav pliku.

    Aplikacja rozpoznaje mowę od wielu uczestników konwersacji. Plik audio powinien zawierać wiele głośników.

  4. Aby zmienić język rozpoznawania mowy, zastąp en-US element innym obsługiwanym językiem. Na przykład es-ES w przypadku języka hiszpańskiego (Hiszpania). Język domyślny to en-US , jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikacja języka.

  5. Uruchom nową aplikację konsolową, aby rozpocząć transkrypcję konwersacji:

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

Ważne

Upewnij się, że ustawiono SPEECH_KEY zmienne środowiskowe i SPEECH_REGION . Jeśli nie ustawisz tych zmiennych, przykład zakończy się niepowodzeniem z komunikatem o błędzie.

Transkrypcja konwersacji powinna być wyjściowa jako tekst:

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

Prelegenci są identyfikowani jako gość-1, gość-2 itd., w zależności od liczby osób mówiących w konwersacji.

Uwaga

W niektórych wczesnych wynikach pośrednich może wystąpić Speaker ID=Unknown , gdy głośnik nie został jeszcze zidentyfikowany. Bez wyników słownika pośredniego (jeśli nie ustawisz PropertyId.SpeechServiceResponse_DiarizeIntermediateResults właściwości na "true"), identyfikator osoby mówiącej jest zawsze "Nieznany".

Czyszczenie zasobów

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

Dokumentacja referencyjna | Package (npm) | Dodatkowe przykłady w kodzie źródłowym biblioteki GitHub |

W tym przewodniku Szybki start uruchomisz aplikację do transkrypcji mowy na tekst z podziałem w czasie rzeczywistym. Diarization rozróżnia różne osoby mówiące, którzy uczestniczą w konwersacji. Usługa rozpoznawania mowy udostępnia informacje o tym, który mówca mówił określoną część transkrypcji mowy.

Informacje o prelegentach są uwzględniane w polu Identyfikator osoby mówiącej. Identyfikator osoby mówiącej jest ogólnym identyfikatorem przypisanym do każdego uczestnika konwersacji przez usługę podczas rozpoznawania, ponieważ różne osoby mówiące są identyfikowane z dostarczonej zawartości audio.

Napiwek

Możesz wypróbować zamianę mowy w czasie rzeczywistym na tekst w programie Speech Studio bez rejestracji ani pisania kodu. Jednak program Speech Studio nie obsługuje jeszcze diaryzacji.

Wymagania wstępne

  • Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
  • Utwórz zasób usługi Mowa w witrynie Azure Portal.
  • Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu , aby wyświetlić klucze i zarządzać nimi.

Konfigurowanie środowiska

Aby skonfigurować środowisko, zainstaluj zestaw SPEECH SDK dla języka JavaScript. Jeśli chcesz tylko, aby nazwa pakietu została zainstalowana, uruchom polecenie npm install microsoft-cognitiveservices-speech-sdk. Aby uzyskać instrukcje instalacji z przewodnikiem, zobacz przewodnik instalacji zestawu SDK.

Ustawianie zmiennych środowiskowych

Aby uzyskać dostęp do usług Azure AI, musisz uwierzytelnić aplikację. W tym artykule pokazano, jak używać zmiennych środowiskowych do przechowywania poświadczeń. Następnie możesz uzyskać dostęp do zmiennych środowiskowych z kodu w celu uwierzytelnienia aplikacji. W przypadku środowiska produkcyjnego użyj bezpieczniejszego sposobu przechowywania poświadczeń i uzyskiwania do nich dostępu.

Ważne

Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.

Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.

Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.

Aby ustawić zmienne środowiskowe dla klucza i regionu zasobu usługi Mowa, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  • Aby ustawić zmienną SPEECH_KEY środowiskową, zastąp klucz jednym z kluczy zasobu.
  • Aby ustawić zmienną SPEECH_REGION środowiskową, zastąp region jednym z regionów zasobu.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Uwaga

Jeśli musisz uzyskać dostęp tylko do zmiennych środowiskowych w bieżącej konsoli, możesz ustawić zmienną środowiskową z wartością set setxzamiast .

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich programów, które muszą odczytać zmienne środowiskowe, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.

Implementowanie diaryzacji z pliku za pomocą transkrypcji konwersacji

Wykonaj następujące kroki, aby utworzyć nową aplikację konsolową na potrzeby transkrypcji konwersacji.

  1. Otwórz okno wiersza polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy plik o nazwie ConversationTranscription.js.

  2. Zainstaluj zestaw SPEECH SDK dla języka JavaScript:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. Skopiuj następujący kod do ConversationTranscription.jspliku :

    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. Pobierz przykładowy plik audio lub użyj własnego .wav pliku. Zastąp katiesteve.wav ciąg ścieżką i nazwą .wav pliku.

    Aplikacja rozpoznaje mowę od wielu uczestników konwersacji. Plik audio powinien zawierać wiele głośników.

  5. Aby zmienić język rozpoznawania mowy, zastąp en-US element innym obsługiwanym językiem. Na przykład es-ES w przypadku języka hiszpańskiego (Hiszpania). Język domyślny to en-US , jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikacja języka.

  6. Uruchom nową aplikację konsolową, aby rozpocząć rozpoznawanie mowy z pliku:

    node.exe ConversationTranscription.js
    

Ważne

Upewnij się, że ustawiono SPEECH_KEY zmienne środowiskowe i SPEECH_REGION . Jeśli nie ustawisz tych zmiennych, przykład zakończy się niepowodzeniem z komunikatem o błędzie.

Transkrypcja konwersacji powinna być wyjściowa jako tekst:

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

Prelegenci są identyfikowani jako gość-1, gość-2 itd., w zależności od liczby osób mówiących w konwersacji.

Czyszczenie zasobów

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

Dokumentacja referencyjna Package (download) | Dodatkowe przykłady w usłudze GitHub |

Zestaw SPEECH SDK dla języka Objective-C obsługuje transkrypcję konwersacji, ale nie dołączyliśmy tu przewodnika. Wybierz inny język programowania, aby rozpocząć pracę i poznać koncepcje, lub zapoznaj się z dokumentacją języka Objective-C i przykładami połączonymi od początku tego artykułu.

Dokumentacja referencyjna Package (download) | Dodatkowe przykłady w usłudze GitHub |

Zestaw SPEECH SDK dla języka Swift obsługuje transkrypcję konwersacji, ale jeszcze nie dołączyliśmy tutaj przewodnika. Wybierz inny język programowania, aby rozpocząć pracę i dowiedzieć się więcej o pojęciach, lub zapoznaj się z dokumentacją i przykładami usługi Swift połączonymi od początku tego artykułu.

Dokumentacja referencyjna | Package (PyPi) | Dodatkowe przykłady w witrynie GitHub

W tym przewodniku Szybki start uruchomisz aplikację do transkrypcji mowy na tekst z podziałem w czasie rzeczywistym. Diarization rozróżnia różne osoby mówiące, którzy uczestniczą w konwersacji. Usługa rozpoznawania mowy udostępnia informacje o tym, który mówca mówił określoną część transkrypcji mowy.

Informacje o prelegentach są uwzględniane w polu Identyfikator osoby mówiącej. Identyfikator osoby mówiącej jest ogólnym identyfikatorem przypisanym do każdego uczestnika konwersacji przez usługę podczas rozpoznawania, ponieważ różne osoby mówiące są identyfikowane z dostarczonej zawartości audio.

Napiwek

Możesz wypróbować zamianę mowy w czasie rzeczywistym na tekst w programie Speech Studio bez rejestracji ani pisania kodu. Jednak program Speech Studio nie obsługuje jeszcze diaryzacji.

Wymagania wstępne

  • Subskrypcja platformy Azure. Możesz utworzyć go bezpłatnie.
  • Utwórz zasób usługi Mowa w witrynie Azure Portal.
  • Pobierz klucz zasobu usługi Mowa i region. Po wdrożeniu zasobu usługi Mowa wybierz pozycję Przejdź do zasobu , aby wyświetlić klucze i zarządzać nimi.

Konfigurowanie środowiska

Zestaw SPEECH SDK dla języka Python jest dostępny jako moduł PyPI (Python Package Index). Zestaw SPEECH SDK dla języka Python jest zgodny z systemami Windows, Linux i macOS.

Zainstaluj wersję języka Python z wersji 3.7 lub nowszej. Najpierw zapoznaj się z przewodnikiem instalacji zestawu SDK, aby uzyskać więcej wymagań.

Ustawianie zmiennych środowiskowych

Aby uzyskać dostęp do usług Azure AI, musisz uwierzytelnić aplikację. W tym artykule pokazano, jak używać zmiennych środowiskowych do przechowywania poświadczeń. Następnie możesz uzyskać dostęp do zmiennych środowiskowych z kodu w celu uwierzytelnienia aplikacji. W przypadku środowiska produkcyjnego użyj bezpieczniejszego sposobu przechowywania poświadczeń i uzyskiwania do nich dostępu.

Ważne

Zalecamy uwierzytelnianie za pomocą identyfikatora Entra firmy Microsoft z tożsamościami zarządzanymi dla zasobów platformy Azure, aby uniknąć przechowywania poświadczeń przy użyciu aplikacji uruchamianych w chmurze.

Jeśli używasz klucza interfejsu API, zapisz go bezpiecznie w innym miejscu, na przykład w usłudze Azure Key Vault. Nie dołączaj klucza interfejsu API bezpośrednio do kodu i nigdy nie publikuj go publicznie.

Aby uzyskać więcej informacji na temat zabezpieczeń usług sztucznej inteligencji, zobacz Uwierzytelnianie żądań w usługach Azure AI.

Aby ustawić zmienne środowiskowe dla klucza i regionu zasobu usługi Mowa, otwórz okno konsoli i postępuj zgodnie z instrukcjami dotyczącymi systemu operacyjnego i środowiska programistycznego.

  • Aby ustawić zmienną SPEECH_KEY środowiskową, zastąp klucz jednym z kluczy zasobu.
  • Aby ustawić zmienną SPEECH_REGION środowiskową, zastąp region jednym z regionów zasobu.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Uwaga

Jeśli musisz uzyskać dostęp tylko do zmiennych środowiskowych w bieżącej konsoli, możesz ustawić zmienną środowiskową z wartością set setxzamiast .

Po dodaniu zmiennych środowiskowych może być konieczne ponowne uruchomienie wszystkich programów, które muszą odczytać zmienne środowiskowe, w tym okno konsoli. Jeśli na przykład używasz programu Visual Studio jako edytora, uruchom ponownie program Visual Studio przed uruchomieniem przykładu.

Implementowanie diaryzacji z pliku za pomocą transkrypcji konwersacji

Wykonaj następujące kroki, aby utworzyć nową aplikację konsolową.

  1. Otwórz okno wiersza polecenia, w którym chcesz utworzyć nowy projekt, i utwórz nowy plik o nazwie conversation_transcription.py.

  2. Uruchom to polecenie, aby zainstalować zestaw SPEECH SDK:

    pip install azure-cognitiveservices-speech
    
  3. Skopiuj następujący kod do conversation_transcription.pypliku :

    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. Pobierz przykładowy plik audio lub użyj własnego .wav pliku. Zastąp katiesteve.wav ciąg ścieżką i nazwą .wav pliku.

    Aplikacja rozpoznaje mowę od wielu uczestników konwersacji. Plik audio powinien zawierać wiele głośników.

  5. Aby zmienić język rozpoznawania mowy, zastąp en-US element innym obsługiwanym językiem. Na przykład es-ES w przypadku języka hiszpańskiego (Hiszpania). Język domyślny to en-US , jeśli nie określisz języka. Aby uzyskać szczegółowe informacje na temat identyfikowania jednego z wielu języków, które mogą być mówione, zobacz identyfikacja języka.

  6. Uruchom nową aplikację konsolową, aby rozpocząć transkrypcję konwersacji:

    python conversation_transcription.py
    

Ważne

Upewnij się, że ustawiono SPEECH_KEY zmienne środowiskowe i SPEECH_REGION . Jeśli nie ustawisz tych zmiennych, przykład zakończy się niepowodzeniem z komunikatem o błędzie.

Transkrypcja konwersacji powinna być wyjściowa jako tekst:

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

Prelegenci są identyfikowani jako gość-1, gość-2 itd., w zależności od liczby osób mówiących w konwersacji.

Uwaga

W niektórych wczesnych wynikach pośrednich może wystąpić Speaker ID=Unknown , gdy głośnik nie został jeszcze zidentyfikowany. Bez wyników słownika pośredniego (jeśli nie ustawisz PropertyId.SpeechServiceResponse_DiarizeIntermediateResults właściwości na "true"), identyfikator osoby mówiącej jest zawsze "Nieznany".

Czyszczenie zasobów

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

Interfejs API REST zamiany mowy na tekst — dokumentacja | interfejsu API REST zamiany mowy na tekst w celu uzyskania krótkiej dokumentacji | audio Dodatkowe przykłady w usłudze GitHub

Interfejs API REST nie obsługuje transkrypcji konwersacji. Wybierz inny język programowania lub narzędzie w górnej części tej strony.

Interfejs wiersza polecenia usługi Mowa nie obsługuje transkrypcji konwersacji. Wybierz inny język programowania lub narzędzie w górnej części tej strony.

Następny krok