Exercício - Criar um aplicativo de reconhecimento de fala para texto de captura única

Concluído

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

Crie seu aplicativo de fala para texto

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

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

    dotnet new console
    

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

  3. Quando seu aplicativo .NET Core tiver sido criado, adicione o pacote Speech SDK ao seu aplicativo:

    dotnet add package Microsoft.CognitiveServices.Speech
    

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

Baixe um arquivo WAVE para reconhecimento

No Cloud Shell à direita, execute o seguinte comando para baixar um arquivo WAV de exemplo que contém uma série de citações da peça "As You Like It", de William Shakespeare.

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

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

Adicione o código do seu aplicativo de texto para 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 using instruções, que habilitam as APIs de Fala do Azure AI para seu aplicativo:

    using System.Text;
    using Microsoft.CognitiveServices.Speech;
    using Microsoft.CognitiveServices.Speech.Audio;
    
  3. Adicione o código a seguir, que usa as APIs de Fala do Azure AI para converter o conteúdo do arquivo WAV que você criou anteriormente para criar um arquivo de texto com a fala transcrita. Substitua os azureKey valores e azureLocation pelos valores copiados 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 usa sua chave e local para inicializar uma conexão com o Azure AI Speech. Em seguida, ele lê o conteúdo do arquivo WAV que você baixou, em seguida, usa o método do para converter o RecognizeOnceAsync() áudio em texto, em seguida, ele usa um gravador de fluxo para salvar os resultados em um arquivo de SpeechRecognizer texto.

  4. Quando terminar de adicionar todo o código, o arquivo deverá ser semelhante ao exemplo a seguir:

    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 para as variáveis e com sua azureKey chave e azureLocation localização do exercício anterior.

  5. Para guardar as alterações, prima Ctrl+S para guardar o ficheiro e, em seguida, prima Ctrl+Q para sair do editor.

Executar a aplicação

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

    dotnet run
    
  2. Se você não vir nenhum erro, seu aplicativo foi executado com êxito e 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ê deve ver uma resposta como o exemplo a seguir, e você deve ver o Shakespeare.txt na lista de arquivos:

    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ê notará que o tamanho do arquivo de texto é pequeno; Neste exemplo, são apenas 98 bytes.

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

    cat Shakespeare.txt
    

    Você verá uma resposta como o exemplo a seguir:

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

    Se você ouviu o arquivo WAV de exemplo, notará que este texto é apenas os primeiros segundos do áudio. Como usamos o método do , o reconhecimento de SpeechRecognizerfala para texto parou quando o RecognizeOnceAsync() orador fez uma pausa.

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