Introdução à conversão de voz em textoGet started with speech-to-text

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o Speech SDK nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Salte para as amostras no GitHubSkip to samples on GitHub

Se quiser saltar diretamente para o código de amostra, consulte as amostras de arranque rápido C# no GitHub.If you want to skip straight to sample code, see the C# quickstart samples on GitHub.

Pré-requisitosPrerequisites

Este artigo pressupõe que tem uma conta Azure e subscrição do serviço de fala.This article assumes that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Instale o SDK de discursoInstall the Speech SDK

Se só quer que o nome do pacote seja iniciado, corra Install-Package Microsoft.CognitiveServices.Speech na consola NuGet.If you just want the package name to get started, run Install-Package Microsoft.CognitiveServices.Speech in the NuGet console.

Para instruções de instalação específicas da plataforma, consulte os seguintes links:For platform-specific installation instructions, see the following links:

Criar uma configuração de discursoCreate a speech configuration

Para ligar para o serviço de discurso usando o SDK de discurso, precisa de criar um SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Esta classe inclui informações sobre a sua subscrição, como a sua chave e região associada, ponto final, anfitrião ou token de autorização.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Crie um SpeechConfig utilizando a sua chave e região.Create a SpeechConfig by using your key and region. Consulte a página de apoio da região para encontrar o seu identificador da região.See the region support page to find your region identifier.

using Microsoft.CognitiveServices.Speech;

var speechConfig = SpeechConfig.FromSubscription("YourSubscriptionKey", "YourServiceRegion");

Há algumas outras formas de inicializar SpeechConfig uma:There are a few other ways that you can initialize a SpeechConfig:

  • Com um ponto final: passe num ponto final de serviço de discurso.With an endpoint: pass in a Speech service endpoint. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um anfitrião: passe em um endereço de anfitrião.With a host: pass in a host address. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um sinal de autorização: passe em um token de autorização e na região associada.With an authorization token: pass in an authorization token and the associated region.

Nota

Independentemente de estar a realizar reconhecimento de voz, síntese de fala, tradução ou reconhecimento de intenções, irá sempre criar uma configuração.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Reconhecer a partir do microfoneRecognize from microphone

Para reconhecer a fala utilizando o microfone do dispositivo, crie uma AudioConfig utilização FromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). Em seguida, inicialize SpeechRecognizer um, passando o seu audioConfig e speechConfig .Then initialize a SpeechRecognizer, passing your audioConfig and speechConfig.

using Microsoft.CognitiveServices.Speech.Audio;

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

Se pretender utilizar um dispositivo específico de entrada de áudio, tem de especificar o ID do dispositivo no AudioConfig .If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. Saiba como obter o ID do dispositivo para o seu dispositivo de entrada de áudio.Learn how to get the device ID for your audio input device.

Reconhecer a partir de arquivoRecognize from file

Se quiser reconhecer a fala a partir de um ficheiro áudio em vez de um microfone, ainda precisa de criar um AudioConfig .If you want to recognize speech from an audio file instead of a microphone, you still need to create an AudioConfig. No entanto, quando cria o AudioConfig , em vez de ligar - ligue e passe o caminho do FromDefaultMicrophoneInput() FromWavFileInput() ficheiro.However, when you create the AudioConfig, instead of calling FromDefaultMicrophoneInput(), you call FromWavFileInput() and pass the file path.

using Microsoft.CognitiveServices.Speech.Audio;

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

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

Reconhecer vozRecognize speech

A classe Recogniser para o Discurso SDK para C# expõe alguns métodos que pode usar para reconhecimento de voz.The Recognizer class for the Speech SDK for C# exposes a few methods that you can use for speech recognition.

Reconhecimento de um único tiroSingle-shot recognition

O reconhecimento de um único tiro reconhece assincronamente uma única expressão.Single-shot recognition asynchronously recognizes a single utterance. O fim de uma única expressão é determinado ouvindo o silêncio no final ou até que um máximo de 15 segundos de áudio seja processado.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. Aqui está um exemplo de reconhecimento assíncronos de tiro único RecognizeOnceAsync usando:Here's an example of asynchronous single-shot recognition using RecognizeOnceAsync:

var result = await recognizer.RecognizeOnceAsync();

Terá de escrever um código para lidar com o resultado.You'll need to write some code to handle the result. Esta amostra result.Reason avalia:This sample evaluates the result.Reason:

  • Imprime o resultado do reconhecimento: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Se não houver correspondência de reconhecimento, informe o utilizador: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Se for encontrado um erro, imprima a mensagem de erro: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.Reason)
{
    case ResultReason.RecognizedSpeech:
        Console.WriteLine($"RECOGNIZED: Text={result.Text}");
        Console.WriteLine($"    Intent not recognized.");
        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;
}

Reconhecimento contínuoContinuous recognition

O reconhecimento contínuo é um pouco mais envolvido do que o reconhecimento de um único tiro.Continuous recognition is a bit more involved than single-shot recognition. Requer que subscreva o Recognizing Recognized , e Canceled eventos para obter os resultados de reconhecimento.It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Para parar o reconhecimento, tem de StopContinuousRecognitionAsync ligar.To stop recognition, you must call StopContinuousRecognitionAsync. Aqui está um exemplo de como o reconhecimento contínuo é realizado num ficheiro de entrada de áudio.Here's an example of how continuous recognition is performed on an audio input file.

Comecemos por definir a entrada e inicializar SpeechRecognizer um:Let's start by defining the input and initializing a SpeechRecognizer:

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

Em seguida, vamos criar uma variável para gerir o estado do reconhecimento da fala.Next, let's create a variable to manage the state of speech recognition. Para começar, declararemos depois TaskCompletionSource<int> das declarações anteriores.To start, we'll declare a TaskCompletionSource<int> after the previous declarations.

var stopRecognition = new TaskCompletionSource<int>();

Subscreva os eventos enviados do SpeechRecognizer .Subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: Sinal para eventos que contenham resultados intermédios de reconhecimento.Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: Sinal para eventos que contenham resultados finais de reconhecimento (indicando uma tentativa de reconhecimento bem sucedida).Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: Sinal para eventos que indiquem o fim de uma sessão de reconhecimento (operação).SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: Sinal para eventos que contenham resultados de reconhecimento cancelados (indicando uma tentativa de reconhecimento que foi cancelada em resultado ou um pedido de cancelamento direto ou, em alternativa, uma falha de transporte ou protocolo).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);
};

Com tudo preparado, podemos StopContinuousRecognitionAsync ligar.With everything set up, we can call StopContinuousRecognitionAsync.

// Starts continuous recognition. Uses StopContinuousRecognitionAsync() to stop recognition.
await recognizer.StartContinuousRecognitionAsync();

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

// Stops recognition.
await recognizer.StopContinuousRecognitionAsync();

Modo de ditadoDictation mode

Ao utilizar o reconhecimento contínuo, pode ativar o processamento de ditados utilizando a função correspondente de "ativar o ditado".When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Este modo fará com que a instância config da fala interprete descrições de palavras de estruturas de frases como a pontuação.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Por exemplo, a expressão "Vives no ponto de interrogação da cidade" seria interpretada como o texto "Vives na cidade?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Para ativar o modo de ditado, utilize o EnableDictation método no seu SpeechConfig .To enable dictation mode, use the EnableDictation method on your SpeechConfig.

speechConfig.EnableDictation();

Alterar linguagem de origemChange source language

Uma tarefa comum para o reconhecimento da fala é especificar a linguagem de entrada (ou origem).A common task for speech recognition is specifying the input (or source) language. Vamos ver como mudaria a língua de entrada para italiana.Let's take a look at how you would change the input language to Italian. No seu código, encontre o SpeechConfig seu, em seguida, adicione esta linha diretamente abaixo.In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.SpeechRecognitionLanguage = "it-IT";

A SpeechRecognitionLanguage propriedade espera uma cadeia de formato idioma-local.The SpeechRecognitionLanguage property expects a language-locale format string. Pode fornecer qualquer valor na coluna Locale na lista de locais/idiomas suportados.You can provide any value in the Locale column in the list of supported locales/languages.

Melhorar a precisão do reconhecimentoImprove recognition accuracy

Existem algumas formas de melhorar a precisão do reconhecimento com o SDK do discurso.There are a few ways to improve recognition accuracy with the Speech SDK. Vamos ver as Listas de Frases.Let's take a look at Phrase Lists. As listas de frases são usadas para identificar frases conhecidas em dados áudio, como o nome de uma pessoa ou uma localização específica.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Palavras simples ou frases completas podem ser adicionadas a uma Lista de Frases.Single words or complete phrases can be added to a Phrase List. Durante o reconhecimento, é utilizada uma entrada numa lista de frases se for incluída no áudio uma correspondência exata para toda a frase.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Se não for encontrado um jogo exato com a frase, o reconhecimento não é assistido.If an exact match to the phrase is not found, recognition is not assisted.

Importante

A funcionalidade Lista de Frases só está disponível em inglês.The Phrase List feature is only available in English.

Para utilizar uma lista de frases, primeiro crie um PhraseListGrammar objeto e, em seguida, adicione palavras e frases específicas com AddPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Quaisquer alterações que PhraseListGrammar entrem em vigor no próximo reconhecimento ou após uma reconexão ao serviço Discurso.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 precisar de limpar a sua lista de frases:If you need to clear your phrase list:

phraseList.Clear();

Outras opções para melhorar a precisão do reconhecimentoOther options to improve recognition accuracy

As listas de frases são apenas uma opção para melhorar a precisão do reconhecimento.Phrase lists are only one option to improve recognition accuracy. Também pode:You can also:

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o Speech SDK nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Salte para as amostras no GitHubSkip to samples on GitHub

Se quiser saltar diretamente para o código de amostra, consulte as amostras de arranque rápido C++ no GitHub.If you want to skip straight to sample code, see the C++ quickstart samples on GitHub.

Pré-requisitosPrerequisites

Este artigo pressupõe que tem uma conta Azure e subscrição do serviço de fala.This article assumes that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Instale o SDK de discursoInstall the Speech SDK

Antes de poder fazer qualquer coisa, terá de instalar o SDK do Discurso.Before you can do anything, you'll need to install the Speech SDK. Dependendo da sua plataforma, utilize as seguintes instruções:Depending on your platform, use the following instructions:

Criar uma configuração de discursoCreate a speech configuration

Para ligar para o serviço de discurso usando o SDK de discurso, precisa de criar um SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Esta classe inclui informações sobre a sua subscrição, como a sua chave e região associada, ponto final, anfitrião ou token de autorização.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Crie um SpeechConfig utilizando a sua chave e região.Create a SpeechConfig by using your key and region. Consulte a página de apoio da região para encontrar o seu identificador da região.See the region support page to find your region identifier.

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

auto config = SpeechConfig::FromSubscription("YourSubscriptionKey", "YourServiceRegion");

Há algumas outras formas de inicializar SpeechConfig uma:There are a few other ways that you can initialize a SpeechConfig:

  • Com um ponto final: passe num ponto final de serviço de discurso.With an endpoint: pass in a Speech service endpoint. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um anfitrião: passe em um endereço de anfitrião.With a host: pass in a host address. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um sinal de autorização: passe em um token de autorização e na região associada.With an authorization token: pass in an authorization token and the associated region.

Nota

Independentemente de estar a realizar reconhecimento de voz, síntese de fala, tradução ou reconhecimento de intenções, irá sempre criar uma configuração.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Reconhecer a partir do microfoneRecognize from microphone

Para reconhecer a fala utilizando o microfone do dispositivo, crie uma AudioConfig utilização FromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using FromDefaultMicrophoneInput(). Em seguida, inicialize SpeechRecognizer um, passando o seu 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 pretender utilizar um dispositivo específico de entrada de áudio, tem de especificar o ID do dispositivo no AudioConfig . Saiba como obter o ID do dispositivo para o seu dispositivo de entrada de áudio.Learn how to get the device ID for your audio input device.

Reconhecer a partir de arquivoRecognize from file

Se quiser reconhecer a fala a partir de um ficheiro áudio em vez de utilizar um microfone, ainda precisa de criar um AudioConfig .If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. No entanto, quando cria o AudioConfig , em vez de ligar - ligue e passe o caminho do FromDefaultMicrophoneInput() FromWavFileInput() ficheiro.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;

Reconhecer vozRecognize speech

A classe Recogniser para o Discurso SDK para C++ expõe alguns métodos que pode usar para reconhecimento de voz.The Recognizer class for the Speech SDK for C++ exposes a few methods that you can use for speech recognition.

Reconhecimento de um único tiroSingle-shot recognition

O reconhecimento de um único tiro reconhece assincronamente uma única expressão.Single-shot recognition asynchronously recognizes a single utterance. O fim de uma única expressão é determinado ouvindo o silêncio no final ou até que um máximo de 15 segundos de áudio seja processado.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. Aqui está um exemplo de reconhecimento assíncronos de tiro único RecognizeOnceAsync usando:Here's an example of asynchronous single-shot recognition using RecognizeOnceAsync:

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

Terá de escrever um código para lidar com o resultado.You'll need to write some code to handle the result. Esta amostra result->Reason avalia:This sample evaluates the result->Reason:

  • Imprime o resultado do reconhecimento: ResultReason::RecognizedSpeechPrints the recognition result: ResultReason::RecognizedSpeech
  • Se não houver correspondência de reconhecimento, informe o utilizador: ResultReason::NoMatchIf there is no recognition match, inform the user: ResultReason::NoMatch
  • Se for encontrado um erro, imprima a mensagem de erro: 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;
}

Reconhecimento contínuoContinuous recognition

O reconhecimento contínuo é um pouco mais envolvido do que o reconhecimento de um único tiro.Continuous recognition is a bit more involved than single-shot recognition. Requer que subscreva o Recognizing Recognized , e Canceled eventos para obter os resultados de reconhecimento.It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Para parar o reconhecimento, deve ligar para StopContinuousRecognitionAsync.To stop recognition, you must call StopContinuousRecognitionAsync. Aqui está um exemplo de como o reconhecimento contínuo é realizado num ficheiro de entrada de áudio.Here's an example of how continuous recognition is performed on an audio input file.

Comecemos por definir a entrada e inicializar SpeechRecognizer um:Let's start by defining the input and initializing a SpeechRecognizer:

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

Em seguida, vamos criar uma variável para gerir o estado do reconhecimento da fala.Next, let's create a variable to manage the state of speech recognition. Para começar, vamos declarar promise<void> um, já que no início do reconhecimento podemos assumir com segurança que não está terminado.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;

Subscreveremos os eventos enviados do SpeechRecognizer .We'll subscribe to the events sent from the SpeechRecognizer.

  • Recognizing: Sinal para eventos que contenham resultados intermédios de reconhecimento.Recognizing: Signal for events containing intermediate recognition results.
  • Recognized: Sinal para eventos que contenham resultados finais de reconhecimento (indicando uma tentativa de reconhecimento bem sucedida).Recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • SessionStopped: Sinal para eventos que indiquem o fim de uma sessão de reconhecimento (operação).SessionStopped: Signal for events indicating the end of a recognition session (operation).
  • Canceled: Sinal para eventos que contenham resultados de reconhecimento cancelados (indicando uma tentativa de reconhecimento que foi cancelada em resultado ou um pedido de cancelamento direto ou, em alternativa, uma falha de transporte ou protocolo).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.
    });

Com tudo preparado, podemos StopContinuousRecognitionAsync ligar.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();

Modo de ditadoDictation mode

Ao utilizar o reconhecimento contínuo, pode ativar o processamento de ditados utilizando a função correspondente de "ativar o ditado".When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Este modo fará com que a instância config da fala interprete descrições de palavras de estruturas de frases como a pontuação.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Por exemplo, a expressão "Vives no ponto de interrogação da cidade" seria interpretada como o texto "Vives na cidade?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Para ativar o modo de ditado, utilize o EnableDictation método no seu SpeechConfig .To enable dictation mode, use the EnableDictation method on your SpeechConfig.

config->EnableDictation();

Alterar linguagem de origemChange source language

Uma tarefa comum para o reconhecimento da fala é especificar a linguagem de entrada (ou origem).A common task for speech recognition is specifying the input (or source) language. Vamos ver como mudaria a língua de entrada para alemão.Let's take a look at how you would change the input language to German. No seu código, encontre o SpeechConfig seu, em seguida, adicione esta linha diretamente abaixo.In your code, find your SpeechConfig, then add this line directly below it.

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

SetSpeechRecognitionLanguage é um parâmetro que toma uma corda como argumento.SetSpeechRecognitionLanguage is a parameter that takes a string as an argument. Pode fornecer qualquer valor na lista de locais/idiomas suportados.You can provide any value in the list of supported locales/languages.

Melhorar a precisão do reconhecimentoImprove recognition accuracy

Existem algumas formas de melhorar a precisão do reconhecimento com o SDK do discurso.There are a few ways to improve recognition accuracy with the Speech SDK. Vamos ver as Listas de Frases.Let's take a look at Phrase Lists. As listas de frases são usadas para identificar frases conhecidas em dados áudio, como o nome de uma pessoa ou uma localização específica.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Palavras simples ou frases completas podem ser adicionadas a uma Lista de Frases.Single words or complete phrases can be added to a Phrase List. Durante o reconhecimento, é utilizada uma entrada numa lista de frases se for incluída no áudio uma correspondência exata para toda a frase.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Se não for encontrado um jogo exato com a frase, o reconhecimento não é assistido.If an exact match to the phrase is not found, recognition is not assisted.

Importante

A funcionalidade Lista de Frases só está disponível em inglês.The Phrase List feature is only available in English.

Para utilizar uma lista de frases, primeiro crie um PhraseListGrammar objeto e, em seguida, adicione palavras e frases específicas com AddPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Quaisquer alterações que PhraseListGrammar entrem em vigor no próximo reconhecimento ou após uma reconexão ao serviço Discurso.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 precisar de limpar a sua lista de frases:If you need to clear your phrase list:

phraseListGrammar->Clear();

Outras opções para melhorar a precisão do reconhecimentoOther options to improve recognition accuracy

As listas de frases são apenas uma opção para melhorar a precisão do reconhecimento.Phrase lists are only one option to improve recognition accuracy. Também pode:You can also:

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o Speech SDK nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Salte para as amostras no GitHubSkip to samples on GitHub

Se quiser saltar diretamente para o código de amostra, consulte as amostras de arranque rápido do GitHub.If you want to skip straight to sample code, see the Go quickstart samples on GitHub.

Pré-requisitosPrerequisites

Este artigo pressupõe que tem uma conta Azure e subscrição do serviço de fala.This article assumes that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Instale o SDK de discursoInstall the Speech SDK

Antes de poder fazer qualquer coisa, terá de instalar o SDK de discurso para ir.Before you can do anything, you'll need to install the Speech SDK for Go.

Discurso-a-texto a partir do microfoneSpeech-to-text from microphone

Utilize a seguinte amostra de código para executar o reconhecimento da fala a partir do microfone do dispositivo predefinido.Use the following code sample to run speech recognition from your default device microphone. Substitua as variáveis subscription e region pelas teclas de subscrição e região.Replace the variables subscription and region with your subscription and region keys. A execução do script iniciará uma sessão de reconhecimento no microfone predefinido e no texto de saída.Running the script will start a recognition session on your default microphone and output text.

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')
}

Consulte os documentos de referência para obter informações detalhadas sobre as SpeechConfig aulas e SpeechRecognizer as classes.See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Discurso-a-texto a partir de ficheiro áudioSpeech-to-text from audio file

Utilize a seguinte amostra para executar o reconhecimento da fala a partir de um ficheiro áudio.Use the following sample to run speech recognition from an audio file. Substitua as variáveis subscription e region pelas teclas de subscrição e região.Replace the variables subscription and region with your subscription and region keys. Adicionalmente, substitua a variável file por um caminho para um ficheiro .wav.Additionally, replace the variable file with a path to a .wav file. Executar o script reconhecerá a fala do ficheiro e o resultado do texto.Running the script will recognize speech from the file, and output the text result.

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)
}

Consulte os documentos de referência para obter informações detalhadas sobre as SpeechConfig aulas e SpeechRecognizer as classes.See the reference docs for detailed information on the SpeechConfig and SpeechRecognizer classes.

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o Speech SDK nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Salte para as amostras no GitHubSkip to samples on GitHub

Se quiser saltar diretamente para o código de amostra, consulte as amostras de arranque rápido de Java no GitHub.If you want to skip straight to sample code, see the Java quickstart samples on GitHub.

Pré-requisitosPrerequisites

Este artigo pressupõe que tem uma conta Azure e subscrição do serviço de fala.This article assumes that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Instale o SDK de discursoInstall the Speech SDK

Antes de poder fazer qualquer coisa, terá de instalar o SDK do Discurso.Before you can do anything, you'll need to install the Speech SDK. Dependendo da sua plataforma, utilize as seguintes instruções:Depending on your platform, use the following instructions:

Criar uma configuração de discursoCreate a speech configuration

Para ligar para o serviço de discurso usando o SDK de discurso, precisa de criar um SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Esta classe inclui informações sobre a sua subscrição, como a sua chave e região associada, ponto final, anfitrião ou token de autorização.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Crie um SpeechConfig utilizando a sua chave e região.Create a SpeechConfig by using your key and region. Consulte a página de apoio da região para encontrar o seu identificador da região.See the region support page to find your region identifier.

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

SpeechConfig config = SpeechConfig.fromSubscription("YourSubscriptionKey", "YourServiceRegion");

Há algumas outras formas de inicializar SpeechConfig uma:There are a few other ways that you can initialize a SpeechConfig:

  • Com um ponto final: passe num ponto final de serviço de discurso.With an endpoint: pass in a Speech service endpoint. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um anfitrião: passe em um endereço de anfitrião.With a host: pass in a host address. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um sinal de autorização: passe em um token de autorização e na região associada.With an authorization token: pass in an authorization token and the associated region.

Nota

Independentemente de estar a realizar reconhecimento de voz, síntese de fala, tradução ou reconhecimento de intenções, irá sempre criar uma configuração.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Reconhecer a partir do microfoneRecognize from microphone

Para reconhecer a fala utilizando o microfone do dispositivo, crie uma AudioConfig utilização fromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using fromDefaultMicrophoneInput(). Em seguida, inicialize SpeechRecognizer um, passando o seu audioConfig e config .Then initialize aSpeechRecognizer, passing your audioConfig and config.

AudioConfig audioConfig = AudioConfig.fromDefaultMicrophoneInput();
SpeechRecognizer recognizer = new SpeechRecognizer(config, 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 pretender utilizar um dispositivo específico de entrada de áudio, tem de especificar o ID do dispositivo no AudioConfig . Saiba como obter o ID do dispositivo para o seu dispositivo de entrada de áudio.Learn how to get the device ID for your audio input device.

Reconhecer a partir de arquivoRecognize from file

Se quiser reconhecer a fala a partir de um ficheiro áudio em vez de utilizar um microfone, ainda precisa de criar um AudioConfig .If you want to recognize speech from an audio file instead of using a microphone, you still need to create an AudioConfig. No entanto, quando criar AudioConfig o , em vez de ligar , ligue e passe o caminho do fromDefaultMicrophoneInput() fromWavFileInput() ficheiro.However, when you create the AudioConfig, instead of calling fromDefaultMicrophoneInput(), call fromWavFileInput() and pass the file path.

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

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

Reconhecer vozRecognize speech

A classe Recogniser para o Discurso SDK para Java expõe alguns métodos que pode usar para reconhecimento de voz.The Recognizer class for the Speech SDK for Java exposes a few methods that you can use for speech recognition.

Reconhecimento de um único tiroSingle-shot recognition

O reconhecimento de um único tiro reconhece assincronamente uma única expressão.Single-shot recognition asynchronously recognizes a single utterance. O fim de uma única expressão é determinado ouvindo o silêncio no final ou até que um máximo de 15 segundos de áudio seja processado.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. Aqui está um exemplo de reconhecimento assíncronos de tiro único recognizeOnceAsync usando:Here's an example of asynchronous single-shot recognition using recognizeOnceAsync:

Future<SpeechRecognitionResult> task = recognizer.recognizeOnceAsync();
SpeechRecognitionResult result = task.get();

Terá de escrever um código para lidar com o resultado.You'll need to write some code to handle the result. Esta amostra result.getReason() avalia:This sample evaluates the result.getReason():

  • Imprime o resultado do reconhecimento: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Se não houver correspondência de reconhecimento, informe o utilizador: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Se for encontrado um erro, imprima a mensagem de erro: 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;
}

Reconhecimento contínuoContinuous recognition

O reconhecimento contínuo é um pouco mais envolvido do que o reconhecimento de um único tiro.Continuous recognition is a bit more involved than single-shot recognition. Requer que subscreva o recognizing recognized , e canceled eventos para obter os resultados de reconhecimento.It requires you to subscribe to the recognizing, recognized, and canceled events to get the recognition results. Para parar o reconhecimento, tem de stopContinuousRecognitionAsync ligar.To stop recognition, you must call stopContinuousRecognitionAsync. Aqui está um exemplo de como o reconhecimento contínuo é realizado num ficheiro de entrada de áudio.Here's an example of how continuous recognition is performed on an audio input file.

Comecemos por definir a entrada e inicializar SpeechRecognizer um:Let's start by defining the input and initializing a SpeechRecognizer:

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

Em seguida, vamos criar uma variável para gerir o estado do reconhecimento da fala.Next, let's create a variable to manage the state of speech recognition. Para começar, declararemos um Semaphore no âmbito da classe.To start, we'll declare a Semaphore at the class scope.

private static Semaphore stopTranslationWithFileSemaphore;

Subscreveremos os eventos enviados do SpeechRecognizer .We'll subscribe to the events sent from the SpeechRecognizer.

  • recognizing: Sinal para eventos que contenham resultados intermédios de reconhecimento.recognizing: Signal for events containing intermediate recognition results.
  • recognized: Sinal para eventos que contenham resultados finais de reconhecimento (indicando uma tentativa de reconhecimento bem sucedida).recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: Sinal para eventos que indiquem o fim de uma sessão de reconhecimento (operação).sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: Sinal para eventos que contenham resultados de reconhecimento cancelados (indicando uma tentativa de reconhecimento que foi cancelada em resultado ou um pedido de cancelamento direto ou, em alternativa, uma falha de transporte ou protocolo).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();
});

Com tudo preparado, podemos startContinuousRecognitionAsync ligar.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();

Modo de ditadoDictation mode

Ao utilizar o reconhecimento contínuo, pode ativar o processamento de ditados utilizando a função correspondente de "ativar o ditado".When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Este modo fará com que a instância config da fala interprete descrições de palavras de estruturas de frases como a pontuação.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Por exemplo, a expressão "Vives no ponto de interrogação da cidade" seria interpretada como o texto "Vives na cidade?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Para ativar o modo de ditado, utilize o enableDictation método no seu SpeechConfig .To enable dictation mode, use the enableDictation method on your SpeechConfig.

config.enableDictation();

Alterar linguagem de origemChange source language

Uma tarefa comum para o reconhecimento da fala é especificar a linguagem de entrada (ou origem).A common task for speech recognition is specifying the input (or source) language. Vamos ver como mudaria a língua de entrada para o francês.Let's take a look at how you would change the input language to French. No seu código, encontre o SpeechConfig seu, em seguida, adicione esta linha diretamente abaixo.In your code, find your SpeechConfig, then add this line directly below it.

config.setSpeechRecognitionLanguage("fr-FR");

setSpeechRecognitionLanguage é um parâmetro que toma uma corda como argumento.setSpeechRecognitionLanguage is a parameter that takes a string as an argument. Pode fornecer qualquer valor na lista de locais/idiomas suportados.You can provide any value in the list of supported locales/languages.

Melhorar a precisão do reconhecimentoImprove recognition accuracy

Existem algumas formas de melhorar a precisão do reconhecimento com o SDK do discurso.There are a few ways to improve recognition accuracy with the Speech SDK. Vamos ver as Listas de Frases.Let's take a look at Phrase Lists. As listas de frases são usadas para identificar frases conhecidas em dados áudio, como o nome de uma pessoa ou uma localização específica.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Palavras simples ou frases completas podem ser adicionadas a uma Lista de Frases.Single words or complete phrases can be added to a Phrase List. Durante o reconhecimento, é utilizada uma entrada numa lista de frases se for incluída no áudio uma correspondência exata para toda a frase.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Se não for encontrado um jogo exato com a frase, o reconhecimento não é assistido.If an exact match to the phrase is not found, recognition is not assisted.

Importante

A funcionalidade Lista de Frases só está disponível em inglês.The Phrase List feature is only available in English.

Para utilizar uma lista de frases, primeiro crie um PhraseListGrammar objeto e, em seguida, adicione palavras e frases específicas com AddPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with AddPhrase.

Quaisquer alterações que PhraseListGrammar entrem em vigor no próximo reconhecimento ou após uma reconexão ao serviço Discurso.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 precisar de limpar a sua lista de frases:If you need to clear your phrase list:

phraseList.clear();

Outras opções para melhorar a precisão do reconhecimentoOther options to improve recognition accuracy

As listas de frases são apenas uma opção para melhorar a precisão do reconhecimento.Phrase lists are only one option to improve recognition accuracy. Também pode:You can also:

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o Speech SDK nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Salte para as amostras no GitHubSkip to samples on GitHub

Se quiser saltar diretamente para o código de amostra, consulte as amostras de arranque rápido do JavaScript no GitHub.If you want to skip straight to sample code, see the JavaScript quickstart samples on GitHub.

Pré-requisitosPrerequisites

Este artigo pressupõe que tem uma conta Azure e subscrição do serviço de fala.This article assumes that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Instale o SDK de discursoInstall the Speech SDK

Antes de poder fazer qualquer coisa, terá de instalar o SDK de voz para JavaScript .Before you can do anything, you'll need to install the Speech SDK for JavaScript . Dependendo da sua plataforma, utilize as seguintes instruções:Depending on your platform, use the following instructions:

Além disso, dependendo do ambiente-alvo, utilize um dos seguintes:Additionally, depending on the target environment use one of the following:

Faça o download e extrai o Ficheiro SDK de discurso para JavaScript microsoft.cognitiveservices.speech.sdk.bundle.js e coloque-o numa pasta acessível ao seu ficheiro HTML.Download and extract the Speech SDK for JavaScript microsoft.cognitiveservices.speech.sdk.bundle.js file, and place it in a folder accessible to your HTML file.

<script src="microsoft.cognitiveservices.speech.sdk.bundle.js"></script>;

Dica

Se estiver a direcionar um navegador web e a usar a <script> etiqueta; o sdk prefixo não é necessário.If you're targeting a web browser, and using the <script> tag; the sdk prefix is not needed. O sdk prefixo é um pseudónimo usado para dar o nome ao require módulo.The sdk prefix is an alias used to name the require module.

Criar uma configuração de discursoCreate a speech configuration

Para ligar para o serviço de discurso usando o SDK de discurso, precisa de criar um SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Esta classe inclui informações sobre a sua subscrição, como a sua chave e região associada, ponto final, anfitrião ou token de autorização.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Crie uma SpeechConfig utilização da sua chave e região.Create a SpeechConfig using your key and region. Consulte a página de apoio da região para encontrar o seu identificador da região.See the region support page to find your region identifier.

const speechConfig = SpeechConfig.fromSubscription("YourSubscriptionKey", "YourServiceRegion");

Há algumas outras formas de inicializar SpeechConfig uma:There are a few other ways that you can initialize a SpeechConfig:

  • Com um ponto final: passe num ponto final de serviço de discurso.With an endpoint: pass in a Speech service endpoint. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um anfitrião: passe em um endereço de anfitrião.With a host: pass in a host address. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um sinal de autorização: passe em um token de autorização e na região associada.With an authorization token: pass in an authorization token and the associated region.

Nota

Independentemente de estar a realizar reconhecimento de voz, síntese de fala, tradução ou reconhecimento de intenções, irá sempre criar uma configuração.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Reconhecer a partir do microfoneRecognize from microphone

Para reconhecer a fala utilizando o microfone do dispositivo, crie uma AudioConfig utilização fromDefaultMicrophoneInput() .To recognize speech using your device microphone, create an AudioConfig using fromDefaultMicrophoneInput(). Em seguida, inicialize SpeechRecognizer um, passando o seu speechConfig e audioConfig .Then initialize a SpeechRecognizer, passing your speechConfig and audioConfig.

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

console.log('Speak into your microphone.');
recognizer.recognizeOnceAsync(result => {
    console.log(`RECOGNIZED: Text=${result.text}`);
});

Se pretender utilizar um dispositivo específico de entrada de áudio, tem de especificar o ID do dispositivo no AudioConfig .If you want to use a specific audio input device, you need to specify the device ID in the AudioConfig. Saiba como obter o ID do dispositivo para o seu dispositivo de entrada de áudio.Learn how to get the device ID for your audio input device.

Reconhecer a partir de ficheiro (apenas Node.js)Recognize from file (Node.js only)

Se quiser reconhecer a fala a partir de um ficheiro áudio em vez de utilizar um microfone, ainda precisa de fornecer um AudioConfig .If you want to recognize speech from an audio file instead of using a microphone, you still need to provide an AudioConfig. No entanto, quando cria o AudioConfig , em vez de ligar - ligue e passe o caminho do fromDefaultMicrophoneInput() fromWavFileInput() ficheiro.However, when you create the AudioConfig, instead of calling fromDefaultMicrophoneInput(), you call fromWavFileInput() and pass the file path.

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

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

Reconhecer vozRecognize speech

A classe Recogniser para o SDK de fala para JavaScript expõe alguns métodos que pode usar para reconhecimento de voz.The Recognizer class for the Speech SDK for JavaScript exposes a few methods that you can use for speech recognition.

Reconhecimento de um único tiroSingle-shot recognition

O reconhecimento de um único tiro reconhece assincronamente uma única expressão.Single-shot recognition asynchronously recognizes a single utterance. O fim de uma única expressão é determinado ouvindo o silêncio no final ou até que um máximo de 15 segundos de áudio seja processado.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. Aqui está um exemplo de reconhecimento assíncronos de tiro único recognizeOnceAsync usando:Here's an example of asynchronous single-shot recognition using recognizeOnceAsync:

recognizer.recognizeOnceAsync(result => {
    // Interact with result
});

Terá de escrever um código para lidar com o resultado.You'll need to write some code to handle the result. Esta amostra result.reason avalia:This sample evaluates the result.reason:

  • Imprime o resultado do reconhecimento: ResultReason.RecognizedSpeechPrints the recognition result: ResultReason.RecognizedSpeech
  • Se não houver correspondência de reconhecimento, informe o utilizador: ResultReason.NoMatchIf there is no recognition match, inform the user: ResultReason.NoMatch
  • Se for encontrado um erro, imprima a mensagem de erro: ResultReason.CanceledIf an error is encountered, print the error message: ResultReason.Canceled
switch (result.reason) {
    case ResultReason.RecognizedSpeech:
        console.log(`RECOGNIZED: Text=${result.text}`);
        console.log("    Intent not recognized.");
        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;
    }

Reconhecimento contínuoContinuous recognition

O reconhecimento contínuo é um pouco mais envolvido do que o reconhecimento de um único tiro.Continuous recognition is a bit more involved than single-shot recognition. Requer que subscreva o Recognizing Recognized , e Canceled eventos para obter os resultados de reconhecimento.It requires you to subscribe to the Recognizing, Recognized, and Canceled events to get the recognition results. Para parar o reconhecimento, tem de stopContinuousRecognitionAsync ligar.To stop recognition, you must call stopContinuousRecognitionAsync. Aqui está um exemplo de como o reconhecimento contínuo é realizado num ficheiro de entrada de áudio.Here's an example of how continuous recognition is performed on an audio input file.

Comecemos por definir a entrada e inicializar SpeechRecognizer um:Let's start by defining the input and initializing a SpeechRecognizer:

const recognizer = new SpeechRecognizer(speechConfig);

Subscreveremos os eventos enviados do SpeechRecognizer .We'll subscribe to the events sent from the SpeechRecognizer.

  • recognizing: Sinal para eventos que contenham resultados intermédios de reconhecimento.recognizing: Signal for events containing intermediate recognition results.
  • recognized: Sinal para eventos que contenham resultados finais de reconhecimento (indicando uma tentativa de reconhecimento bem sucedida).recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • sessionStopped: Sinal para eventos que indiquem o fim de uma sessão de reconhecimento (operação).sessionStopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: Sinal para eventos que contenham resultados de reconhecimento cancelados (indicando uma tentativa de reconhecimento que foi cancelada em resultado ou um pedido de cancelamento direto ou, em alternativa, uma falha de transporte ou protocolo).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();
};

Com tudo preparado, podemos startContinuousRecognitionAsync ligar.With everything set up, we can call startContinuousRecognitionAsync.

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

// Something later can call, stops recognition.
// recognizer.StopContinuousRecognitionAsync();

Modo de ditadoDictation mode

Ao utilizar o reconhecimento contínuo, pode ativar o processamento de ditados utilizando a função correspondente de "ativar o ditado".When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Este modo fará com que a instância config da fala interprete descrições de palavras de estruturas de frases como a pontuação.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Por exemplo, a expressão "Vives no ponto de interrogação da cidade" seria interpretada como o texto "Vives na cidade?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Para ativar o modo de ditado, utilize o enableDictation método no seu SpeechConfig .To enable dictation mode, use the enableDictation method on your SpeechConfig.

speechConfig.enableDictation();

Alterar linguagem de origemChange source language

Uma tarefa comum para o reconhecimento da fala é especificar a linguagem de entrada (ou origem).A common task for speech recognition is specifying the input (or source) language. Vamos ver como mudaria a língua de entrada para italiana.Let's take a look at how you would change the input language to Italian. No seu código, encontre o SpeechConfig seu, em seguida, adicione esta linha diretamente abaixo.In your code, find your SpeechConfig, then add this line directly below it.

speechConfig.speechRecognitionLanguage = "it-IT";

A speechRecognitionLanguage propriedade espera uma cadeia de formato idioma-local.The speechRecognitionLanguage property expects a language-locale format string. Pode fornecer qualquer valor na coluna Locale na lista de locais/idiomas suportados.You can provide any value in the Locale column in the list of supported locales/languages.

Melhorar a precisão do reconhecimentoImprove recognition accuracy

Há algumas formas de melhorar a precisão do reconhecimento com o Discurso Vamos ver as Listas de Frases.There are a few ways to improve recognition accuracy with the Speech Let's take a look at Phrase Lists. As listas de frases são usadas para identificar frases conhecidas em dados áudio, como o nome de uma pessoa ou uma localização específica.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Palavras simples ou frases completas podem ser adicionadas a uma Lista de Frases.Single words or complete phrases can be added to a Phrase List. Durante o reconhecimento, é utilizada uma entrada numa lista de frases se for incluída no áudio uma correspondência exata para toda a frase.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Se não for encontrado um jogo exato com a frase, o reconhecimento não é assistido.If an exact match to the phrase is not found, recognition is not assisted.

Importante

A funcionalidade Lista de Frases só está disponível em inglês.The Phrase List feature is only available in English.

Para utilizar uma lista de frases, primeiro crie um PhraseListGrammar objeto e, em seguida, adicione palavras e frases específicas com addPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

Quaisquer alterações que PhraseListGrammar entrem em vigor no próximo reconhecimento ou após uma reconexão ao serviço Discurso.Any changes to PhraseListGrammar take effect on the next recognition or after a reconnection to the Speech service.

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

Se precisar de limpar a sua lista de frases:If you need to clear your phrase list:

phraseList.clear();

Outras opções para melhorar a precisão do reconhecimentoOther options to improve recognition accuracy

As listas de frases são apenas uma opção para melhorar a precisão do reconhecimento.Phrase lists are only one option to improve recognition accuracy. Também pode:You can also:

Pode transcrever a fala em texto utilizando o SDK do discurso para Swift e Objective-C.You can transcribe speech into text using the Speech SDK for Swift and Objective-C.

Pré-requisitosPrerequisites

As seguintes amostras assumem que tem uma conta Azure e subscrição do serviço de fala.The following samples assume that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Instalar SDK de discurso e amostrasInstall Speech SDK and samples

O Discurso dos Serviços Cognitivos SDK contém amostras escritas em Swift e Objective-C para iOS e Mac.The Cognitive Services Speech SDK contains samples written in in Swift and Objective-C for iOS and Mac. Clique num link para ver as instruções de instalação de cada amostra:Click a link to see installation instructions for each sample:

Também fornecemos um SDK de discurso on-line para referência objective-C.We also provide an online Speech SDK for Objective-C Reference.

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o Speech SDK nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech SDK in your apps and products to perform high-quality speech-to-text conversion.

Salte para as amostras no GitHubSkip to samples on GitHub

Se quiser saltar diretamente para o código de amostra, consulte as amostras de arranque rápido da Python no GitHub.If you want to skip straight to sample code, see the Python quickstart samples on GitHub.

Pré-requisitosPrerequisites

Este artigo assume:This article assumes:

Instale e importe o Speech SDKInstall and import the Speech SDK

Antes de poder fazer qualquer coisa, terá de instalar o SDK do Discurso.Before you can do anything, you'll need to install the Speech SDK.

pip install azure-cognitiveservices-speech

Se estiver no macOS e tiver problemas de instalação, poderá ter de executar este comando primeiro.If you're on macOS and run into install issues, you may need to run this command first.

python3 -m pip install --upgrade pip

Depois da instalação do Speech SDK, importe-o para o seu projeto Python.After the Speech SDK is installed, import it into your Python project.

import azure.cognitiveservices.speech as speechsdk

Criar uma configuração de discursoCreate a speech configuration

Para ligar para o serviço de discurso usando o SDK de discurso, precisa de criar um SpeechConfig .To call the Speech service using the Speech SDK, you need to create a SpeechConfig. Esta classe inclui informações sobre a sua subscrição, como a sua chave e região associada, ponto final, anfitrião ou token de autorização.This class includes information about your subscription, like your key and associated region, endpoint, host, or authorization token. Crie uma SpeechConfig utilização da sua chave e região.Create a SpeechConfig using your key and region. Consulte a página de apoio da região para encontrar o seu identificador da região.See the region support page to find your region identifier.

speech_key, service_region = "YourSubscriptionKey", "YourServiceRegion"
speech_config = speechsdk.SpeechConfig(subscription=speech_key, region=service_region)

Há algumas outras formas de inicializar SpeechConfig uma:There are a few other ways that you can initialize a SpeechConfig:

  • Com um ponto final: passe num ponto final de serviço de discurso.With an endpoint: pass in a Speech service endpoint. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um anfitrião: passe em um endereço de anfitrião.With a host: pass in a host address. Uma chave ou sinal de autorização é opcional.A key or authorization token is optional.
  • Com um sinal de autorização: passe em um token de autorização e na região associada.With an authorization token: pass in an authorization token and the associated region.

Nota

Independentemente de estar a realizar reconhecimento de voz, síntese de fala, tradução ou reconhecimento de intenções, irá sempre criar uma configuração.Regardless of whether you're performing speech recognition, speech synthesis, translation, or intent recognition, you'll always create a configuration.

Reconhecer a partir do microfoneRecognize from microphone

Para reconhecer a fala usando o microfone do seu dispositivo, basta criar um SpeechRecognizer sem passar um , e passar o seu AudioConfig speech_config .To recognize speech using your device microphone, simply create a SpeechRecognizer without passing an AudioConfig, and pass your speech_config.

speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config)

print("Speak into your microphone.")
result = speech_recognizer.recognize_once_async().get()
print(result.text)

Se pretender utilizar um dispositivo de entrada de áudio específico, tem de especificar o ID do dispositivo num AudioConfig , e passá-lo para o SpeechRecognizer param do audio_config construtor.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. Saiba como obter o ID do dispositivo para o seu dispositivo de entrada de áudio.Learn how to get the device ID for your audio input device.

Reconhecer a partir de arquivoRecognize from file

Se quiser reconhecer a fala a partir de um ficheiro áudio em vez de utilizar um microfone, crie um AudioConfig e utilize o filename parâmetro.If you want to recognize speech from an audio file instead of using a microphone, create an AudioConfig and use the filename parameter.

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)

Reconhecer vozRecognize speech

A classe Recogniser para o Discurso SDK para Python expõe alguns métodos que pode usar para reconhecimento de voz.The Recognizer class for the Speech SDK for Python exposes a few methods that you can use for speech recognition.

Reconhecimento de um único tiroSingle-shot recognition

O reconhecimento de um único tiro reconhece assincronamente uma única expressão.Single-shot recognition asynchronously recognizes a single utterance. O fim de uma única expressão é determinado ouvindo o silêncio no final ou até que um máximo de 15 segundos de áudio seja processado.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. Aqui está um exemplo de reconhecimento assíncronos de tiro único recognize_once_async() usando:Here's an example of asynchronous single-shot recognition using recognize_once_async():

result = speech_recognizer.recognize_once_async().get()

Terá de escrever um código para iterar através do resultado.You'll need to write some code to iterate through the result. Esta amostra result.reason avalia:This sample evaluates the result.reason:

  • Imprime o resultado do reconhecimento: speechsdk.ResultReason.RecognizedSpeechPrints the recognition result: speechsdk.ResultReason.RecognizedSpeech
  • Se não houver correspondência de reconhecimento, informe o utilizador: speechsdk.ResultReason.NoMatch If there is no recognition match, inform the user: speechsdk.ResultReason.NoMatch
  • Se for encontrado um erro, imprima a mensagem de erro: 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))

Reconhecimento contínuoContinuous recognition

O reconhecimento contínuo é um pouco mais envolvido do que o reconhecimento de um único tiro.Continuous recognition is a bit more involved than single-shot recognition. Requer que se conecte ao EventSignal para obter os resultados de reconhecimento, e para parar o reconhecimento, deve chamar stop_continuous_recognition() ou stop_continuous_recognition().It requires you to connect to the EventSignal to get the recognition results, and in to stop recognition, you must call stop_continuous_recognition() or stop_continuous_recognition(). Aqui está um exemplo de como o reconhecimento contínuo é realizado num ficheiro de entrada de áudio.Here's an example of how continuous recognition is performed on an audio input file.

Comecemos por definir a entrada e inicializar SpeechRecognizer um: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)

Em seguida, vamos criar uma variável para gerir o estado do reconhecimento da fala.Next, let's create a variable to manage the state of speech recognition. Para começar, vamos definir isto para False , uma vez que no início do reconhecimento podemos assumir com segurança que não está terminado.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

Agora, vamos criar uma chamada para parar o reconhecimento contínuo quando um evt é recebido.Now, we're going to create a callback to stop continuous recognition when an evt is received. Há algumas coisas a ter em mente.There's a few things to keep in mind.

  • Quando um evt é recebido, a evt mensagem é impressa.When an evt is received, the evt message is printed.
  • Depois de evt recebido, stop_continuous_recognition é chamado a parar o reconhecimento.After an evt is received, stop_continuous_recognition() is called to stop recognition.
  • O estado de reconhecimento é alterado para 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

Esta amostra de código mostra como ligar as chamadas a eventos enviados a partir do SpeechRecognizer .This code sample shows how to connect callbacks to events sent from the SpeechRecognizer.

  • recognizing: Sinal para eventos que contenham resultados intermédios de reconhecimento.recognizing: Signal for events containing intermediate recognition results.
  • recognized: Sinal para eventos que contenham resultados finais de reconhecimento (indicando uma tentativa de reconhecimento bem sucedida).recognized: Signal for events containing final recognition results (indicating a successful recognition attempt).
  • session_started: Sinal para eventos que indiquem o início de uma sessão de reconhecimento (operação).session_started: Signal for events indicating the start of a recognition session (operation).
  • session_stopped: Sinal para eventos que indiquem o fim de uma sessão de reconhecimento (operação).session_stopped: Signal for events indicating the end of a recognition session (operation).
  • canceled: Sinal para eventos que contenham resultados de reconhecimento cancelados (indicando uma tentativa de reconhecimento que foi cancelada em resultado ou um pedido de cancelamento direto ou, em alternativa, uma falha de transporte ou protocolo).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)

Com tudo configurado, podemos chamar start_continuous_recognition().With everything set up, we can call start_continuous_recognition().

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

Modo de ditadoDictation mode

Ao utilizar o reconhecimento contínuo, pode ativar o processamento de ditados utilizando a função correspondente de "ativar o ditado".When using continuous recognition, you can enable dictation processing by using the corresponding "enable dictation" function. Este modo fará com que a instância config da fala interprete descrições de palavras de estruturas de frases como a pontuação.This mode will cause the speech config instance to interpret word descriptions of sentence structures such as punctuation. Por exemplo, a expressão "Vives no ponto de interrogação da cidade" seria interpretada como o texto "Vives na cidade?".For example, the utterance "Do you live in town question mark" would be interpreted as the text "Do you live in town?".

Para ativar o modo de ditado, utilize o enable_dictation() método no seu SpeechConfig .To enable dictation mode, use the enable_dictation() method on your SpeechConfig.

SpeechConfig.enable_dictation()

Alterar linguagem de origemChange source language

Uma tarefa comum para o reconhecimento da fala é especificar a linguagem de entrada (ou origem).A common task for speech recognition is specifying the input (or source) language. Vamos ver como mudaria a língua de entrada para alemão.Let's take a look at how you would change the input language to German. No seu código, encontre o seu SpeechConfig e, em seguida, adicione esta linha diretamente abaixo.In your code, find your SpeechConfig, then add this line directly below it.

speech_config.speech_recognition_language="de-DE"

speech_recognition_language é um parâmetro que toma uma corda como argumento.speech_recognition_language is a parameter that takes a string as an argument. Pode fornecer qualquer valor na lista de locais/idiomas suportados.You can provide any value in the list of supported locales/languages.

Melhorar a precisão do reconhecimentoImprove recognition accuracy

Existem algumas formas de melhorar a precisão do reconhecimento com o SDK do discurso.There are a few ways to improve recognition accuracy with the Speech SDK. Vamos ver as Listas de Frases.Let's take a look at Phrase Lists. As listas de frases são usadas para identificar frases conhecidas em dados áudio, como o nome de uma pessoa ou uma localização específica.Phrase Lists are used to identify known phrases in audio data, like a person's name or a specific location. Palavras simples ou frases completas podem ser adicionadas a uma Lista de Frases.Single words or complete phrases can be added to a Phrase List. Durante o reconhecimento, é utilizada uma entrada numa lista de frases se for incluída no áudio uma correspondência exata para toda a frase.During recognition, an entry in a phrase list is used if an exact match for the entire phrase is included in the audio. Se não for encontrado um jogo exato com a frase, o reconhecimento não é assistido.If an exact match to the phrase is not found, recognition is not assisted.

Importante

A funcionalidade Lista de Frases só está disponível em inglês.The Phrase List feature is only available in English.

Para utilizar uma lista de frases, primeiro crie um PhraseListGrammar objeto e, em seguida, adicione palavras e frases específicas com addPhrase .To use a phrase list, first create a PhraseListGrammar object, then add specific words and phrases with addPhrase.

Quaisquer alterações que PhraseListGrammar entrem em vigor no próximo reconhecimento ou após uma reconexão ao serviço Discurso.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 precisar de limpar a sua lista de frases:If you need to clear your phrase list:

phrase_list_grammar.clear()

Outras opções para melhorar a precisão do reconhecimentoOther options to improve recognition accuracy

As listas de frases são apenas uma opção para melhorar a precisão do reconhecimento.Phrase lists are only one option to improve recognition accuracy. Também pode:You can also:

Neste arranque rápido, aprende-se a converter a fala em texto utilizando o serviço de fala e o cURL.In this quickstart, you learn how to convert speech to text using the Speech service and cURL.

Para uma visão de alto nível dos conceitos Fala-a-Texto, consulte o artigo de visão geral.For a high-level look at Speech-to-Text concepts, see the overview article.

Pré-requisitosPrerequisites

Este artigo pressupõe que tem uma conta Azure e subscrição do serviço de fala.This article assumes that you have an Azure account and Speech service subscription. Se não tiver uma conta e subscrição, experimente gratuitamente o serviço Desemação.If you don't have an account and subscription, try the Speech service for free.

Converter voz em textoConvert speech to text

Com um pedido de comando, executar o seguinte comando.At a command prompt, run the following command. Terá de inserir os seguintes valores no comando.You will need to insert the following values into the command.

  • A chave de subscrição do serviço de discurso.Your Speech service subscription key.
  • A sua região de serviço de discurso.Your Speech service region.
  • O caminho do ficheiro áudio de entrada.The input audio file path. Pode gerar ficheiros áudio utilizando texto-a-discurso.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'

Deve receber uma resposta como a seguinte.You should receive a response like the following one.

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

Para obter mais informações consulte a referência API do REST de voz a texto.For more information see the speech-to-text REST API reference.

Uma das características centrais do serviço de fala é a capacidade de reconhecer e transcrever a fala humana (muitas vezes referida como discurso-a-texto).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). Neste arranque rápido, aprende-se a usar o CLI do Discurso nas suas apps e produtos para realizar conversão de fala a texto de alta qualidade.In this quickstart, you learn how to use the Speech CLI in your apps and products to perform high-quality speech-to-text conversion.

Transferir e instalarDownload and install

Nota

No Windows, precisa do Microsoft Visual C++ Redistributable para Visual Studio 2019 para a sua plataforma.On Windows, you need the Microsoft Visual C++ Redistributable for Visual Studio 2019 for your platform. A instalação deste deste facto pela primeira vez poderá exigir que reinicie o Windows.Installing this for the first time may require you to restart Windows.

Siga estes passos para instalar o CLI do discurso no Windows:Follow these steps to install the Speech CLI on Windows:

  1. Descarregue o arquivo zipdo Speech CLI e, em seguida, extraia-o.Download the Speech CLI zip archive, then extract it.
  2. Vá ao diretório de raiz spx-zips que extraiu do download e extraa o subdiretor de que necessita ( spx-net471 para .NET Framework 4.7, ou spx-netcore-win-x64 para .NET Core 3.0 num CPU x64).Go to the root directory spx-zips that you extracted from the download, and extract the subdirectory that you need (spx-net471 for .NET Framework 4.7, or spx-netcore-win-x64 for .NET Core 3.0 on an x64 CPU).

No pedido de comando, altere o diretório para este local e, em seguida, escreva spx para ver ajuda para o CLI do discurso.In the command prompt, change directory to this location, and then type spx to see help for the Speech CLI.

Nota

No Windows, o CLI do Discurso só pode mostrar os tipos de letra disponíveis para o pedido de comando no computador local.On Windows, the Speech CLI can only show fonts available to the command prompt on the local computer. O Windows Terminal suporta todas as fontes produzidas interativamente pelo Speech CLI.Windows Terminal supports all fonts produced interactively by the Speech CLI. Se você des output para um ficheiro, um editor de texto como o Notepad ou um navegador web como o Microsoft Edge também pode mostrar todos os tipos de letra.If you output to a file, a text editor like Notepad or a web browser like Microsoft Edge can also show all fonts.

Nota

Powershell não verifica o diretório local quando procura um comando.Powershell does not check the local directory when looking for a command. Em Powershell, altere o diretório para a localização spx e ligue para a ferramenta entrando .\spx .In Powershell, change directory to the location of spx and call the tool by entering .\spx. Se adicionar este diretório ao seu caminho, o pedido de comando Powershell e Windows encontrará spx a partir de qualquer diretório sem incluir o .\ prefixo.If you add this directory to your path, Powershell and the Windows command prompt will find spx from any directory without including the .\ prefix.

Criar config de subscriçãoCreate subscription config

Para começar a utilizar o CLI do Discurso, tem de introduzir a tecla de subscrição do Discurso e o identificador da região.To start using the Speech CLI, you need to enter your Speech subscription key and region identifier. Obtenha estas credenciais seguindo os passos no serviço Try the Speech gratuitamente.Get these credentials by following steps in Try the Speech service for free. Assim que tiver a chave de subscrição e o identificador da região (ex.Once you have your subscription key and region identifier (ex. eastus, westus executar os seguintes comandos.eastus, westus), run the following commands.

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

A autenticação por subscrição está agora armazenada para futuros pedidos SPX.Your subscription authentication is now stored for future SPX requests. Se precisar de remover qualquer um destes valores armazenados, corra spx config @region --clear ou spx config @key --clear .If you need to remove either of these stored values, run spx config @region --clear or spx config @key --clear.

Discurso-a-texto a partir do microfoneSpeech-to-text from microphone

Ligue e ligue o microfone do PC e desligue quaisquer aplicações que possam também utilizar o microfone.Plug in and turn on your PC microphone, and turn off any apps that might also use the microphone. Alguns computadores têm um microfone incorporado, enquanto outros requerem a configuração de um dispositivo Bluetooth.Some computers have a built-in microphone, while others require configuration of a Bluetooth device.

Agora está pronto para executar o Discurso CLI para reconhecer o discurso do seu microfone.Now you're ready to run the Speech CLI to recognize speech from your microphone. Da linha de comando, mude para o diretório que contém o ficheiro binário Speech CLI e execute o seguinte comando.From the command line, change to the directory that contains the Speech CLI binary file, and run the following command.

spx recognize --microphone

Nota

O CLI do Discurso não tem em inglês.The Speech CLI defaults to English. Pode escolher uma língua diferente da tabela Fala-a-texto.You can choose a different language from the Speech-to-text table. Por exemplo, adicione --source de-DE para reconhecer o discurso alemão.For example, add --source de-DE to recognize German speech.

Fala para o microfone e vês a transcrição das tuas palavras em texto em tempo real.Speak into the microphone, and you see transcription of your words into text in real-time. O Discurso CLI para após um período de silêncio, ou quando premir ctrl-C.The Speech CLI will stop after a period of silence, or when you press ctrl-C.

Discurso-a-texto a partir de ficheiro áudioSpeech-to-text from audio file

O CLI do Discurso pode reconhecer a fala em muitos formatos de ficheiros e linguagens naturais.The Speech CLI can recognize speech in many file formats and natural languages. Neste exemplo, pode utilizar qualquer ficheiro WAV (16kHz ou 8kHz, 16-bit e mono PCM) que contenha a fala em inglês.In this example, you can use any WAV file (16kHz or 8kHz, 16-bit, and mono PCM) that contains English speech. Ou se quiser uma amostra rápida, descarregue o ficheiro whatstheweatherlike.wav e copie-o para o mesmo diretório que o ficheiro binário Speech CLI.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.

Agora está pronto para executar o CLI do Discurso para reconhecer a fala encontrada no ficheiro áudio executando o seguinte comando.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

O CLI do Discurso não tem em inglês.The Speech CLI defaults to English. Pode escolher uma língua diferente da tabela Fala-a-texto.You can choose a different language from the Speech-to-text table. Por exemplo, adicione --source de-DE para reconhecer o discurso alemão.For example, add --source de-DE to recognize German speech.

O Discurso CLI mostrará uma transcrição de texto do discurso no ecrã.The Speech CLI will show a text transcription of the speech on the screen.

Passos seguintesNext steps