Exercício - Criar um aplicativo de reconhecimento de fala para texto de captura única
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
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
Crie um novo aplicativo .NET Core:
dotnet new console
Este comando deve levar alguns segundos para ser concluído.
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
No Cloud Shell à direita, abra o arquivo Program.cs :
code Program.cs
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;
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 eazureLocation
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 deSpeechRecognizer
texto.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 eazureLocation
localização do exercício anterior.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
Para executar seu aplicativo, use o seguinte comando no Cloud Shell à direita:
dotnet run
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.
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.
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
SpeechRecognizer
fala para texto parou quando oRecognizeOnceAsync()
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.