Exercício – Criar um aplicativo de conversão de fala em texto com reconhecimento de disparo único
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
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
Crie um aplicativo .NET Core:
dotnet new console
Esse comando deve levar alguns segundos para ser concluído.
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
No Cloud Shell à direita, abra o arquivo Program.cs:
code Program.cs
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;
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
eazureLocation
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()
doSpeechRecognizer
para converter o áudio em texto e, em seguida, usa um gravador de fluxo para salvar os resultados em um arquivo de texto.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
eazureLocation
com sua chave e seu local do exercício anterior.Para salvar suas alterações, pressione Ctrl+S a fim de salvar o arquivo e Ctrl+Q para sair do editor.
Execute seu aplicativo.
Para executar o aplicativo, use o seguinte comando no Cloud Shell à direita:
dotnet run
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.
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.
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()
doSpeechRecognizer
, 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.