Övning – Skapa en tal-till-text-applikation för engångsigenkänning
I den här övningen skapar du ett program som använder enkel igenkänning för att transkribera en ljudfil som du laddar ned.
Skapa ditt tal till text-program
I Cloud Shell till höger skapar du en katalog för ditt program och ändrar sedan till din nya katalog:
mkdir speech-to-text cd speech-to-text
Skapa ett nytt .NET Core-program:
dotnet new console
Det bör ta några sekunder att slutföra det här kommandot.
När .NET Core-programmet har skapats lägger du till Speech SDK-paketet i ditt program:
dotnet add package Microsoft.CognitiveServices.Speech
Det bör ta några sekunder att slutföra det här kommandot.
Ladda ned en WAVE-fil för igenkänning
I Cloud Shell till höger kör du följande kommando för att ladda ned en WAV-exempelfil som innehåller en serie citattecken från William Shakespeares pjäs "As You Like It".
curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav
Du använder den här WAV-filen för programmet i den här övningen och programmet i nästa övning.
Lägg till koden för din app för text till tal
Öppna filen Program.cs i Cloud Shell till höger:
code Program.cs
Ta bort all befintlig kod och lägg till följande
using
-instruktioner, som aktiverar Azure AI Speech API:er för ditt program:using System.Text; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio;
Lägg till följande kod, som använder Azure AI Speech API:er för att konvertera innehållet i WAV-filen som du skapade tidigare för att skapa en textfil med det transkriberade talet. Ersätt värdena
azureKey
ochazureLocation
med de värden som du kopierade i den senaste övningen.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); }
Den här koden använder din nyckel och plats för att initiera en anslutning till Azure AI Speech. Den läser sedan innehållet i WAV-filen som du laddade ned och använder sedan
RecognizeOnceAsync()
-metoden förSpeechRecognizer
för att konvertera ljudet till text och använder sedan en strömskrivare för att spara resultatet i en textfil.När du har lagt till all kod bör filen likna följande exempel:
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); }
Se till att du uppdaterar värdena för variablerna
azureKey
ochazureLocation
med din nyckel och plats från föregående övning.Spara ändringarna genom att trycka på Ctrl+ S för att spara filen och sedan trycka på Ctrl + Q för att avsluta redigeraren.
Kör ditt program
Om du vill köra ditt program använder du följande kommando i Cloud Shell till höger:
dotnet run
Om du inte ser några fel har programmet körts och du bör se följande svar:
Speech recognition started. Speech recognition stopped.
Kör följande kommando för att hämta en lista över filer i katalogen:
ls -l
Du bör se ett svar som i följande exempel och du bör se Shakespeare.txt i listan med filer:
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
Du kommer att märka att storleken på textfilen är liten. I det här exemplet är det bara 98 byte.
Om du vill visa innehållet i Shakespeare.txt-filen använder du följande kommando:
cat Shakespeare.txt
Du bör se ett svar som i följande exempel:
The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
Om du lyssnade på WAV-exempelfilen skulle du märka att den här texten bara är de första sekunderna av ljudet. Eftersom vi använde metoden
RecognizeOnceAsync()
iSpeechRecognizer
stoppades tal-till-textigenkänningen när talaren tog en paus.
I nästa övning får du lära dig hur du fortsätter tal-till-text-igenkänningen för hela ljudfilen.