Exercício – Criar um aplicativo de conversão de fala em texto com reconhecimento de disparo único

Concluído

Neste exercício, você criará um aplicativo que usa o reconhecimento de captura única para transcrever um arquivo de áudio de amostra que você baixará.

Criar seu aplicativo de conversão de fala em texto

  1. No Cloud Shell à direita, crie um diretório para o aplicativo e altere para o novo diretório:

    mkdir speech-to-text
    cd speech-to-text
    
  2. Crie um aplicativo .NET Core:

    dotnet new console
    

    Esse comando deve levar alguns segundos para ser concluído.

  3. Quando o aplicativo .NET Core for criado, adicione o pacote do SDK de Fala ao aplicativo:

    dotnet add package Microsoft.CognitiveServices.Speech
    

    Esse comando deve levar alguns segundos para ser concluído.

Baixar um arquivo WAVE para reconhecimento

No Cloud Shell à direita, execute o comando a seguir para baixar um arquivo WAV de exemplo que contém uma série de citações da peça "Do jeito que você gosta" de William Shakespeare.

curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav

Você usará esse arquivo WAV para o aplicativo neste exercício e o aplicativo no próximo exercício.

Adicionar o código para o aplicativo de conversão de texto em fala

  1. No Cloud Shell à direita, abra o arquivo Program.cs:

    code Program.cs
    
  2. Remova todo o código existente e adicione as seguintes instruções using, que habilitam as APIs de Fala de IA do Azure para seu aplicativo:

    using System.Text;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
  3. Adicione o seguinte código, que utiliza as APIs de Fala de IA do Azure para converter o conteúdo do arquivo WAV que você criou anteriormente para criar um arquivo de texto com a fala transcrita. Substitua os valores azureKey e azureLocation pelos que você copiou no último exercício.

    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    Esse código utiliza sua chave e localização para inicializar uma conexão do Fala de IA do Azure. Em seguida, ele lê o conteúdo do arquivo WAV que você baixou. Depois, ele usa o método RecognizeOnceAsync() do SpeechRecognizer para converter o áudio em texto e, em seguida, usa um gravador de fluxo para salvar os resultados em um arquivo de texto.

  4. Depois que você adicionar todo o código, o arquivo deverá se parecer com o seguinte exemplo:

    using System.Text;
    using System.Threading.Tasks;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
    string azureKey = "ENTER YOUR KEY FROM THE FIRST EXERCISE";
    string azureLocation = "ENTER YOUR LOCATION FROM THE FIRST EXERCISE";
    string textFile = "Shakespeare.txt";
    string waveFile = "Shakespeare.wav";
    
    try
    {
        FileInfo fileInfo = new FileInfo(waveFile);
        if (fileInfo.Exists)
        {
            Console.WriteLine("Speech recognition started.");
            var speechConfig = SpeechConfig.FromSubscription(azureKey, azureLocation);
            using var audioConfig = AudioConfig.FromWavFileInput(fileInfo.FullName);
            using var speechRecognizer = new SpeechRecognizer(speechConfig, audioConfig);
            var result = await speechRecognizer.RecognizeOnceAsync();
    
            FileStream fileStream = File.OpenWrite(textFile);
            StreamWriter streamWriter = new StreamWriter(fileStream, Encoding.UTF8);
            streamWriter.WriteLine(result.Text);
            streamWriter.Close();
            Console.WriteLine("Speech recognition stopped.");
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex.Message);
    }
    

    Certifique-se de atualizar os valores das variáveis azureKey e azureLocation com sua chave e seu local do exercício anterior.

  5. Para salvar suas alterações, pressione Ctrl+S a fim de salvar o arquivo e Ctrl+Q para sair do editor.

Execute seu aplicativo.

  1. Para executar o aplicativo, use o seguinte comando no Cloud Shell à direita:

    dotnet run
    
  2. Quando nenhum erro é exibido, isso significa que o aplicativo foi executado com sucesso e que você verá as seguintes respostas exibidas:

    Speech recognition started.
    Speech recognition stopped.
    
  3. Execute o seguinte comando para obter uma lista de arquivos no diretório:

    ls -l
    

    Você verá o arquivo Shakespeare.txt na lista de arquivos e verá uma resposta como a do seguinte exemplo:

    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 bin
    drwxr-xr-x 3 user   user     4096 Oct  1 11:11 obj
    -rw-r--r-- 1 user   user     1476 Oct  1 11:11 Program.cs
    -rw-r--r-- 1 user   user       98 Oct  1 11:11 Shakespeare.txt
    -rwxr-xr-x 1 user   user   978242 Oct  1 11:11 Shakespeare.wav
    -rw-r--r-- 1 user   user      348 Oct  1 11:11 speech to text.csproj
    

    Você observará que o tamanho do arquivo de texto é pequeno; neste exemplo, possui apenas 98 bytes.

  4. Para exibir o conteúdo do arquivo Shakespeare.txt, use o seguinte comando:

    cat Shakespeare.txt
    

    Você verá uma resposta como no seguinte exemplo:

    The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
    

    Se escutasse o arquivo WAV de exemplo, você notaria que esse texto é apenas os primeiros segundos do áudio. Como você usou o método RecognizeOnceAsync() do SpeechRecognizer, o reconhecimento de fala em texto parava quando o locutor pausava.

No próximo exercício, você aprenderá a continuar o reconhecimento de fala em texto para todo o arquivo de áudio.