Introduzione al riconoscimento vocaleGet started with speech-to-text

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare Speech SDK in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Passare agli esempi su GitHubSkip to samples on GitHub

Per passare direttamente al codice di esempio, vedere gli esempi di avvio rapido C# in GitHub.If you want to skip straight to sample code, see the C# quickstart samples on GitHub.

PrerequisitiPrerequisites

Questo articolo presuppone che si abbia un account Azure e una sottoscrizione del servizio Voce.This article assumes that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Installare Speech SDKInstall the Speech SDK

Se si vuole solo il nome del pacchetto per iniziare, eseguire Install-Package Microsoft.CognitiveServices.Speech nella console NuGet.If you just want the package name to get started, run Install-Package Microsoft.CognitiveServices.Speech in the NuGet console.

Per le istruzioni di installazione specifiche per la piattaforma, vedere i collegamenti seguenti:For platform-specific installation instructions, see the following links:

Creare una configurazione di VoceCreate a speech configuration

Per chiamare il servizio Voce con Speech SDK, è necessario creare una classe SpeechConfig.To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Questa classe include informazioni sulla sottoscrizione, ad esempio la chiave e l'area associata, l'endpoint, l'host o il token di autorizzazione.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Creare una classe SpeechConfig usando la chiave e l'area.Create a SpeechConfig by using your key and region. Per trovare la coppia chiave-area, vedere Trovare chiavi e area.See the Find keys and region page to find your key-region pair.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
    }
}

Esistono alcuni altri modi per inizializzare una classe SpeechConfig:There are a few other ways that you can initialize a SpeechConfig:

  • Con un endpoint: passare un endpoint del servizio Voce.With an endpoint: pass in a Speech service endpoint. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un host: passare l'indirizzo di un host.With a host: pass in a host address. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un token di autorizzazione: passare un token di autorizzazione e l'area associata.With an authorization token: pass in an authorization token and the associated region.

Nota

Sia che si esegua il riconoscimento vocale, la sintesi vocale, la traduzione o il riconoscimento finalità, sarà sempre necessario creare una configurazione.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Riconoscimento da microfonoRecognize from microphone

Per eseguire il riconoscimento vocale usando il microfono del dispositivo, creare un oggetto AudioConfig usando FromDefaultMicrophoneInput().To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). Quindi, inizializzare una classe SpeechRecognizer, passando la classe audioConfig e speechConfig.Then initialize a SpeechRecognizer, passing your audioConfig and speechConfig.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromMic(SpeechConfig speechConfig)
    {
        using var audioConfig = AudioConfig.FromDefaultMicrophoneInput();
        using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        Console.WriteLine("Speak into your microphone.");
        var result = await recognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
    }

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        await FromMic(speechConfig);
    }
}

Se si vuole usare un dispositivo di input audio specifico, è necessario specificare l'ID del dispositivo nella classe AudioConfig.If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. Informazioni su come ottenere l'ID del dispositivo di input audio.Learn how to get the device ID for your audio input device.

Riconoscimento da fileRecognize from file

Se si vuole specificare un file audio invece di un microfono per il riconoscimento vocale, è comunque necessario creare un oggetto AudioConfig.If you want to recognize speech from an audio file instead of a microphone, you still need to create an AudioConfig. Tuttavia, quando si crea AudioConfig, invece di chiamare FromDefaultMicrophoneInput(), si chiamerà FromWavFileInput() e si passerà il percorso file.However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromFile(SpeechConfig speechConfig)
    {
        using var audioConfig = AudioConfig.FromWavFileInput("PathToFile.wav");
        using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        var result = await recognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
    }

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        await FromFile(speechConfig);
    }
}

Riconoscimento dal flusso in memoriaRecognize from in-memory stream

Per molti casi d'uso, è probabile che i dati audio provengano dall'archiviazione BLOB o che siano già in memoria come byte[] o una struttura di dati non elaborati simile.For many use-cases, it is likely your audio data will be coming from blob storage, or otherwise already be in-memory as a byte[] or similar raw data structure. L'esempio seguente usa una classe PushAudioInputStream per riconoscere la voce, cioè fondamentalmente un flusso di memoria astratto.The following example uses a PushAudioInputStream to recognize speech, which is essentially an abstracted memory stream. Nel codice di esempio vengono eseguite le operazioni seguenti:The sample code does the following:

  • Scrive i dati audio non elaborati (PCM) nella classe PushAudioInputStream usando la funzione Write(), che accetta un byte[].Writes raw audio data (PCM) to the PushAudioInputStream using the Write() function, which accepts a byte[].
  • Legge un file .wav usando un FileReader a scopo dimostrativo, ma se si hanno già dati audio in un byte[], è possibile passare direttamente alla scrittura del contenuto nel flusso di input.Reads a .wav file using a FileReader for demonstration purposes, but if you already have audio data in a byte[], you can skip directly to writing the content to the input stream.
  • Il formato predefinito è 16 bit, 16 KHz e PCM mono.The default format is 16 bit, 16khz mono PCM. Per personalizzare il formato, è possibile passare un oggetto AudioStreamFormat alla classe CreatePushStream() usando la funzione statica AudioStreamFormat.GetWaveFormatPCM(sampleRate, (byte)bitRate, (byte)channels).To customize the format, you can pass an AudioStreamFormat object to CreatePushStream() using the static function AudioStreamFormat.GetWaveFormatPCM(sampleRate, (byte)bitRate, (byte)channels).
using System;
using System.IO;
using System.Threading.Tasks;
using Microsoft.CognitiveServices.Speech;
using Microsoft.CognitiveServices.Speech.Audio;

class Program 
{
    async static Task FromStream(SpeechConfig speechConfig)
    {
        var reader = new BinaryReader(File.OpenRead("PathToFile.wav"));
        using var audioInputStream = AudioInputStream.CreatePushStream();
        using var audioConfig = AudioConfig.FromStreamInput(audioInputStream);
        using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        byte[] readBytes;
        do
        {
            readBytes = reader.ReadBytes(1024);
            audioInputStream.Write(readBytes, readBytes.Length);
        } while (readBytes.Length > 0);

        var result = await recognizer.RecognizeOnceAsync();
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
    }

    async static Task Main(string[] args)
    {
        var speechConfig = SpeechConfig.FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        await FromStream(speechConfig);
    }
}

L'uso di un flusso push come input presuppone che i dati audio siano un PCM non elaborato, ad esempio ignorano le intestazioni.Using a push stream as input assumes that the audio data is a raw PCM, e.g. skipping any headers. L'API continuerà a funzionare in determinati casi se l'intestazione non è stata ignorata, ma per ottenere risultati ottimali è consigliabile implementare la logica per leggere le intestazioni, in modo che il byte[] cominci all'inizio dei dati audio.The API will still work in certain cases if the header has not been skipped, but for the best results consider implementing logic to read off the headers so the byte[] starts at the start of the audio data.

Gestione degli erroriError handling

Gli esempi precedenti ottengono semplicemente il testo riconosciuto da result.text, ma per gestire gli errori e altre risposte è necessario scrivere del codice per elaborare il risultato.The previous examples simply get the recognized text from result.text, but to handle errors and other responses, you'll need to write some code to handle the result. Il seguente codice valuta la proprietà result.Reason e:The following code evaluates the result.Reason property and:

  • Stampa il risultato del riconoscimento: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Se non esiste una corrispondenza di riconoscimento, informa l'utente: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Se viene rilevato un errore, stampa il messaggio di errore: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.Reason)
{
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        break;
    case ResultReason.NoMatch:
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        var cancellation = CancellationDetails.FromResult(result);
        Console.WriteLine($"CANCELED: Reason={cancellation.Reason}");

        if (cancellation.Reason == CancellationReason.Error)
        {
            Console.WriteLine($"CANCELED: ErrorCode={cancellation.ErrorCode}");
            Console.WriteLine($"CANCELED: ErrorDetails={cancellation.ErrorDetails}");
            Console.WriteLine($"CANCELED: Did you update the subscription info?");
        }
        break;
}

Riconoscimento continuoContinuous recognition

Gli esempi precedenti usano il riconoscimento singolo, che riconosce una singola espressione.The previous examples use single-shot recognition, which recognizes a single utterance. La fine di una singola espressione viene determinata restando in ascolto del silenzio al termine o finché non vengono elaborati al massimo 15 secondi di audio.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

Al contrario, si usa il riconoscimento continuo quando si vuole controllare il momento in cui interrompere il riconoscimento.In contrast, continuous recognition is used when you want to control when to stop recognizing. Per ottenere i risultati del riconoscimento, è necessario sottoscrivere gli eventi Recognizing, Recognized e Canceled.It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Per arrestare il riconoscimento, è necessario chiamare StopContinuousRecognitionAsync.To stop recognition, you must call StopContinuousRecognitionAsync. Ecco un esempio di riconoscimento continuo eseguito su un file di input audio.Here's an example of how continuous recognition is performed on an audio input file.

Per iniziare, definire l'input e inizializzare un SpeechRecognizer:Start by defining the input and initializing a SpeechRecognizer:

using var audioConfig = AudioConfig.FromWavFileInput("YourAudioFile.wav");
using var recognizer = new SpeechRecognizer(speechConfig, audioConfig);

Quindi, creare una proprietà TaskCompletionSource<int> per gestire lo stato del riconoscimento vocale.Then create a TaskCompletionSource<int> to manage the state of speech recognition.

var stopRecognition = new TaskCompletionSource<int>();

Infine, sottoscrivere gli eventi inviati dal SpeechRecognizer.Next, subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: segnale per gli eventi contenenti i risultati del riconoscimento intermedio.Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: segnale per gli eventi contenenti i risultati del riconoscimento finale, che indicano un tentativo di riconoscimento riuscito.Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: segnale per gli eventi che indicano la fine di una sessione di riconoscimento (operazione).SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: segnale per gli eventi contenenti risultati di riconoscimento annullati (a indicare un tentativo di riconoscimento annullato in seguito a una richiesta di annullamento diretta o, in alternativa, a un errore di trasporto o di protocollo).Canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer.Recognizing += (s, e) =>
{
    Console.WriteLine($"RECOGNIZING: Text={e.Result.Text}");
};

recognizer.Recognized += (s, e) =>
{
    if (e.Result.Reason == ResultReason.RecognizedSpeech)
    {
        Console.WriteLine($"RECOGNIZED: Text={e.Result.Text}");
    }
    else if (e.Result.Reason == ResultReason.NoMatch)
    {
        Console.WriteLine($"NOMATCH: Speech could not be recognized.");
    }
};

recognizer.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 update the subscription info?");
    }

    stopRecognition.TrySetResult(0);
};

recognizer.SessionStopped += (s, e) =>
{
    Console.WriteLine("\n    Session stopped event.");
    stopRecognition.TrySetResult(0);
};

Al termine della configurazione, chiamare StartContinuousRecognitionAsync per avviare il riconoscimento.With everything set up, call StartContinuousRecognitionAsync to start recognizing.

await recognizer.StartContinuousRecognitionAsync();

// Waits for completion. Use Task.WaitAny to keep the task rooted.
Task.WaitAny(new[] { stopRecognition.Task });

// make the following call at some point to stop recognition.
// await recognizer.StopContinuousRecognitionAsync();

Modalità dettaturaDictation mode

Quando si usa il riconoscimento continuo, è possibile abilitare l'elaborazione della dettatura usando la corrispondente funzione.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. In questa modalità l'istanza di SpeechConfig interpreta le descrizioni testuali delle strutture di frasi, ad esempio la punteggiatura.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Ad esempio, l'espressione "Vivi in città punto interrogativo" verrebbe interpretata come "Vivi in città?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Per abilitare la modalità di dettatura, usare il metodo EnableDictation in SpeechConfig.To enable dictation mode, use the EnableDictation method on your SpeechConfig.

speechConfig.EnableDictation();

Cambiare la lingua di origineChange source language

Un'attività comune per il riconoscimento vocale è la specifica della lingua di input (o di origine).A common task for speech recognition is specifying the input (or source) language. Vediamo come cambiare la lingua di input in italiano.Let's take a look at how you would change the input language to Italian. Nel codice trovare SpeechConfig, quindi aggiungere questa riga al di sotto.In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.SpeechRecognitionLanguage = "it-IT";

La proprietà SpeechRecognitionLanguage si aspetta una stringa in formato è prevista una stringa di formato lingua-impostazioni locali.The SpeechRecognitionLanguage property expects a language-locale format string. È possibile specificare qualsiasi valore nella colonna Locale nell'elenco di impostazioni locali/lingue supportate.You can provide any value in the Locale column in the list of supported locales/languages.

Migliorare l'accuratezza del riconoscimentoImprove recognition accuracy

Gli elenchi di frasi vengono usati per identificare frasi note nei dati audio, ad esempio il nome di una persona o una specifica località.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Se si fornisce un elenco di frasi, è possibile migliorare l'accuratezza del riconoscimento vocale.By providing a list of phrases, you improve the accuracy of speech recognition.

Se ad esempio è presente un comando "Sposta in" e una delle possibili destinazioni pronunciabili è "Vaso", è possibile aggiungere la voce "Sposta in vaso".As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". L'aggiunta di una frase aumenta la probabilità che, durante il riconoscimento dell'audio, venga riconosciuta la frase "Sposta in vaso" invece di "Sposta invaso"Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

All'elenco di frasi è possibile aggiungere singole parole o frasi complete.Single words or complete phrases can be added to a Phrase List. Una voce di un elenco di frasi viene usata per migliorare il riconoscimento di parole e frasi dell'elenco, anche quando le voci capitano nel mezzo di un'espressione.During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

Importante

La funzionalità dell'elenco di frasi è disponibile nelle lingue seguenti: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CNThe Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Per usare un elenco di frasi, creare prima di tutto un oggetto PhraseListGrammar, quindi aggiungere parole o frasi specifiche con AddPhrase.To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Tutte le modifiche apportate a PhraseListGrammar diventano effettive al successivo riconoscimento o dopo una riconnessione al servizio Voce.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

var phraseList = PhraseListGrammar.FromRecognizer(recognizer);
phraseList.AddPhrase("Supercalifragilisticexpialidocious");

Se è necessario cancellare l'elenco di frasi:If you need to clear your phrase list:

phraseList.Clear();

Altre opzioni per migliorare l'accuratezza del riconoscimentoOther options to improve recognition accuracy

Gli elenchi di frasi sono solo una delle opzioni disponibili per migliorare l'accuratezza del riconoscimento.Phrase lists are only one option to improve recognition accuracy. È anche possibile:You can also:

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare Speech SDK in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Passare agli esempi su GitHubSkip to samples on GitHub

Per passare direttamente al codice di esempio, vedere gli esempi di avvio rapido C++ in GitHub.If you want to skip straight to sample code, see the C++ quickstart samples on GitHub.

PrerequisitiPrerequisites

Questo articolo presuppone che si abbia un account Azure e una sottoscrizione del servizio Voce.This article assumes that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Installare Speech SDKInstall the Speech SDK

Prima di poter eseguire qualsiasi operazione, è necessario installare Speech SDK.Before you can do anything, you'll need to install the Speech SDK. A seconda della piattaforma, usare le istruzioni seguenti:Depending on your platform, use the following instructions:

Creare una configurazione di VoceCreate a speech configuration

Per chiamare il servizio Voce con Speech SDK, è necessario creare una classe SpeechConfig.To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Questa classe include informazioni sulla sottoscrizione, ad esempio la chiave e l'area associata, l'endpoint, l'host o il token di autorizzazione.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Creare una classe SpeechConfig usando la chiave e l'area.Create a SpeechConfig by using your key and region. Per trovare la coppia chiave-area, vedere Trovare chiavi e area.See the Find keys and region page to find your key-region pair.

using namespace std;
using namespace Microsoft::CognitiveServices::Speech;

auto config = SpeechConfig::FromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

Esistono alcuni altri modi per inizializzare una classe SpeechConfig:There are a few other ways that you can initialize a SpeechConfig:

  • Con un endpoint: passare un endpoint del servizio Voce.With an endpoint: pass in a Speech service endpoint. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un host: passare l'indirizzo di un host.With a host: pass in a host address. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un token di autorizzazione: passare un token di autorizzazione e l'area associata.With an authorization token: pass in an authorization token and the associated region.

Nota

Sia che si esegua il riconoscimento vocale, la sintesi vocale, la traduzione o il riconoscimento finalità, sarà sempre necessario creare una configurazione.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Riconoscimento da microfonoRecognize from microphone

Per eseguire il riconoscimento vocale usando il microfono del dispositivo, creare un oggetto AudioConfig usando FromDefaultMicrophoneInput().To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). Quindi, inizializzare una classe SpeechRecognizer, passando la classe audioConfig e config.Then initialize a SpeechRecognizer, passing your audioConfig and config.

using namespace Microsoft::CognitiveServices::Speech::Audio;

auto audioConfig = AudioConfig::FromDefaultMicrophoneInput();
auto recognizer = SpeechRecognizer::FromConfig(config, audioConfig);

cout << "Speak into your microphone." << std::endl;
auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;

Se si vuole usare un dispositivo di input audio specifico, è necessario specificare l'ID del dispositivo nella classe AudioConfig. Informazioni su come ottenere l'ID del dispositivo di input audio.Learn how to get the device ID for your audio input device.

Riconoscimento da fileRecognize from file

Se si vuole specificare un file audio invece di usare un microfono per il riconoscimento vocale, è comunque necessario creare un oggetto AudioConfig.If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. Tuttavia, quando si crea AudioConfig, invece di chiamare FromDefaultMicrophoneInput(), si chiamerà FromWavFileInput() e si passerà il percorso file.However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using namespace Microsoft::CognitiveServices::Speech::Audio;

auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);

auto result = recognizer->RecognizeOnceAsync().get();
cout << "RECOGNIZED: Text=" << result->Text << std::endl;

Riconoscimento vocaleRecognize speech

La classe Recognizer per Speech SDK per C++ espone alcuni metodi che è possibile usare per il riconoscimento vocale.The Recognizer class for the Speech SDK for C++ exposes a few methods that you can use for speech recognition.

Riconoscimento singoloSingle-shot recognition

Il riconoscimento singolo riconosce in modo asincrono una singola espressione.Single-shot recognition asynchronously recognizes a single utterance. La fine di una singola espressione viene determinata restando in ascolto del silenzio al termine o finché non vengono elaborati al massimo 15 secondi di audio.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed. Ecco un esempio di riconoscimento singolo asincrono usando RecognizeOnceAsync:Here's an example of asynchronous single-shot recognition using RecognizeOnceAsync:

auto result = recognizer->RecognizeOnceAsync().get();

Per gestire il risultato è necessario scrivere del codice.You'll need to write some code to handle the result. Questo esempio valuta result->Reason:This sample evaluates the result->Reason:

  • Stampa il risultato del riconoscimento: ResultReason::RecognizedSpeechPrints the recognition result: ResultReason::RecognizedSpeech
  • Se non esiste una corrispondenza di riconoscimento, informa l'utente: ResultReason::NoMatchIf there is no recognition match, inform the user: ResultReason::NoMatch
  • Se viene rilevato un errore, stampa il messaggio di errore: ResultReason::CanceledIf an error is encountered, print the error message: ResultReason::Canceled
switch (result->Reason)
{
    case ResultReason::RecognizedSpeech:
        cout << "We recognized: " << result->Text << std::endl;
        break;
    case ResultReason::NoMatch:
        cout << "NOMATCH: Speech could not be recognized." << std::endl;
        break;
    case ResultReason::Canceled:
        {
            auto cancellation = CancellationDetails::FromResult(result);
            cout << "CANCELED: Reason=" << (int)cancellation->Reason << std::endl;
    
            if (cancellation->Reason == CancellationReason::Error) {
                cout << "CANCELED: ErrorCode= " << (int)cancellation->ErrorCode << std::endl;
                cout << "CANCELED: ErrorDetails=" << cancellation->ErrorDetails << std::endl;
                cout << "CANCELED: Did you update the subscription info?" << std::endl;
            }
        }
        break;
    default:
        break;
}

Riconoscimento continuoContinuous recognition

Il riconoscimento continuo è un po' più impegnativo rispetto al riconoscimento singolo.Continuous recognition is a bit more involved than single-shot recognition. Per ottenere i risultati del riconoscimento, è necessario sottoscrivere gli eventi Recognizing, Recognized e Canceled.It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Per arrestare il riconoscimento, è necessario chiamare StopContinuousRecognitionAsync.To stop recognition, you must call StopContinuousRecognitionAsync. Ecco un esempio di riconoscimento continuo eseguito su un file di input audio.Here's an example of how continuous recognition is performed on an audio input file.

Per iniziare, definire l'input e inizializzare SpeechRecognizer:Let's start by defining the input and initializing a SpeechRecognizer:

auto audioInput = AudioConfig::FromWavFileInput("YourAudioFile.wav");
auto recognizer = SpeechRecognizer::FromConfig(config, audioInput);

Successivamente, creare una variabile per gestire lo stato del riconoscimento vocale.Next, let's create a variable to manage the state of speech recognition. Per iniziare, verrà dichiarato un oggetto promise<void>, dal momento che all'inizio si può ovviamente presupporre che il riconoscimento non sia terminato.To start, we'll declare a promise<void>, since at the start of recognition we can safely assume that it's not finished.

promise<void> recognitionEnd;

Verranno sottoscritti gli eventi inviati da SpeechRecognizer.We'll subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: segnale per gli eventi contenenti i risultati del riconoscimento intermedio.Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: segnale per gli eventi contenenti i risultati del riconoscimento finale, che indicano un tentativo di riconoscimento riuscito.Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: segnale per gli eventi che indicano la fine di una sessione di riconoscimento (operazione).SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: segnale per gli eventi contenenti risultati di riconoscimento annullati (a indicare un tentativo di riconoscimento annullato in seguito a una richiesta di annullamento diretta o, in alternativa, a un errore di trasporto o di protocollo).Canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer->Recognizing.Connect([](const SpeechRecognitionEventArgs& e)
    {
        cout << "Recognizing:" << e.Result->Text << std::endl;
    });

recognizer->Recognized.Connect([](const SpeechRecognitionEventArgs& e)
    {
        if (e.Result->Reason == ResultReason::RecognizedSpeech)
        {
            cout << "RECOGNIZED: Text=" << e.Result->Text 
                 << " (text could not be translated)" << std::endl;
        }
        else if (e.Result->Reason == ResultReason::NoMatch)
        {
            cout << "NOMATCH: Speech could not be recognized." << std::endl;
        }
    });

recognizer->Canceled.Connect([&recognitionEnd](const SpeechRecognitionCanceledEventArgs& e)
    {
        cout << "CANCELED: Reason=" << (int)e.Reason << std::endl;
        if (e.Reason == CancellationReason::Error)
        {
            cout << "CANCELED: ErrorCode=" << (int)e.ErrorCode << "\n"
                 << "CANCELED: ErrorDetails=" << e.ErrorDetails << "\n"
                 << "CANCELED: Did you update the subscription info?" << std::endl;

            recognitionEnd.set_value(); // Notify to stop recognition.
        }
    });

recognizer->SessionStopped.Connect([&recognitionEnd](const SessionEventArgs& e)
    {
        cout << "Session stopped.";
        recognitionEnd.set_value(); // Notify to stop recognition.
    });

Con tutti gli elementi configurati, è possibile chiamare StopContinuousRecognitionAsync.With everything set up, we can call StopContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer->StartContinuousRecognitionAsync().get();

// Waits for recognition end.
recognitionEnd.get_future().get();

// Stops recognition.
recognizer->StopContinuousRecognitionAsync().get();

Modalità dettaturaDictation mode

Quando si usa il riconoscimento continuo, è possibile abilitare l'elaborazione della dettatura usando la corrispondente funzione.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. In questa modalità l'istanza di SpeechConfig interpreta le descrizioni testuali delle strutture di frasi, ad esempio la punteggiatura.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Ad esempio, l'espressione "Vivi in città punto interrogativo" verrebbe interpretata come "Vivi in città?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Per abilitare la modalità di dettatura, usare il metodo EnableDictation in SpeechConfig.To enable dictation mode, use the EnableDictation method on your SpeechConfig.

config->EnableDictation();

Cambiare la lingua di origineChange source language

Un'attività comune per il riconoscimento vocale è la specifica della lingua di input (o di origine).A common task for speech recognition is specifying the input (or source) language. Vediamo come cambiare la lingua di input in tedesco.Let's take a look at how you would change the input language to German. Nel codice trovare SpeechConfig, quindi aggiungere questa riga al di sotto.In your code, find your SpeechConfig, then add this line directly below it.

config->SetSpeechRecognitionLanguage("de-DE");

SetSpeechRecognitionLanguage è un parametro che accetta una stringa come argomento.SetSpeechRecognitionLanguage is a parameter that takes a string as an argument. È possibile specificare qualsiasi valore nell'elenco di impostazioni locali/lingue supportate.You can provide any value in the list of supported locales/languages.

Migliorare l'accuratezza del riconoscimentoImprove recognition accuracy

Gli elenchi di frasi vengono usati per identificare frasi note nei dati audio, ad esempio il nome di una persona o una specifica località.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Se si fornisce un elenco di frasi, è possibile migliorare l'accuratezza del riconoscimento vocale.By providing a list of phrases, you improve the accuracy of speech recognition.

Se ad esempio è presente un comando "Sposta in" e una delle possibili destinazioni pronunciabili è "Vaso", è possibile aggiungere la voce "Sposta in vaso".As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". L'aggiunta di una frase aumenta la probabilità che, durante il riconoscimento dell'audio, venga riconosciuta la frase "Sposta in vaso" invece di "Sposta invaso"Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

All'elenco di frasi è possibile aggiungere singole parole o frasi complete.Single words or complete phrases can be added to a Phrase List. Una voce di un elenco di frasi viene usata per migliorare il riconoscimento di parole e frasi dell'elenco, anche quando le voci capitano nel mezzo di un'espressione.During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

Importante

La funzionalità dell'elenco di frasi è disponibile nelle lingue seguenti: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CNThe Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Per usare un elenco di frasi, creare prima di tutto un oggetto PhraseListGrammar, quindi aggiungere parole o frasi specifiche con AddPhrase.To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Tutte le modifiche apportate a PhraseListGrammar diventano effettive al successivo riconoscimento o dopo una riconnessione al servizio Voce.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

auto phraseListGrammar = PhraseListGrammar::FromRecognizer(recognizer);
phraseListGrammar->AddPhrase("Supercalifragilisticexpialidocious");

Se è necessario cancellare l'elenco di frasi:If you need to clear your phrase list:

phraseListGrammar->Clear();

Altre opzioni per migliorare l'accuratezza del riconoscimentoOther options to improve recognition accuracy

Gli elenchi di frasi sono solo una delle opzioni disponibili per migliorare l'accuratezza del riconoscimento.Phrase lists are only one option to improve recognition accuracy. È anche possibile:You can also:

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare Speech SDK in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Passare agli esempi su GitHubSkip to samples on GitHub

Per passare direttamente al codice di esempio, vedere gli esempi di avvio rapido Go in GitHub.If you want to skip straight to sample code, see the Go quickstart samples on GitHub.

PrerequisitiPrerequisites

Questo articolo presuppone che si abbia un account Azure e una sottoscrizione del servizio Voce.This article assumes that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Installare Speech SDKInstall the Speech SDK

Prima di poter eseguire qualsiasi operazione, è necessario installare Speech SDK per Go.Before you can do anything, you'll need to install the Speech SDK for Go.

Riconoscimento vocale da microfonoSpeech-to-text from microphone

Usare l'esempio di codice seguente per eseguire il riconoscimento vocale dal microfono del dispositivo predefinito.Use the following code sample to run speech recognition from your default device microphone. Sostituire le variabili subscription e region con le chiavi della sottoscrizione e dell'area.Replace the variables subscription and region with your subscription and region keys. Eseguendo lo script viene avviata una sessione di riconoscimento vocale sul microfono predefinito e sul testo di output.Running the script will start a recognition session on your default microphone and output text.

package main

import (
    "bufio"
    "fmt"
    "os"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

func sessionStartedHandler(event speech.SessionEventArgs) {
    defer event.Close()
    fmt.Println("Session Started (ID=", event.SessionID, ")")
}

func sessionStoppedHandler(event speech.SessionEventArgs) {
    defer event.Close()
    fmt.Println("Session Stopped (ID=", event.SessionID, ")")
}

func recognizingHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognizing:", event.Result.Text)
}

func recognizedHandler(event speech.SpeechRecognitionEventArgs) {
    defer event.Close()
    fmt.Println("Recognized:", event.Result.Text)
}

func cancelledHandler(event speech.SpeechRecognitionCanceledEventArgs) {
    defer event.Close()
    fmt.Println("Received a cancellation: ", event.ErrorDetails)
}

func main() {
    subscription :=  "YOUR_SUBSCRIPTION_KEY"
    region := "YOUR_SUBSCRIPTIONKEY_REGION"

    audioConfig, err := audio.NewAudioConfigFromDefaultMicrophoneInput()
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer audioConfig.Close()
    config, err := speech.NewSpeechConfigFromSubscription(subscription, region)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer config.Close()
    speechRecognizer, err := speech.NewSpeechRecognizerFromConfig(config, audioConfig)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer speechRecognizer.Close()
    speechRecognizer.SessionStarted(sessionStartedHandler)
    speechRecognizer.SessionStopped(sessionStoppedHandler)
    speechRecognizer.Recognizing(recognizingHandler)
    speechRecognizer.Recognized(recognizedHandler)
    speechRecognizer.Canceled(cancelledHandler)
    speechRecognizer.StartContinuousRecognitionAsync()
    defer speechRecognizer.StopContinuousRecognitionAsync()
    bufio.NewReader(os.Stdin).ReadBytes('\n')
}

Eseguire i comandi seguenti per creare un file go.mod che si collega ai componenti ospitati in GitHub.Run the following commands to create a go.mod file that links to components hosted on Github.

go mod init quickstart
go get github.com/Microsoft/cognitive-services-speech-sdk-go

Ora compilare ed eseguire il codice.Now build and run the code.

go build
go run quickstart

Per informazioni dettagliate sulle classi SpeechConfig e SpeechRecognizer, vedere la documentazione di riferimento.See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Riconoscimento vocale da file audioSpeech-to-text from audio file

Usare l'esempio seguente per eseguire il riconoscimento vocale da un file audio.Use the following sample to run speech recognition from an audio file. Sostituire le variabili subscription e region con le chiavi della sottoscrizione e dell'area.Replace the variables subscription and region with your subscription and region keys. Sostituire inoltre la variabile file con il percorso di un file WAV.Additionally, replace the variable file with a path to a .wav file. Con l'esecuzione dello script viene eseguito il riconoscimento vocale dal file e viene restituito il risultato del testo.Running the script will recognize speech from the file, and output the text result.

package main

import (
    "fmt"
    "time"

    "github.com/Microsoft/cognitive-services-speech-sdk-go/audio"
    "github.com/Microsoft/cognitive-services-speech-sdk-go/speech"
)

func main() {
    subscription :=  "YOUR_SUBSCRIPTION_KEY"
    region := "YOUR_SUBSCRIPTIONKEY_REGION"
    file := "path/to/file.wav"

    audioConfig, err := audio.NewAudioConfigFromWavFileInput(file)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer audioConfig.Close()
    config, err := speech.NewSpeechConfigFromSubscription(subscription, region)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer config.Close()
    speechRecognizer, err := speech.NewSpeechRecognizerFromConfig(config, audioConfig)
    if err != nil {
        fmt.Println("Got an error: ", err)
        return
    }
    defer speechRecognizer.Close()
    speechRecognizer.SessionStarted(func(event speech.SessionEventArgs) {
        defer event.Close()
        fmt.Println("Session Started (ID=", event.SessionID, ")")
    })
    speechRecognizer.SessionStopped(func(event speech.SessionEventArgs) {
        defer event.Close()
        fmt.Println("Session Stopped (ID=", event.SessionID, ")")
    })

    task := speechRecognizer.RecognizeOnceAsync()
    var outcome speech.SpeechRecognitionOutcome
    select {
    case outcome = <-task:
    case <-time.After(5 * time.Second):
        fmt.Println("Timed out")
        return
    }
    defer outcome.Close()
    if outcome.Error != nil {
        fmt.Println("Got an error: ", outcome.Error)
    }
    fmt.Println("Got a recognition!")
    fmt.Println(outcome.Result.Text)
}

Eseguire i comandi seguenti per creare un file go.mod che si collega ai componenti ospitati in GitHub.Run the following commands to create a go.mod file that links to components hosted on Github.

go mod init quickstart
go get github.com/Microsoft/cognitive-services-speech-sdk-go

Ora compilare ed eseguire il codice.Now build and run the code.

go build
go run quickstart

Per informazioni dettagliate sulle classi SpeechConfig e SpeechRecognizer, vedere la documentazione di riferimento.See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare Speech SDK in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Passare agli esempi su GitHubSkip to samples on GitHub

Per passare direttamente al codice di esempio, vedere gli esempi di avvio rapido Java in GitHub.If you want to skip straight to sample code, see the Java quickstart samples on GitHub.

PrerequisitiPrerequisites

Questo articolo presuppone che si abbia un account Azure e una sottoscrizione del servizio Voce.This article assumes that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Installare Speech SDKInstall the Speech SDK

Prima di poter eseguire qualsiasi operazione, è necessario installare Speech SDK.Before you can do anything, you'll need to install the Speech SDK. A seconda della piattaforma, usare le istruzioni seguenti:Depending on your platform, use the following instructions:

Creare una configurazione di VoceCreate a speech configuration

Per chiamare il servizio Voce con Speech SDK, è necessario creare una classe SpeechConfig.To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Questa classe include informazioni sulla sottoscrizione, ad esempio la chiave e l'area associata, l'endpoint, l'host o il token di autorizzazione.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Creare una classe SpeechConfig usando la chiave e l'area.Create a SpeechConfig by using your key and region. Per trovare la coppia chiave-area, vedere Trovare chiavi e area.See the Find keys and region page to find your key-region pair.

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
    }
}

Esistono alcuni altri modi per inizializzare una classe SpeechConfig:There are a few other ways that you can initialize a SpeechConfig:

  • Con un endpoint: passare un endpoint del servizio Voce.With an endpoint: pass in a Speech service endpoint. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un host: passare l'indirizzo di un host.With a host: pass in a host address. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un token di autorizzazione: passare un token di autorizzazione e l'area associata.With an authorization token: pass in an authorization token and the associated region.

Nota

Sia che si esegua il riconoscimento vocale, la sintesi vocale, la traduzione o il riconoscimento finalità, sarà sempre necessario creare una configurazione.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Riconoscimento da microfonoRecognize from microphone

Per eseguire il riconoscimento vocale usando il microfono del dispositivo, creare un oggetto AudioConfig usando fromDefaultMicrophoneInput().To recognize speech using your device microphone, create an AudioConfig using fromDefaultMicrophoneInput(). Quindi, inizializzare una classe SpeechRecognizer, passando la classe audioConfig e config.Then initialize a SpeechRecognizer, passing your audioConfig and config.

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        fromMic(speechConfig);
    }

    public static void fromMic(SpeechConfig speechConfig) throws InterruptedException, ExecutionException {
        AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput();
        SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, audioConfig);

        System.out.println("Speak into your microphone.");
        Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
        SpeechRecognitionResult result = task.get();
        System.out.println("RECOGNIZED: Text=" + result.getText());
    }
}

Se si vuole usare un dispositivo di input audio specifico, è necessario specificare l'ID del dispositivo nella classe AudioConfig. Informazioni su come ottenere l'ID del dispositivo di input audio.Learn how to get the device ID for your audio input device.

Riconoscimento da fileRecognize from file

Se si vuole specificare un file audio invece di usare un microfono per il riconoscimento vocale, è comunque necessario creare un oggetto AudioConfig.If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. Tuttavia, quando si crea AudioConfig, invece di chiamare fromDefaultMicrophoneInput(), si chiamerà fromWavFileInput() e si passerà il percorso file.However, when you create the AudioConfig, instead of calling fromDefaultMicrophoneInput(), call fromWavFileInput() and pass the file path.

import com.microsoft.cognitiveservices.speech.*;
import com.microsoft.cognitiveservices.speech.audio.AudioConfig;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;

public class Program {
    public static void main(String[] args) throws InterruptedException, ExecutionException {
        SpeechConfig speechConfig = SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");
        fromFile(speechConfig);
    }

    public static void fromFile(SpeechConfig speechConfig) throws InterruptedException, ExecutionException {
        AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
        SpeechRecognizer recognizer = new SpeechRecognizer(speechConfig, audioConfig);
        
        Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
        SpeechRecognitionResult result = task.get();
        System.out.println("RECOGNIZED: Text=" + result.getText());
    }
}

Gestione degli erroriError handling

Gli esempi precedenti ottengono semplicemente il testo riconosciuto con result.getText(), ma per gestire gli errori e altre risposte è necessario scrivere del codice per elaborare il risultato.The previous examples simply get the recognized text using result.getText(), but to handle errors and other responses, you'll need to write some code to handle the result. Nell'esempio seguente viene valutato come result.getReason() e:The following example evaluates result.getReason() and:

  • Stampa il risultato del riconoscimento: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Se non esiste una corrispondenza di riconoscimento, informa l'utente: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Se viene rilevato un errore, stampa il messaggio di errore: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.getReason()) {
    case ResultReason.RecognizedSpeech:
        System.out.println("We recognized: " + result.getText());
        exitCode = 0;
        break;
    case ResultReason.NoMatch:
        System.out.println("NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled: {
            CancellationDetails cancellation = CancellationDetails.fromResult(result);
            System.out.println("CANCELED: Reason=" + cancellation.getReason());

            if (cancellation.getReason() == CancellationReason.Error) {
                System.out.println("CANCELED: ErrorCode=" + cancellation.getErrorCode());
                System.out.println("CANCELED: ErrorDetails=" + cancellation.getErrorDetails());
                System.out.println("CANCELED: Did you update the subscription info?");
            }
        }
        break;
}

Riconoscimento continuoContinuous recognition

Gli esempi precedenti usano il riconoscimento singolo, che riconosce una singola espressione.The previous examples use single-shot recognition, which recognizes a single utterance. La fine di una singola espressione viene determinata restando in ascolto del silenzio al termine o finché non vengono elaborati al massimo 15 secondi di audio.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

Al contrario, si usa il riconoscimento continuo quando si vuole controllare il momento in cui interrompere il riconoscimento.In contrast, continuous recognition is used when you want to control when to stop recognizing. Per ottenere i risultati del riconoscimento, è necessario sottoscrivere gli eventi recognizing, recognized e canceled.It requires you to subscribe to the recognizing, recognized, and canceled events to get the recognition results. Per arrestare il riconoscimento, è necessario chiamare stopContinuousRecognitionAsync.To stop recognition, you must call stopContinuousRecognitionAsync. Ecco un esempio di riconoscimento continuo eseguito su un file di input audio.Here's an example of how continuous recognition is performed on an audio input file.

Per iniziare, definire l'input e inizializzare SpeechRecognizer:Let's start by defining the input and initializing a SpeechRecognizer:

AudioConfig audioConfig = AudioConfig.fromWavFileInput("YourAudioFile.wav");
SpeechRecognizer recognizer = new SpeechRecognizer(config, audioConfig);

Successivamente, creare una variabile per gestire lo stato del riconoscimento vocale.Next, let's create a variable to manage the state of speech recognition. Per iniziare, verrà dichiarato un oggetto Semaphore nell'ambito della classe.To start, we'll declare a Semaphore at the class scope.

private static Semaphore stopTranslationWithFileSemaphore;

Verranno sottoscritti gli eventi inviati da SpeechRecognizer.We'll subscribe to the events sent from the SpeechRecognizer.

  • recognizing: segnale per gli eventi contenenti i risultati del riconoscimento intermedio.recognizing: Signal for events containing intermediate recognition results.
  • recognized: segnale per gli eventi contenenti i risultati del riconoscimento finale, che indicano un tentativo di riconoscimento riuscito.recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: segnale per gli eventi che indicano la fine di una sessione di riconoscimento (operazione).sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: segnale per gli eventi contenenti risultati di riconoscimento annullati (a indicare un tentativo di riconoscimento annullato in seguito a una richiesta di annullamento diretta o, in alternativa, a un errore di trasporto o di protocollo).canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
// First initialize the semaphore.
stopTranslationWithFileSemaphore = new Semaphore(0);

recognizer.recognizing.addEventListener((s, e) -> {
    System.out.println("RECOGNIZING: Text=" + e.getResult().getText());
});

recognizer.recognized.addEventListener((s, e) -> {
    if (e.getResult().getReason() == ResultReason.RecognizedSpeech) {
        System.out.println("RECOGNIZED: Text=" + e.getResult().getText());
    }
    else if (e.getResult().getReason() == ResultReason.NoMatch) {
        System.out.println("NOMATCH: Speech could not be recognized.");
    }
});

recognizer.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?");
    }

    stopTranslationWithFileSemaphore.release();
});

recognizer.sessionStopped.addEventListener((s, e) -> {
    System.out.println("\n    Session stopped event.");
    stopTranslationWithFileSemaphore.release();
});

Con tutti gli elementi configurati, è possibile chiamare startContinuousRecognitionAsync.With everything set up, we can call startContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
recognizer.startContinuousRecognitionAsync().get();

// Waits for completion.
stopTranslationWithFileSemaphore.acquire();

// Stops recognition.
recognizer.stopContinuousRecognitionAsync().get();

Modalità dettaturaDictation mode

Quando si usa il riconoscimento continuo, è possibile abilitare l'elaborazione della dettatura usando la corrispondente funzione.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. In questa modalità l'istanza di SpeechConfig interpreta le descrizioni testuali delle strutture di frasi, ad esempio la punteggiatura.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Ad esempio, l'espressione "Vivi in città punto interrogativo" verrebbe interpretata come "Vivi in città?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Per abilitare la modalità di dettatura, usare il metodo enableDictation in SpeechConfig.To enable dictation mode, use the enableDictation method on your SpeechConfig.

config.enableDictation();

Cambiare la lingua di origineChange source language

Un'attività comune per il riconoscimento vocale è la specifica della lingua di input (o di origine).A common task for speech recognition is specifying the input (or source) language. Vediamo come cambiare la lingua di input in francese.Let's take a look at how you would change the input language to French. Nel codice trovare SpeechConfig, quindi aggiungere questa riga al di sotto.In your code, find your SpeechConfig, then add this line directly below it.

config.setSpeechRecognitionLanguage("fr-FR");

setSpeechRecognitionLanguage è un parametro che accetta una stringa come argomento.setSpeechRecognitionLanguage is a parameter that takes a string as an argument. È possibile specificare qualsiasi valore nell'elenco di impostazioni locali/lingue supportate.You can provide any value in the list of supported locales/languages.

Migliorare l'accuratezza del riconoscimentoImprove recognition accuracy

Gli elenchi di frasi vengono usati per identificare frasi note nei dati audio, ad esempio il nome di una persona o una specifica località.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Se si fornisce un elenco di frasi, è possibile migliorare l'accuratezza del riconoscimento vocale.By providing a list of phrases, you improve the accuracy of speech recognition.

Se ad esempio è presente un comando "Sposta in" e una delle possibili destinazioni pronunciabili è "Vaso", è possibile aggiungere la voce "Sposta in vaso".As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". L'aggiunta di una frase aumenta la probabilità che, durante il riconoscimento dell'audio, venga riconosciuta la frase "Sposta in vaso" invece di "Sposta invaso"Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

All'elenco di frasi è possibile aggiungere singole parole o frasi complete.Single words or complete phrases can be added to a Phrase List. Una voce di un elenco di frasi viene usata per migliorare il riconoscimento di parole e frasi dell'elenco, anche quando le voci capitano nel mezzo di un'espressione.During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

Importante

La funzionalità dell'elenco di frasi è disponibile nelle lingue seguenti: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CNThe Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Per usare un elenco di frasi, creare prima di tutto un oggetto PhraseListGrammar, quindi aggiungere parole o frasi specifiche con AddPhrase.To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Tutte le modifiche apportate a PhraseListGrammar diventano effettive al successivo riconoscimento o dopo una riconnessione al servizio Voce.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

PhraseListGrammar phraseList = PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");

Se è necessario cancellare l'elenco di frasi:If you need to clear your phrase list:

phraseList.clear();

Altre opzioni per migliorare l'accuratezza del riconoscimentoOther options to improve recognition accuracy

Gli elenchi di frasi sono solo una delle opzioni disponibili per migliorare l'accuratezza del riconoscimento.Phrase lists are only one option to improve recognition accuracy. È anche possibile:You can also:

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare Speech SDK in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Passare agli esempi su GitHubSkip to samples on GitHub

Per passare direttamente al codice di esempio, vedere gli esempi di avvio rapido JavaScript in GitHub.If you want to skip straight to sample code, see the JavaScript quickstart samples on GitHub.

In alternativa, vedere l' esempio React per informazioni su come usare l'SDK di riconoscimento vocale in un ambiente basato su browser.Alternatively, see the React sample to learn how to use the Speech SDK in a browser-based environment.

PrerequisitiPrerequisites

Questo articolo presuppone che si abbia un account Azure e una sottoscrizione del servizio Voce.This article assumes that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Installare Speech SDKInstall the Speech SDK

Prima di poter eseguire qualsiasi operazione, è necessario installare l'SDK per la sintesi vocale per Node.js.Before you can do anything, you need to install the Speech SDK for Node.js. Se si vuole semplicemente installare il nome del pacchetto, eseguire npm install microsoft-cognitiveservices-speech-sdk .If you just want the package name to install, run npm install microsoft-cognitiveservices-speech-sdk. Per istruzioni sull'installazione guidata, vedere l'articolo introduttivo .For guided installation instructions, see the get started article.

Usare l' require istruzione seguente per importare l'SDK.Use the following require statement to import the SDK.

const sdk = require("microsoft-cognitiveservices-speech-sdk");

Per ulteriori informazioni su require , vedere la documentazione di richiesta.For more information on require, see the require documentation.

Creare una configurazione di VoceCreate a speech configuration

Per chiamare il servizio Voce con Speech SDK, è necessario creare una classe SpeechConfig.To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Questa classe include informazioni sulla sottoscrizione, ad esempio la chiave e l'area associata, l'endpoint, l'host o il token di autorizzazione.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Creare una classe SpeechConfig usando la chiave e l'area.Create a SpeechConfig using your key and region. Per trovare la coppia chiave-area, vedere Trovare chiavi e area.See the Find keys and region page to find your key-region pair.

const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

Esistono alcuni altri modi per inizializzare una classe SpeechConfig:There are a few other ways that you can initialize a SpeechConfig:

  • Con un endpoint: passare un endpoint del servizio Voce.With an endpoint: pass in a Speech service endpoint. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un host: passare l'indirizzo di un host.With a host: pass in a host address. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un token di autorizzazione: passare un token di autorizzazione e l'area associata.With an authorization token: pass in an authorization token and the associated region.

Nota

Sia che si esegua il riconoscimento vocale, la sintesi vocale, la traduzione o il riconoscimento finalità, sarà sempre necessario creare una configurazione.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Riconoscimento da microfono (solo browser)Recognize from microphone (Browser only)

Il riconoscimento vocale da un microfono non è supportato in Node.js ed è supportato solo in un ambiente JavaScript basato su browser.Recognizing speech from a microphone is not supported in Node.js, and is only supported in a browser-based JavaScript environment. Vedere l' esempio React su GitHub per visualizzare il riconoscimento vocale dall'implementazione del microfono.See the React sample on GitHub to see the speech-to-text from microphone implementation.

Nota

Se si vuole usare un dispositivo di input audio specifico, è necessario specificare l'ID del dispositivo nella classe AudioConfig.If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. Informazioni su come ottenere l'ID del dispositivo di input audio.Learn how to get the device ID for your audio input device.

Riconoscimento da fileRecognize from file

Per riconoscere il riconoscimento vocale da un file audio, creare un AudioConfig fromWavFileInput() oggetto usando il quale accetta un Buffer oggetto.To recognize speech from an audio file, create an AudioConfig using fromWavFileInput() which accepts a Buffer object. Quindi, inizializzare una classe SpeechRecognizer, passando la classe audioConfig e speechConfig.Then initialize a SpeechRecognizer, passing your audioConfig and speechConfig.

const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

function fromFile() {
    let audioConfig = sdk.AudioConfig.fromWavFileInput(fs.readFileSync("YourAudioFile.wav"));
    let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);

    recognizer.recognizeOnceAsync(result => {
        console.log(`RECOGNIZED: Text=${result.text}`);
        recognizer.close();
    });
}
fromFile();

Riconoscimento dal flusso in memoriaRecognize from in-memory stream

Per molti casi d'uso, è probabile che i dati audio provengano dall'archiviazione BLOB o che siano già in memoria come una struttura di ArrayBuffer dati non elaborata o simile.For many use-cases, it is likely your audio data will be coming from blob storage, or otherwise already be in-memory as an ArrayBuffer or similar raw data structure. Il codice seguente:The following code:

  • Crea un flusso push usando createPushStream() .Creates a push stream using createPushStream().
  • Legge un .wav file usando fs.createReadStream a scopo dimostrativo, ma se sono già presenti dati audio in un oggetto ArrayBuffer , è possibile passare direttamente alla scrittura del contenuto nel flusso di input.Reads a .wav file using fs.createReadStream for demonstration purposes, but if you already have audio data in an ArrayBuffer, you can skip directly to writing the content to the input stream.
  • Crea una configurazione audio usando il flusso di push.Creates an audio config using the push stream.
const fs = require('fs');
const sdk = require("microsoft-cognitiveservices-speech-sdk");
const speechConfig = sdk.SpeechConfig.fromSubscription("<paste-your-subscription-key>", "<paste-your-region>");

function fromStream() {
    let pushStream = sdk.AudioInputStream.createPushStream();

    fs.createReadStream("YourAudioFile.wav").on('data', function(arrayBuffer) {
        pushStream.write(arrayBuffer.slice());
    }).on('end', function() {
        pushStream.close();
    });
 
    let audioConfig = sdk.AudioConfig.fromStreamInput(pushStream);
    let recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);
    recognizer.recognizeOnceAsync(result => {
        console.log(`RECOGNIZED: Text=${result.text}`);
        recognizer.close();
    });
}
fromStream();

L'uso di un flusso push come input presuppone che i dati audio siano un PCM non elaborato, ad esempio ignorano le intestazioni.Using a push stream as input assumes that the audio data is a raw PCM, e.g. skipping any headers. L'API continuerà a funzionare in determinati casi se l'intestazione non è stata ignorata, ma per ottenere risultati ottimali è consigliabile implementare la logica per leggere le intestazioni, in modo che il fs cominci all'inizio dei dati audio.The API will still work in certain cases if the header has not been skipped, but for the best results consider implementing logic to read off the headers so the fs starts at the start of the audio data.

Gestione degli erroriError handling

Gli esempi precedenti ottengono semplicemente il testo riconosciuto da result.text, ma per gestire gli errori e altre risposte è necessario scrivere del codice per elaborare il risultato.The previous examples simply get the recognized text from result.text, but to handle errors and other responses, you'll need to write some code to handle the result. Il seguente codice valuta la proprietà result.reason e:The following code evaluates the result.reason property and:

  • Stampa il risultato del riconoscimento: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Se non esiste una corrispondenza di riconoscimento, informa l'utente: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Se viene rilevato un errore, stampa il messaggio di errore: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.reason) {
    case ResultReason.RecognizedSpeech:
        console.log(`RECOGNIZED: Text=${result.text}`);
        break;
    case ResultReason.NoMatch:
        console.log("NOMATCH: Speech could not be recognized.");
        break;
    case ResultReason.Canceled:
        const cancellation = CancellationDetails.fromResult(result);
        console.log(`CANCELED: Reason=${cancellation.reason}`);

        if (cancellation.reason == CancellationReason.Error) {
            console.log(`CANCELED: ErrorCode=${cancellation.ErrorCode}`);
            console.log(`CANCELED: ErrorDetails=${cancellation.errorDetails}`);
            console.log("CANCELED: Did you update the subscription info?");
        }
        break;
    }

Riconoscimento continuoContinuous recognition

Gli esempi precedenti usano il riconoscimento singolo, che riconosce una singola espressione.The previous examples use single-shot recognition, which recognizes a single utterance. La fine di una singola espressione viene determinata restando in ascolto del silenzio al termine o finché non vengono elaborati al massimo 15 secondi di audio.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

Al contrario, si usa il riconoscimento continuo quando si vuole controllare il momento in cui interrompere il riconoscimento.In contrast, continuous recognition is used when you want to control when to stop recognizing. Per ottenere i risultati del riconoscimento, è necessario sottoscrivere gli eventi Recognizing, Recognized e Canceled.It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Per arrestare il riconoscimento, è necessario chiamare stopContinuousRecognitionAsync.To stop recognition, you must call stopContinuousRecognitionAsync. Ecco un esempio di riconoscimento continuo eseguito su un file di input audio.Here's an example of how continuous recognition is performed on an audio input file.

Per iniziare, definire l'input e inizializzare un SpeechRecognizer:Start by defining the input and initializing a SpeechRecognizer:

const recognizer = new sdk.SpeechRecognizer(speechConfig, audioConfig);

Infine, sottoscrivere gli eventi inviati dal SpeechRecognizer.Next, subscribe to the events sent from the SpeechRecognizer.

  • recognizing: segnale per gli eventi contenenti i risultati del riconoscimento intermedio.recognizing: Signal for events containing intermediate recognition results.
  • recognized: segnale per gli eventi contenenti i risultati del riconoscimento finale, che indicano un tentativo di riconoscimento riuscito.recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: segnale per gli eventi che indicano la fine di una sessione di riconoscimento (operazione).sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: segnale per gli eventi contenenti risultati di riconoscimento annullati (a indicare un tentativo di riconoscimento annullato in seguito a una richiesta di annullamento diretta o, in alternativa, a un errore di trasporto o di protocollo).canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
recognizer.recognizing = (s, e) => {
    console.log(`RECOGNIZING: Text=${e.result.text}`);
};

recognizer.recognized = (s, e) => {
    if (e.result.reason == ResultReason.RecognizedSpeech) {
        console.log(`RECOGNIZED: Text=${e.result.text}`);
    }
    else if (e.result.reason == ResultReason.NoMatch) {
        console.log("NOMATCH: Speech could not be recognized.");
    }
};

recognizer.canceled = (s, e) => {
    console.log(`CANCELED: Reason=${e.reason}`);

    if (e.reason == CancellationReason.Error) {
        console.log(`"CANCELED: ErrorCode=${e.errorCode}`);
        console.log(`"CANCELED: ErrorDetails=${e.errorDetails}`);
        console.log("CANCELED: Did you update the subscription info?");
    }

    recognizer.stopContinuousRecognitionAsync();
};

recognizer.sessionStopped = (s, e) => {
    console.log("\n    Session stopped event.");
    recognizer.stopContinuousRecognitionAsync();
};

Al termine della configurazione, chiamare startContinuousRecognitionAsync per avviare il riconoscimento.With everything set up, call startContinuousRecognitionAsync to start recognizing.

recognizer.startContinuousRecognitionAsync();

// make the following call at some point to stop recognition.
// recognizer.StopContinuousRecognitionAsync();

Modalità dettaturaDictation mode

Quando si usa il riconoscimento continuo, è possibile abilitare l'elaborazione della dettatura usando la corrispondente funzione.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. In questa modalità l'istanza di SpeechConfig interpreta le descrizioni testuali delle strutture di frasi, ad esempio la punteggiatura.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Ad esempio, l'espressione "Vivi in città punto interrogativo" verrebbe interpretata come "Vivi in città?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Per abilitare la modalità di dettatura, usare il metodo enableDictation in SpeechConfig.To enable dictation mode, use the enableDictation method on your SpeechConfig.

speechConfig.enableDictation();

Cambiare la lingua di origineChange source language

Un'attività comune per il riconoscimento vocale è la specifica della lingua di input (o di origine).A common task for speech recognition is specifying the input (or source) language. Vediamo come cambiare la lingua di input in italiano.Let's take a look at how you would change the input language to Italian. Nel codice trovare SpeechConfig, quindi aggiungere questa riga al di sotto.In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.speechRecognitionLanguage = "it-IT";

La proprietà speechRecognitionLanguage si aspetta una stringa in formato è prevista una stringa di formato lingua-impostazioni locali.The speechRecognitionLanguage property expects a language-locale format string. È possibile specificare qualsiasi valore nella colonna Locale nell'elenco di impostazioni locali/lingue supportate.You can provide any value in the Locale column in the list of supported locales/languages.

Migliorare l'accuratezza del riconoscimentoImprove recognition accuracy

Gli elenchi di frasi vengono usati per identificare frasi note nei dati audio, ad esempio il nome di una persona o una specifica località.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Se si fornisce un elenco di frasi, è possibile migliorare l'accuratezza del riconoscimento vocale.By providing a list of phrases, you improve the accuracy of speech recognition.

Se ad esempio è presente un comando "Sposta in" e una delle possibili destinazioni pronunciabili è "Vaso", è possibile aggiungere la voce "Sposta in vaso".As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". L'aggiunta di una frase aumenta la probabilità che, durante il riconoscimento dell'audio, venga riconosciuta la frase "Sposta in vaso" invece di "Sposta invaso"Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

All'elenco di frasi è possibile aggiungere singole parole o frasi complete.Single words or complete phrases can be added to a Phrase List. Una voce di un elenco di frasi viene usata per migliorare il riconoscimento di parole e frasi dell'elenco, anche quando le voci capitano nel mezzo di un'espressione.During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

Importante

La funzionalità dell'elenco di frasi è disponibile nelle lingue seguenti: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CNThe Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Per usare un elenco di frasi, creare prima di tutto un oggetto PhraseListGrammar, quindi aggiungere parole o frasi specifiche con addPhrase.To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

Tutte le modifiche apportate a PhraseListGrammar diventano effettive al successivo riconoscimento o dopo una riconnessione al servizio Voce.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

const phraseList = sdk.PhraseListGrammar.fromRecognizer(recognizer);
phraseList.addPhrase("Supercalifragilisticexpialidocious");

Se è necessario cancellare l'elenco di frasi:If you need to clear your phrase list:

phraseList.clear();

Altre opzioni per migliorare l'accuratezza del riconoscimentoOther options to improve recognition accuracy

Gli elenchi di frasi sono solo una delle opzioni disponibili per migliorare l'accuratezza del riconoscimento.Phrase lists are only one option to improve recognition accuracy. È anche possibile:You can also:

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questo esempio illustra come usare l'SDK di riconoscimento vocale nelle app e nei prodotti per eseguire una conversione di riconoscimento vocale di alta qualità.In this sample, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Esempio React su GitHubReact sample on GitHub

Per informazioni su come usare l'SDK di riconoscimento vocale in un ambiente JavaScript basato su browser, vedere l' esempio React su GitHub.Go to the React sample on GitHub to learn how to use the Speech SDK in a browser-based JavaScript environment. Questo esempio mostra esempi di modelli di progettazione per lo scambio e la gestione dei token di autenticazione e l'acquisizione di audio da un microfono o un file per le conversioni di riconoscimento vocale.This sample shows design pattern examples for authentication token exchange and management, and capturing audio from a microphone or file for speech-to-text conversions.

Inoltre, i modelli di progettazione utilizzati nella Guida introduttivaNode.js possono essere utilizzati anche in un ambiente browser.Additionally, the design patterns used in the Node.js quickstart can also be used in a browser environment.

È possibile trascrivere il parlato in testo usando Speech SDK per Swift e Objective-C.You can transcribe speech into text using the Speech SDK for Swift and Objective-C.

PrerequisitiPrerequisites

Gli esempi seguenti presuppongono che si abbia un account Azure e una sottoscrizione del servizio Voce.The following samples assume that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Installare Speech SDK e gli esempiInstall Speech SDK and samples

Speech SDK di Servizi cognitivi contiene esempi scritti in Swift e Objective-C per iOS e Mac.The Cognitive Services Speech SDK contains samples written in in Swift and Objective-C for iOS and Mac. Fare clic su un collegamento per visualizzare le istruzioni di installazione per ogni esempio:Click a link to see installation instructions for each sample:

Sono disponibili anche Informazioni di riferimento su Speech SDK per Objective-C.We also provide an online Speech SDK for Objective-C Reference.

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare Speech SDK in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Passare agli esempi su GitHubSkip to samples on GitHub

Per passare direttamente al codice di esempio, vedere gli esempi di avvio rapido Python in GitHub.If you want to skip straight to sample code, see the Python quickstart samples on GitHub.

PrerequisitiPrerequisites

Questo articolo presuppone che:This article assumes:

Installare e importare Speech SDKInstall and import the Speech SDK

Prima di poter eseguire qualsiasi operazione, è necessario installare Speech SDK.Before you can do anything, you'll need to install the Speech SDK.

pip install azure-cognitiveservices-speech

Se si usa macOS e si verificano problemi di installazione, può essere necessario eseguire prima questo comando.If you're on macOS and run into install issues, you may need to run this command first.

python3 -m pip install --upgrade pip

Dopo aver installato Speech SDK, importarlo nel progetto Python.After the Speech SDK is installed, import it into your Python project.

import azure.cognitiveservices.speech as speechsdk

Creare una configurazione di VoceCreate a speech configuration

Per chiamare il servizio Voce con Speech SDK, è necessario creare una classe SpeechConfig.To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Questa classe include informazioni sulla sottoscrizione, ad esempio la chiave e l'area associata, l'endpoint, l'host o il token di autorizzazione.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Creare una classe SpeechConfig usando la chiave e l'area.Create a SpeechConfig using your key and region. Per trovare la coppia chiave-area, vedere Trovare chiavi e area.See the Find keys and region page to find your key-region pair.

speech_config = speechsdk.SpeechConfig(subscription="<paste-your-subscription-key>", region="<paste-your-region>")

Esistono alcuni altri modi per inizializzare una classe SpeechConfig:There are a few other ways that you can initialize a SpeechConfig:

  • Con un endpoint: passare un endpoint del servizio Voce.With an endpoint: pass in a Speech service endpoint. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un host: passare l'indirizzo di un host.With a host: pass in a host address. La chiave e il token di autorizzazione sono facoltativi.A key or authorization token is optional.
  • Con un token di autorizzazione: passare un token di autorizzazione e l'area associata.With an authorization token: pass in an authorization token and the associated region.

Nota

Sia che si esegua il riconoscimento vocale, la sintesi vocale, la traduzione o il riconoscimento finalità, sarà sempre necessario creare una configurazione.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Riconoscimento da microfonoRecognize from microphone

Per eseguire il riconoscimento vocale usando il microfono del dispositivo, è sufficiente creare un oggetto SpeechRecognizer senza passare una classe AudioConfig e passando la classe speech_config.To recognize speech using your device microphone, simply create a SpeechRecognizer without passing an AudioConfig, and pass your speech_config.

import azure.cognitiveservices.speech as speechsdk

def from_mic():
    speech_config = speechsdk.SpeechConfig(subscription="<paste-your-subscription-key>", region="<paste-your-region>")
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)
    
    print("Speak into your microphone.")
    result = speech_recognizer.recognize_once_async().get()
    print(result.text)

from_mic()

Se si vuole usare un dispositivo di input audio specifico, è necessario specificare l'ID del dispositivo in una classe AudioConfig e passarlo al parametro audio_config del costruttore di SpeechRecognizer.If you want to use a specific audio input device, you need to specify the device ID in an AudioConfig, and pass it to the SpeechRecognizer constructor's audio_config param. Informazioni su come ottenere l'ID del dispositivo di input audio.Learn how to get the device ID for your audio input device.

Riconoscimento da fileRecognize from file

Se si vuole specificare un file audio invece di usare un microfono per il riconoscimento vocale, è comunque necessario creare un oggetto AudioConfig e usare il parametro filename.If you want to recognize speech from an audio file instead of using a microphone, create an AudioConfig and use the filename parameter.

import azure.cognitiveservices.speech as speechsdk

def from_file():
    speech_config = speechsdk.SpeechConfig(subscription="<paste-your-subscription-key>", region="<paste-your-region>")
    audio_input = speechsdk.AudioConfig(filename="your_file_name.wav")
    speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_input)
    
    result = speech_recognizer.recognize_once_async().get()
    print(result.text)

from_file()

Gestione degli erroriError handling

Gli esempi precedenti ottengono semplicemente il testo riconosciuto da result.text, ma per gestire gli errori e altre risposte è necessario scrivere del codice per elaborare il risultato.The previous examples simply get the recognized text from result.text, but to handle errors and other responses, you'll need to write some code to handle the result. Il seguente codice valuta la proprietà result.reason e:The following code evaluates the result.reason property and:

  • Stampa il risultato del riconoscimento: speechsdk.ResultReason.RecognizedSpeechPrints the recognition result: speechsdk.ResultReason.RecognizedSpeech
  • Se non esiste una corrispondenza di riconoscimento, informa l'utente: speechsdk.ResultReason.NoMatch If there is no recognition match, inform the user: speechsdk.ResultReason.NoMatch
  • Se viene rilevato un errore, stampa il messaggio di errore: speechsdk.ResultReason.CanceledIf an error is encountered, print the error message: speechsdk.ResultReason.Canceled
if result.reason == speechsdk.ResultReason.RecognizedSpeech:
    print("Recognized: {}".format(result.text))
elif result.reason == speechsdk.ResultReason.NoMatch:
    print("No speech could be recognized: {}".format(result.no_match_details))
elif result.reason == speechsdk.ResultReason.Canceled:
    cancellation_details = result.cancellation_details
    print("Speech Recognition canceled: {}".format(cancellation_details.reason))
    if cancellation_details.reason == speechsdk.CancellationReason.Error:
        print("Error details: {}".format(cancellation_details.error_details))

Riconoscimento continuoContinuous recognition

Gli esempi precedenti usano il riconoscimento singolo, che riconosce una singola espressione.The previous examples use single-shot recognition, which recognizes a single utterance. La fine di una singola espressione viene determinata restando in ascolto del silenzio al termine o finché non vengono elaborati al massimo 15 secondi di audio.The end of a single utterance is determined by listening for silence at the end or until a maximum of 15 seconds of audio is processed.

Al contrario, si usa il riconoscimento continuo quando si vuole controllare il momento in cui interrompere il riconoscimento.In contrast, continuous recognition is used when you want to control when to stop recognizing. Richiede la connessione al EventSignal per ottenere i risultati del riconoscimento e per arrestare il riconoscimento è necessario chiamare stop_continuous_recognition () o stop_continuous_recognition ().It requires you to connect to the EventSignal to get the recognition results, and to stop recognition, you must call stop_continuous_recognition() or stop_continuous_recognition(). Ecco un esempio di riconoscimento continuo eseguito su un file di input audio.Here's an example of how continuous recognition is performed on an audio input file.

Per iniziare, definire l'input e inizializzare SpeechRecognizer:Let's start by defining the input and initializing a SpeechRecognizer:

audio_config = speechsdk.audio.AudioConfig(filename=weatherfilename)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)

Successivamente, creare una variabile per gestire lo stato del riconoscimento vocale.Next, let's create a variable to manage the state of speech recognition. Per iniziare, questa variabile verrà impostata su False, dal momento che all'inizio si può ovviamente presupporre che il riconoscimento non sia terminato.To start, we'll set this to False, since at the start of recognition we can safely assume that it's not finished.

done = False

A questo punto, verrà creato un callback per arrestare il riconoscimento continuo quando si riceve evt.Now, we're going to create a callback to stop continuous recognition when an evt is received. Occorre tenere presenti alcuni aspetti.There's a few things to keep in mind.

  • Quando si riceve evt, viene stampato il messaggio evt.When an evt is received, the evt message is printed.
  • Dopo la ricezione di evt, viene effettuata una chiamata a stop_continuous_recognition () per arrestare il riconoscimento.After an evt is received, stop_continuous_recognition() is called to stop recognition.
  • Lo stato del riconoscimento cambia in True.The recognition state is changed to True.
def stop_cb(evt):
    print('CLOSING on {}'.format(evt))
    speech_recognizer.stop_continuous_recognition()
    nonlocal done
    done = True

Questo esempio di codice mostra come connettere i callback agli eventi inviati da SpeechRecognizer.This code sample shows how to connect callbacks to events sent from the SpeechRecognizer.

  • recognizing: segnale per gli eventi contenenti i risultati del riconoscimento intermedio.recognizing: Signal for events containing intermediate recognition results.
  • recognized: segnale per gli eventi contenenti i risultati del riconoscimento finale, che indicano un tentativo di riconoscimento riuscito.recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • session_started: segnale per gli eventi che indicano l'inizio di una sessione di riconoscimento (operazione).session_started: Signal for events indicating the start of a recognition session (operation).
  • session_stopped: segnale per gli eventi che indicano la fine di una sessione di riconoscimento (operazione).session_stopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: segnale per gli eventi contenenti risultati di riconoscimento annullati (a indicare un tentativo di riconoscimento annullato in seguito a una richiesta di annullamento diretta o, in alternativa, a un errore di trasporto o di protocollo).canceled: Signal for events containing canceled recognition results (indicating a recognition attempt that was canceled as a result or a direct cancellation request or, alternatively, a transport or protocol failure).
speech_recognizer.recognizing.connect(lambda evt: print('RECOGNIZING: {}'.format(evt)))
speech_recognizer.recognized.connect(lambda evt: print('RECOGNIZED: {}'.format(evt)))
speech_recognizer.session_started.connect(lambda evt: print('SESSION STARTED: {}'.format(evt)))
speech_recognizer.session_stopped.connect(lambda evt: print('SESSION STOPPED {}'.format(evt)))
speech_recognizer.canceled.connect(lambda evt: print('CANCELED {}'.format(evt)))

speech_recognizer.session_stopped.connect(stop_cb)
speech_recognizer.canceled.connect(stop_cb)

Con tutte le impostazioni configurate, è possibile chiamare start_continuous_recognition ().With everything set up, we can call start_continuous_recognition().

speech_recognizer.start_continuous_recognition()
while not done:
    time.sleep(.5)

Modalità dettaturaDictation mode

Quando si usa il riconoscimento continuo, è possibile abilitare l'elaborazione della dettatura usando la corrispondente funzione.When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. In questa modalità l'istanza di SpeechConfig interpreta le descrizioni testuali delle strutture di frasi, ad esempio la punteggiatura.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Ad esempio, l'espressione "Vivi in città punto interrogativo" verrebbe interpretata come "Vivi in città?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Per abilitare la modalità di dettatura, usare il metodo enable_dictation() in SpeechConfig.To enable dictation mode, use the enable_dictation() method on your SpeechConfig.

SpeechConfig.enable_dictation()

Cambiare la lingua di origineChange source language

Un'attività comune per il riconoscimento vocale è la specifica della lingua di input (o di origine).A common task for speech recognition is specifying the input (or source) language. Vediamo come cambiare la lingua di input in tedesco.Let's take a look at how you would change the input language to German. Nel codice trovare SpeechConfig, quindi aggiungere questa riga al di sotto.In your code, find your SpeechConfig, then add this line directly below it.

speech_config.speech_recognition_language="de-DE"

speech_recognition_language è un parametro che accetta una stringa come argomento.speech_recognition_language is a parameter that takes a string as an argument. È possibile specificare qualsiasi valore nell'elenco di impostazioni locali/lingue supportate.You can provide any value in the list of supported locales/languages.

Migliorare l'accuratezza del riconoscimentoImprove recognition accuracy

Gli elenchi di frasi vengono usati per identificare frasi note nei dati audio, ad esempio il nome di una persona o una specifica località.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Se si fornisce un elenco di frasi, è possibile migliorare l'accuratezza del riconoscimento vocale.By providing a list of phrases, you improve the accuracy of speech recognition.

Se ad esempio è presente un comando "Sposta in" e una delle possibili destinazioni pronunciabili è "Vaso", è possibile aggiungere la voce "Sposta in vaso".As an example, if you have a command "Move to" and a possible destination of "Ward" that may be spoken, you can add an entry of "Move to Ward". L'aggiunta di una frase aumenta la probabilità che, durante il riconoscimento dell'audio, venga riconosciuta la frase "Sposta in vaso" invece di "Sposta invaso"Adding a phrase will increase the probability that when the audio is recognized that "Move to Ward" will be recognized instead of "Move toward"

All'elenco di frasi è possibile aggiungere singole parole o frasi complete.Single words or complete phrases can be added to a Phrase List. Una voce di un elenco di frasi viene usata per migliorare il riconoscimento di parole e frasi dell'elenco, anche quando le voci capitano nel mezzo di un'espressione.During recognition, an entry in a phrase list is used to boost recognition of the words and phrases in the list even when the entries appear in the middle of the utterance.

Importante

La funzionalità dell'elenco di frasi è disponibile nelle lingue seguenti: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CNThe Phrase List feature is available in the following languages: en-US, de-DE, en-AU, en-CA, en-GB, es-ES, es-MX, fr-CA, fr-FR, it-IT, ja-JP, ko-KR, pt-BR, zh-CN

Per usare un elenco di frasi, creare prima di tutto un oggetto PhraseListGrammar, quindi aggiungere parole o frasi specifiche con addPhrase.To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

Tutte le modifiche apportate a PhraseListGrammar diventano effettive al successivo riconoscimento o dopo una riconnessione al servizio Voce.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

phrase_list_grammar = speechsdk.PhraseListGrammar.from_recognizer(reco)
phrase_list_grammar.addPhrase("Supercalifragilisticexpialidocious")

Se è necessario cancellare l'elenco di frasi:If you need to clear your phrase list:

phrase_list_grammar.clear()

Altre opzioni per migliorare l'accuratezza del riconoscimentoOther options to improve recognition accuracy

Gli elenchi di frasi sono solo una delle opzioni disponibili per migliorare l'accuratezza del riconoscimento.Phrase lists are only one option to improve recognition accuracy. È anche possibile:You can also:

Questa guida di avvio rapido descrive come eseguire la conversione della voce in testo scritto con il servizio Voce e cURL.In this quickstart, you learn how to convert speech to text using the Speech service and cURL.

Per informazioni generali sui concetti di Riconoscimento vocale, vedere l'articolo Panoramica.For a high-level look at Speech-to-Text concepts, see the overview article.

PrerequisitiPrerequisites

Questo articolo presuppone che si abbia un account Azure e una sottoscrizione del servizio Voce.This article assumes that you have an Azure account and Speech service subscription. Se l'account e la sottoscrizione non sono disponibili, provare il servizio Voce gratuitamente.If you don't have an account and subscription, try the Speech service for free.

Convertire il parlato in testoConvert speech to text

Al prompt dei comandi, eseguire questo comando.At a command prompt, run the following command. Sarà necessario inserire i valori seguenti nel comando.You will need to insert the following values into the command.

  • La chiave di sottoscrizione al Servizio di riconoscimento vocale dell'utente.Your Speech service subscription key.
  • L'area del servizio Voce.Your Speech service region.
  • Il percorso del file audio di input.The input audio file path. È possibile generare file audio tramite la sintesi vocale.You can generate audio files using text-to-speech.
curl --location --request POST 'https://INSERT_REGION_HERE.stt.speech.microsoft.com/speech/recognition/conversation/cognitiveservices/v1?language=en-US' \
--header 'Ocp-Apim-Subscription-Key: INSERT_SUBSCRIPTION_KEY_HERE' \
--header 'Content-Type: audio/wav' \
--data-binary 'INSERT_AUDIO_FILE_PATH_HERE'

Verrà restituita una risposta simile alla seguente.You should receive a response like the following one.

{
    "RecognitionStatus": "Success",
    "DisplayText": "My voice is my passport, verify me.",
    "Offset": 6600000,
    "Duration": 32100000
}

Per altre informazioni, vedere la documentazione di riferimento dell'API REST di riconoscimento vocale.For more information see the speech-to-text REST API reference.

Una delle principali funzionalità del servizio Voce è la possibilità di riconoscere e trascrivere la voce umana, ovvero di convertire la voce in testo scritto.One of the core features of the Speech service is the ability to recognize and transcribe human speech (often referred to as speech-to-text). Questa guida di avvio rapido illustra come usare l'interfaccia della riga di comando per Voce in app e prodotti per eseguire la conversione della voce in testo scritto di alta qualità.In this quickstart, you learn how to use the Speech CLI in your apps and products to perform high-quality speech-to-text conversion.

Download e installazioneDownload and install

Per installare l’interfaccia della riga di comando di Voce su Windows, seguire questa procedura:Follow these steps to install the Speech CLI on Windows:

  1. In Windows è necessaria la versione di Microsoft Visual C++ Redistributable per Visual Studio 2019 per la piattaforma in uso.On Windows, you need the Microsoft Visual C++ Redistributable for Visual Studio 2019 for your platform. La prima volta che si esegue questa installazione può essere necessario riavviare il sistema.Installing this for the first time may require a restart.

  2. Installare .NET Core 3,1 SDK.Install .NET Core 3.1 SDK.

  3. Installare l'interfaccia della riga di comando vocale usando NuGet immettendo questo comando:Install the Speech CLI using NuGet by entering this command:

    dotnet tool install --global Microsoft.CognitiveServices.Speech.CLI
    

Digitare spx per visualizzare la guida per l'interfaccia della riga di comando di Voce.Type spx to see help for the Speech CLI.

Nota

In alternativa a NuGet, è possibile scaricare ed estrarre l' archivio zipdell'interfaccia della riga di comando vocale, trovare ed estrarre la piattaforma dalla spx-zips Directory e aggiungere il spx percorso alla variabile del percorso di sistema.As an alternative to NuGet, you can download and extract the Speech CLI zip archive, find and extract your platform from the spx-zips directory, and add the spx path to your system PATH variable.

Limitazioni dei tipi di carattereFont limitations

In Windows, l'interfaccia della riga di comando di Voce può visualizzare solo i tipi di carattere disponibili per il prompt dei comandi nel computer locale.On Windows, the Speech CLI can only show fonts available to the command prompt on the local computer. Il terminale Windows supporta tutti i tipi di carattere prodotti in modo interattivo dall'interfaccia della riga di comando di Voce.Windows Terminal supports all fonts produced interactively by the Speech CLI.

Se l'output viene restituito in un file, è possibile che anche un editor di testo come Blocco note o un Web browser come Microsoft Edge visualizzi tutti i tipi di carattere.If you output to a file, a text editor like Notepad or a web browser like Microsoft Edge can also show all fonts.

Creare la configurazione della sottoscrizioneCreate subscription config

Per iniziare a usare l'interfaccia della riga di comando di Voce, è necessario immettere la chiave della sottoscrizione e l'identificatore di area del servizio Voce.To start using the Speech CLI, you need to enter your Speech subscription key and region identifier. Per ottenere queste credenziali, seguire la procedura descritta in Provare il servizio Voce gratuitamente.Get these credentials by following steps in Try the Speech service for free. Dopo aver ottenuto l’identificatore dell’area e della chiave di sottoscrizione (ad esempio,Once you have your subscription key and region identifier (ex. eastus, westus), eseguire i comandi seguenti.eastus, westus), run the following commands.

spx config @key --set SUBSCRIPTION-KEY
spx config @region --set REGION

L'autenticazione della sottoscrizione è ora archiviata per richieste SPX future.Your subscription authentication is now stored for future SPX requests. Se è necessario rimuovere uno di questi valori archiviati, eseguire spx config @region --clear o spx config @key --clear.If you need to remove either of these stored values, run spx config @region --clear or spx config @key --clear.

Riconoscimento vocale da microfonoSpeech-to-text from microphone

Collegare e accendere il microfono del PC e disattivare eventuali app che potrebbero usare il microfono.Plug in and turn on your PC microphone, and turn off any apps that might also use the microphone. Alcuni computer dispongono di un microfono incorporato, mentre altri richiedono la configurazione di un dispositivo Bluetooth.Some computers have a built-in microphone, while others require configuration of a Bluetooth device.

A questo punto si è pronti per eseguire l'interfaccia della riga di comando vocale per Voce al fine di utilizzare il riconoscimento vocale dal microfono.Now you're ready to run the Speech CLI to recognize speech from your microphone. Dalla riga di comando passare alla directory che contiene il file binario dell'interfaccia della riga di comando per Voce ed eseguire il comando seguente.From the command line, change to the directory that contains the Speech CLI binary file, and run the following command.

spx recognize --microphone

Nota

La lingua predefinita dell'interfaccia della riga di comando per Voce è l’inglese.The Speech CLI defaults to English. È possibile scegliere una lingua diversa dalla tabella Riconoscimento vocale.You can choose a different language from the Speech-to-text table. Ad esempio, aggiungere --source de-DE per il riconoscimento vocale in tedesco.For example, add --source de-DE to recognize German speech.

Parlare nel microfono e sarà possibile vedere la trascrizione delle parole in testo in tempo reale.Speak into the microphone, and you see transcription of your words into text in real-time. L'interfaccia della riga di comando per Voce si arresterà dopo un periodo di inattività o quando si preme CTRL + C.The Speech CLI will stop after a period of silence, or when you press ctrl-C.

Riconoscimento vocale da file audioSpeech-to-text from audio file

L'interfaccia della riga di comando per Voce può eseguire il riconoscimento vocale in molti formati di file e linguaggi naturali.The Speech CLI can recognize speech in many file formats and natural languages. In questo esempio è possibile usare un file WAV (16 kHz o 8 kHz, a 16 bit e PCM mono) che contiene la voce in lingua inglese.In this example, you can use any WAV file (16kHz or 8kHz, 16-bit, and mono PCM) that contains English speech. In alternativa, se si vuole un esempio rapido, scaricare il file whatstheweatherlike.wav e copiarlo nella stessa directory del file binario dell'interfaccia della riga di comando di Voce.Or if you want a quick sample, download the whatstheweatherlike.wav file and copy it to the same directory as the Speech CLI binary file.

A questo punto si è pronti per eseguire l'interfaccia della riga di comando di Voce per riconoscere la voce trovata nel file audio eseguendo il comando seguente.Now you're ready to run the Speech CLI to recognize speech found in the audio file by running the following command.

spx recognize --file whatstheweatherlike.wav

Nota

La lingua predefinita dell'interfaccia della riga di comando per Voce è l’inglese.The Speech CLI defaults to English. È possibile scegliere una lingua diversa dalla tabella Riconoscimento vocale.You can choose a different language from the Speech-to-text table. Ad esempio, aggiungere --source de-DE per il riconoscimento vocale in tedesco.For example, add --source de-DE to recognize German speech.

L'interfaccia della riga di comando per Voce visualizzerà una trascrizione testuale della voce sullo schermo.The Speech CLI will show a text transcription of the speech on the screen.

Passaggi successiviNext steps