Guida introduttiva: Creare una diarizzazione in tempo reale

Pacchetto della documentazione di riferimento | (NuGet) | Esempi aggiuntivi in GitHub

In questo argomento di avvio rapido si esegue un'applicazione per la trascrizione del riconoscimento vocale con la diarizzazione in tempo reale. La diarizzazione distingue tra i diversi relatori che partecipano alla conversazione. Il servizio Voce fornisce informazioni sull'altoparlante che parlava una particolare parte del discorso trascritto.

Le informazioni sull'altoparlante sono incluse nel risultato nel campo ID voce. L'ID voce è un identificatore generico assegnato a ogni partecipante della conversazione dal servizio durante il riconoscimento, poiché vengono identificati parlanti diversi dal contenuto audio fornito.

Suggerimento

È possibile provare il riconoscimento vocale in tempo reale in Speech Studio senza iscriversi o scrivere codice. Tuttavia, Speech Studio non supporta ancora la diarizzazione.

Prerequisiti

Configurare l'ambiente

Speech SDK è disponibile come pacchetto NuGet e implementa .NET Standard 2.0. Si installa Speech SDK più avanti in questa guida, ma prima di tutto controllare la guida all'installazione dell'SDK per altri requisiti.

Impostare le variabili di ambiente

L'applicazione deve essere autenticata per accedere alle risorse dei servizi di intelligenza artificiale di Azure. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. Ad esempio, dopo aver ottenere una chiave per la risorsa Voce, scriverla in una nuova variabile di ambiente nel computer locale che esegue l'applicazione.

Suggerimento

Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione, ad esempio Azure Key Vault, vedere Sicurezza dei servizi di intelligenza artificiale di Azure.

Per impostare la variabile di ambiente per la chiave della risorsa Voce, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.

  • Per impostare la SPEECH_KEY variabile di ambiente, sostituire your-key con una delle chiavi per la risorsa.
  • Per impostare la SPEECH_REGION variabile di ambiente, sostituire l'area con una delle aree per la risorsa.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Nota

Se è sufficiente accedere alle variabili di ambiente nella console corrente, è possibile impostare la variabile di setxambiente con set anziché .

Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi che devono leggere la variabile di ambiente, inclusa la finestra della console. Ad esempio, se si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.

Implementare la diarizzazione dal file con la trascrizione della conversazione

Seguire questa procedura per creare un'applicazione console e installare Speech SDK.

  1. Aprire una finestra del prompt dei comandi nella cartella in cui si desidera il nuovo progetto. Eseguire questo comando per creare un'applicazione console con l'interfaccia della riga di comando di .NET.

    dotnet new console
    

    Questo comando crea il file Program.cs nella directory del progetto.

  2. Installare Speech SDK nel nuovo progetto con l'interfaccia della riga di comando di .NET.

    dotnet add package Microsoft.CognitiveServices.Speech
    
  3. Sostituire il contenuto di Program.cs con il codice seguente.

    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";
    
            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}");
                    };
    
                    conversationTranscriber.Transcribed += (s, e) =>
                    {
                        if (e.Result.Reason == ResultReason.RecognizedSpeech)
                        {
                            Console.WriteLine($"TRANSCRIBED: Text={e.Result.Text} Speaker ID={e.Result.SpeakerId}");
                        }
                        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. Ottenere il file audio di esempio o usare il proprio .wav file. Sostituire katiesteve.wav con il percorso e il nome del .wav file.

    L'applicazione riconosce il riconoscimento vocale da più partecipanti alla conversazione. Il file audio deve contenere più altoparlanti.

  5. Per modificare la lingua di riconoscimento vocale, sostituire en-US con un'altra lingua supportata. Ad esempio, es-ES per spagnolo (Spagna). La lingua predefinita è en-US se non si specifica una lingua. Per informazioni dettagliate su come identificare una delle più lingue che potrebbero essere pronunciate, vedere Identificazione della lingua.

  6. Eseguire l'applicazione console per avviare la trascrizione della conversazione:

    dotnet run
    

Importante

Assicurarsi di impostare le SPEECH_KEY variabili di ambiente e SPEECH_REGION. Se queste variabili non vengono impostate, l'esempio ha esito negativo e viene visualizzato un messaggio di errore.

La conversazione trascritta deve essere restituita come testo:

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
TRANSRIBED: 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: Reason=EndOfStream

I relatori vengono identificati come Guest-1, Guest-2 e così via, a seconda del numero di relatori nella conversazione.

Pulire le risorse

È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure per rimuovere la risorsa Voce creata.

Pacchetto della documentazione di riferimento | (NuGet) | Esempi aggiuntivi in GitHub

In questo argomento di avvio rapido si esegue un'applicazione per la trascrizione del riconoscimento vocale con la diarizzazione in tempo reale. La diarizzazione distingue tra i diversi relatori che partecipano alla conversazione. Il servizio Voce fornisce informazioni sull'altoparlante che parlava una particolare parte del discorso trascritto.

Le informazioni sull'altoparlante sono incluse nel risultato nel campo ID voce. L'ID voce è un identificatore generico assegnato a ogni partecipante della conversazione dal servizio durante il riconoscimento, poiché vengono identificati parlanti diversi dal contenuto audio fornito.

Suggerimento

È possibile provare il riconoscimento vocale in tempo reale in Speech Studio senza iscriversi o scrivere codice. Tuttavia, Speech Studio non supporta ancora la diarizzazione.

Prerequisiti

Configurare l'ambiente

Speech SDK è disponibile come pacchetto NuGet e implementa .NET Standard 2.0. Si installa Speech SDK più avanti in questa guida, ma prima di tutto controllare la guida all'installazione dell'SDK per altri requisiti.

Impostare le variabili di ambiente

L'applicazione deve essere autenticata per accedere alle risorse dei servizi di intelligenza artificiale di Azure. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. Ad esempio, dopo aver ottenere una chiave per la risorsa Voce, scriverla in una nuova variabile di ambiente nel computer locale che esegue l'applicazione.

Suggerimento

Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione, ad esempio Azure Key Vault, vedere Sicurezza dei servizi di intelligenza artificiale di Azure.

Per impostare la variabile di ambiente per la chiave della risorsa Voce, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.

  • Per impostare la SPEECH_KEY variabile di ambiente, sostituire your-key con una delle chiavi per la risorsa.
  • Per impostare la SPEECH_REGION variabile di ambiente, sostituire l'area con una delle aree per la risorsa.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Nota

Se è sufficiente accedere alle variabili di ambiente nella console corrente, è possibile impostare la variabile di setxambiente con set anziché .

Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi che devono leggere la variabile di ambiente, inclusa la finestra della console. Ad esempio, se si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.

Implementare la diarizzazione dal file con la trascrizione della conversazione

Seguire questa procedura per creare un'applicazione console e installare Speech SDK.

  1. Creare un nuovo progetto console C++ in Visual Studio Community 2022 denominato ConversationTranscription.

  2. Selezionare Strumenti>nuget Gestione pacchetti> Gestione pacchetti Console. Nella console di Gestione pacchetti eseguire questo comando:

    Install-Package Microsoft.CognitiveServices.Speech
    
  3. Sostituire il contenuto di ConversationTranscription.cpp con il codice seguente.

    #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->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;
            });
    
        conversationTranscriber->Transcribed.Connect([](const ConversationTranscriptionEventArgs& e)
            {
                if (e.Result->Reason == ResultReason::RecognizedSpeech)
                {
                    std::cout << "TRANSCRIBED: Text=" << e.Result->Text << std::endl;
                    std::cout << "Speaker ID=" << e.Result->SpeakerId << 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. Ottenere il file audio di esempio o usare il proprio .wav file. Sostituire katiesteve.wav con il percorso e il nome del .wav file.

    L'applicazione riconosce il riconoscimento vocale da più partecipanti alla conversazione. Il file audio deve contenere più altoparlanti.

  5. Per modificare la lingua di riconoscimento vocale, sostituire en-US con un'altra lingua supportata. Ad esempio, es-ES per spagnolo (Spagna). La lingua predefinita è en-US se non si specifica una lingua. Per informazioni dettagliate su come identificare una delle più lingue che potrebbero essere pronunciate, vedere Identificazione della lingua.

  6. Compilare ed eseguire l'applicazione per avviare la trascrizione della conversazione:

    Importante

    Assicurarsi di impostare le SPEECH_KEY variabili di ambiente e SPEECH_REGION. Se queste variabili non vengono impostate, l'esempio ha esito negativo e viene visualizzato un messaggio di errore.

La conversazione trascritta deve essere restituita come testo:

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
TRANSRIBED: 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: Reason=EndOfStream

I relatori vengono identificati come Guest-1, Guest-2 e così via, a seconda del numero di relatori nella conversazione.

Pulire le risorse

È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure per rimuovere la risorsa Voce creata.

Pacchetto della documentazione di riferimento | (Go) | Esempi aggiuntivi in GitHub

Speech SDK per Go non supporta la trascrizione della conversazione. Selezionare un altro linguaggio di programmazione o i riferimenti a Go e gli esempi collegati dall'inizio di questo articolo.

Documentazione di riferimento | Esempi aggiuntivi su GitHub

In questo argomento di avvio rapido si esegue un'applicazione per la trascrizione del riconoscimento vocale con la diarizzazione in tempo reale. La diarizzazione distingue tra i diversi relatori che partecipano alla conversazione. Il servizio Voce fornisce informazioni sull'altoparlante che parlava una particolare parte del discorso trascritto.

Le informazioni sull'altoparlante sono incluse nel risultato nel campo ID voce. L'ID voce è un identificatore generico assegnato a ogni partecipante della conversazione dal servizio durante il riconoscimento, poiché vengono identificati parlanti diversi dal contenuto audio fornito.

Suggerimento

È possibile provare il riconoscimento vocale in tempo reale in Speech Studio senza iscriversi o scrivere codice. Tuttavia, Speech Studio non supporta ancora la diarizzazione.

Prerequisiti

Configurare l'ambiente

Per configurare l'ambiente, installare Speech SDK. L'esempio in questa guida introduttiva funziona con Java Runtime.

  1. Installare Apache Maven. mvn -v Eseguire quindi per confermare l'installazione corretta.

  2. Creare un nuovo pom.xml file nella radice del progetto e copiarlo nel file seguente:

    <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.37.0</version>
            </dependency>
        </dependencies>
    </project>
    
  3. Installare Speech SDK e le dipendenze.

    mvn clean dependency:copy-dependencies
    

Impostare le variabili di ambiente

L'applicazione deve essere autenticata per accedere alle risorse dei servizi di intelligenza artificiale di Azure. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. Ad esempio, dopo aver ottenere una chiave per la risorsa Voce, scriverla in una nuova variabile di ambiente nel computer locale che esegue l'applicazione.

Suggerimento

Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione, ad esempio Azure Key Vault, vedere Sicurezza dei servizi di intelligenza artificiale di Azure.

Per impostare la variabile di ambiente per la chiave della risorsa Voce, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.

  • Per impostare la SPEECH_KEY variabile di ambiente, sostituire your-key con una delle chiavi per la risorsa.
  • Per impostare la SPEECH_REGION variabile di ambiente, sostituire l'area con una delle aree per la risorsa.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Nota

Se è sufficiente accedere alle variabili di ambiente nella console corrente, è possibile impostare la variabile di setxambiente con set anziché .

Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi che devono leggere la variabile di ambiente, inclusa la finestra della console. Ad esempio, se si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.

Implementare la diarizzazione dal file con la trascrizione della conversazione

Seguire questa procedura per creare un'applicazione console per la trascrizione della conversazione.

  1. Creare un nuovo file denominato ConversationTranscription.java nella stessa directory radice del progetto.

  2. Copiare il codice seguente 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");
    
            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());
                });
    
                conversationTranscriber.transcribed.addEventListener((s, e) -> {
                    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
                        System.out.println("TRANSCRIBED: Text=" + e.getResult().getText() + " Speaker ID=" + e.getResult().getSpeakerId() );
                    }
                    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. Ottenere il file audio di esempio o usare il proprio .wav file. Sostituire katiesteve.wav con il percorso e il nome del .wav file.

    L'applicazione riconosce il riconoscimento vocale da più partecipanti alla conversazione. Il file audio deve contenere più altoparlanti.

  4. Per modificare la lingua di riconoscimento vocale, sostituire en-US con un'altra lingua supportata. Ad esempio, es-ES per spagnolo (Spagna). La lingua predefinita è en-US se non si specifica una lingua. Per informazioni dettagliate su come identificare una delle più lingue che potrebbero essere pronunciate, vedere Identificazione della lingua.

  5. Eseguire la nuova applicazione console per avviare la trascrizione della conversazione:

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

Importante

Assicurarsi di impostare le SPEECH_KEY variabili di ambiente e SPEECH_REGION. Se queste variabili non vengono impostate, l'esempio ha esito negativo e viene visualizzato un messaggio di errore.

La conversazione trascritta deve essere restituita come testo:

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
TRANSRIBED: 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: Reason=EndOfStream

I relatori vengono identificati come Guest-1, Guest-2 e così via, a seconda del numero di relatori nella conversazione.

Pulire le risorse

È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure per rimuovere la risorsa Voce creata.

Pacchetto della documentazione di riferimento | (npm) | Esempi aggiuntivi nel codice sorgente della libreria GitHub |

In questo argomento di avvio rapido si esegue un'applicazione per la trascrizione del riconoscimento vocale con la diarizzazione in tempo reale. La diarizzazione distingue tra i diversi relatori che partecipano alla conversazione. Il servizio Voce fornisce informazioni sull'altoparlante che parlava una particolare parte del discorso trascritto.

Le informazioni sull'altoparlante sono incluse nel risultato nel campo ID voce. L'ID voce è un identificatore generico assegnato a ogni partecipante della conversazione dal servizio durante il riconoscimento, poiché vengono identificati parlanti diversi dal contenuto audio fornito.

Suggerimento

È possibile provare il riconoscimento vocale in tempo reale in Speech Studio senza iscriversi o scrivere codice. Tuttavia, Speech Studio non supporta ancora la diarizzazione.

Prerequisiti

Configurare l'ambiente

Per configurare l'ambiente, installare Speech SDK per JavaScript. Se si vuole solo installare il nome del pacchetto, eseguire npm install microsoft-cognitiveservices-speech-sdk. Per istruzioni sull'installazione guidata, vedere la guida all'installazione dell'SDK.

Impostare le variabili di ambiente

L'applicazione deve essere autenticata per accedere alle risorse dei servizi di intelligenza artificiale di Azure. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. Ad esempio, dopo aver ottenere una chiave per la risorsa Voce, scriverla in una nuova variabile di ambiente nel computer locale che esegue l'applicazione.

Suggerimento

Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione, ad esempio Azure Key Vault, vedere Sicurezza dei servizi di intelligenza artificiale di Azure.

Per impostare la variabile di ambiente per la chiave della risorsa Voce, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.

  • Per impostare la SPEECH_KEY variabile di ambiente, sostituire your-key con una delle chiavi per la risorsa.
  • Per impostare la SPEECH_REGION variabile di ambiente, sostituire l'area con una delle aree per la risorsa.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Nota

Se è sufficiente accedere alle variabili di ambiente nella console corrente, è possibile impostare la variabile di setxambiente con set anziché .

Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi che devono leggere la variabile di ambiente, inclusa la finestra della console. Ad esempio, se si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.

Implementare la diarizzazione dal file con la trascrizione della conversazione

Seguire questa procedura per creare una nuova applicazione console per la trascrizione della conversazione.

  1. Aprire una finestra del prompt dei comandi in cui si vuole il nuovo progetto e creare un nuovo file denominato ConversationTranscription.js.

  2. Installare Speech SDK per JavaScript:

    npm install microsoft-cognitiveservices-speech-sdk
    
  3. Copiare il codice seguente 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. Ottenere il file audio di esempio o usare il proprio .wav file. Sostituire katiesteve.wav con il percorso e il nome del .wav file.

    L'applicazione riconosce il riconoscimento vocale da più partecipanti alla conversazione. Il file audio deve contenere più altoparlanti.

  5. Per modificare la lingua di riconoscimento vocale, sostituire en-US con un'altra lingua supportata. Ad esempio, es-ES per spagnolo (Spagna). La lingua predefinita è en-US se non si specifica una lingua. Per informazioni dettagliate su come identificare una delle più lingue che potrebbero essere pronunciate, vedere Identificazione della lingua.

  6. Eseguire la nuova applicazione console per avviare il riconoscimento vocale da un file:

    node.exe ConversationTranscription.js
    

Importante

Assicurarsi di impostare le SPEECH_KEY variabili di ambiente e SPEECH_REGION. Se queste variabili non vengono impostate, l'esempio ha esito negativo e viene visualizzato un messaggio di errore.

La conversazione trascritta deve essere restituita come testo:

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

I relatori vengono identificati come Guest-1, Guest-2 e così via, a seconda del numero di relatori nella conversazione.

Pulire le risorse

È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure per rimuovere la risorsa Voce creata.

Pacchetto della documentazione di riferimento | (download) | Esempi aggiuntivi in GitHub

Speech SDK per Objective-C supporta la trascrizione della conversazione, ma non è ancora stata inclusa una guida qui. Selezionare un altro linguaggio di programmazione per iniziare e apprendere i concetti oppure vedere le informazioni di riferimento e gli esempi di Objective-C collegati dall'inizio di questo articolo.

Pacchetto della documentazione di riferimento | (download) | Esempi aggiuntivi in GitHub

Speech SDK per Swift supporta la trascrizione della conversazione, ma non è ancora stata inclusa una guida qui. Selezionare un altro linguaggio di programmazione per iniziare e ottenere informazioni sui concetti oppure vedere i riferimenti e gli esempi swift collegati dall'inizio di questo articolo.

Pacchetto della documentazione di riferimento | (PyPi) | Esempi aggiuntivi in GitHub

In questo argomento di avvio rapido si esegue un'applicazione per la trascrizione del riconoscimento vocale con la diarizzazione in tempo reale. La diarizzazione distingue tra i diversi relatori che partecipano alla conversazione. Il servizio Voce fornisce informazioni sull'altoparlante che parlava una particolare parte del discorso trascritto.

Le informazioni sull'altoparlante sono incluse nel risultato nel campo ID voce. L'ID voce è un identificatore generico assegnato a ogni partecipante della conversazione dal servizio durante il riconoscimento, poiché vengono identificati parlanti diversi dal contenuto audio fornito.

Suggerimento

È possibile provare il riconoscimento vocale in tempo reale in Speech Studio senza iscriversi o scrivere codice. Tuttavia, Speech Studio non supporta ancora la diarizzazione.

Prerequisiti

Configurare l'ambiente

Speech SDK per Python è disponibile come modulo Python Package Index (PyPI). Speech SDK per Python è compatibile con Windows, Linux e macOS.

Installare una versione di Python dalla versione 3.7 o successiva. Controllare prima di tutto la guida all'installazione dell'SDK per eventuali altri requisiti.

Impostare le variabili di ambiente

L'applicazione deve essere autenticata per accedere alle risorse dei servizi di intelligenza artificiale di Azure. Per l'ambiente di produzione, usare un modo sicuro per archiviare e accedere alle credenziali. Ad esempio, dopo aver ottenere una chiave per la risorsa Voce, scriverla in una nuova variabile di ambiente nel computer locale che esegue l'applicazione.

Suggerimento

Non includere la chiave direttamente nel codice e non pubblicarla pubblicamente. Per altre opzioni di autenticazione, ad esempio Azure Key Vault, vedere Sicurezza dei servizi di intelligenza artificiale di Azure.

Per impostare la variabile di ambiente per la chiave della risorsa Voce, aprire una finestra della console e seguire le istruzioni per il sistema operativo e l'ambiente di sviluppo.

  • Per impostare la SPEECH_KEY variabile di ambiente, sostituire your-key con una delle chiavi per la risorsa.
  • Per impostare la SPEECH_REGION variabile di ambiente, sostituire l'area con una delle aree per la risorsa.
setx SPEECH_KEY your-key
setx SPEECH_REGION your-region

Nota

Se è sufficiente accedere alle variabili di ambiente nella console corrente, è possibile impostare la variabile di setxambiente con set anziché .

Dopo aver aggiunto le variabili di ambiente, potrebbe essere necessario riavviare tutti i programmi che devono leggere la variabile di ambiente, inclusa la finestra della console. Ad esempio, se si usa Visual Studio come editor, riavviare Visual Studio prima di eseguire l'esempio.

Implementare la diarizzazione dal file con la trascrizione della conversazione

Seguire questa procedura per creare una nuova applicazione console.

  1. Aprire una finestra del prompt dei comandi in cui si vuole il nuovo progetto e creare un nuovo file denominato conversation_transcription.py.

  2. Eseguire questo comando per installare Speech SDK:

    pip install azure-cognitiveservices-speech
    
  3. Copiare il codice seguente 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('TRANSCRIBED:')
        if evt.result.reason == speechsdk.ResultReason.RecognizedSpeech:
            print('\tText={}'.format(evt.result.text))
            print('\tSpeaker ID={}'.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_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"
    
        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.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. Ottenere il file audio di esempio o usare il proprio .wav file. Sostituire katiesteve.wav con il percorso e il nome del .wav file.

    L'applicazione riconosce il riconoscimento vocale da più partecipanti alla conversazione. Il file audio deve contenere più altoparlanti.

  5. Per modificare la lingua di riconoscimento vocale, sostituire en-US con un'altra lingua supportata. Ad esempio, es-ES per spagnolo (Spagna). La lingua predefinita è en-US se non si specifica una lingua. Per informazioni dettagliate su come identificare una delle più lingue che potrebbero essere pronunciate, vedere Identificazione della lingua.

  6. Eseguire la nuova applicazione console per avviare la trascrizione della conversazione:

    python conversation_transcription.py
    

Importante

Assicurarsi di impostare le SPEECH_KEY variabili di ambiente e SPEECH_REGION. Se queste variabili non vengono impostate, l'esempio ha esito negativo e viene visualizzato un messaggio di errore.

La conversazione trascritta deve essere restituita come testo:

SessionStarted event
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
CLOSING on ConversationTranscriptionCanceledEventArgs(session_id=92a0abb68636471dac07041b335d9be3, result=ConversationTranscriptionResult(result_id=ad1b1d83b5c742fcacca0692baa8df74, speaker_id=, text=, reason=ResultReason.Canceled))
SessionStopped event
CLOSING on SessionEventArgs(session_id=92a0abb68636471dac07041b335d9be3)

I relatori vengono identificati come Guest-1, Guest-2 e così via, a seconda del numero di relatori nella conversazione.

Pulire le risorse

È possibile usare il portale di Azure o l'interfaccia della riga di comando di Azure per rimuovere la risorsa Voce creata.

Informazioni di riferimento | sull'API REST Riconoscimento vocale in testo per brevi riferimenti | audio Esempi aggiuntivi in GitHub

L'API REST non supporta la trascrizione della conversazione. Selezionare un altro linguaggio o strumento di programmazione nella parte superiore di questa pagina.

L'interfaccia della riga di comando di Voce non supporta la trascrizione della conversazione. Selezionare un altro linguaggio o strumento di programmazione nella parte superiore di questa pagina.

Passaggio successivo