Übung: Erstellen einer Spracherkennungsanwendung mit Single-Shot-Erkennung
In dieser Übung erstellen Sie eine Anwendung, die mit der Single-Shot-Erkennung eine Beispielaudiodatei transkribiert, die Sie herunterladen.
Erstellen Ihrer Spracherkennungsanwendung
Erstellen Sie in der Cloud Shell-Instanz rechts ein Verzeichnis für Ihre Anwendung, und wechseln Sie dann zu Ihrem neuen Verzeichnis:
mkdir speech-to-text cd speech-to-text
Erstellen Sie eine neue .NET Core-Anwendung:
dotnet new console
Die Ausführung dieses Befehls sollte einige Sekunden dauern.
Sobald Ihre .NET Core-Anwendung erstellt ist, fügen Sie Ihrer Anwendung das Speech SKD-Paket hinzu:
dotnet add package Microsoft.CognitiveServices.Speech
Die Ausführung dieses Befehls sollte einige Sekunden dauern.
Herunterladen einer WAVE-Datei zur Erkennung
Führen Sie in der Cloud Shell-Instanz rechts den folgenden Befehl aus, um eine WAVE-Beispieldatei herunterzuladen, die eine Reihe von Zitaten aus William Shakespeares Komödie „Wie es euch gefällt“ enthält.
curl -L https://aka.ms/ShakespeareWAV -o Shakespeare.wav
Sie verwenden diese WAVE-Datei für die Anwendung in dieser und der nächsten Übung.
Hinzufügen des Codes für Ihre Sprachsyntheseanwendung
Öffnen Sie in der Cloud Shell-Instanz rechts die Datei Program.cs:
code Program.cs
Entfernen Sie jeglichen vorhandenen Code, und fügen Sie die folgenden
using
-Anweisungen hinzu, die die Azure KI Speech-APIs für Ihre Anwendung aktivieren:using System.Text; using Microsoft.CognitiveServices.Speech; using Microsoft.CognitiveServices.Speech.Audio;
Fügen Sie den folgenden Code hinzu, mit dem Azure KI Speech-APIs den Inhalt der WAVE-Datei konvertieren, die Sie zuvor erstellt haben, um eine Textdatei mit der transkribierten Sprache zu erstellen. Ersetzen Sie die Werte
azureKey
undazureLocation
durch die Werte, die Sie in der letzten Übung kopiert haben.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); }
In diesem Code werden Ihr Schlüssel und Standort verwendet, um eine Verbindung mit Azure KI Speech zu initialisieren. Der Code liest dann den Inhalt der von Ihnen heruntergeladenen WAVE-Datei, konvertiert mit der
RecognizeOnceAsync()
-Methode vonSpeechRecognizer
den Audioinhalt in Text und speichert dann mit einem Stream-Writer die Ergebnisse in einer Textdatei.Wenn Sie den gesamten Code hinzugefügt haben, sollte ihre Datei dem folgenden Beispiel ähneln:
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); }
Achten Sie unbedingt darauf, die Werte der Variablen
azureKey
undazureLocation
mit Ihrem Schlüssel und Speicherort aus der vorherigen Übung zu aktualisieren.Drücken Sie STRG+S, um die Datei und somit Ihre Änderungen zu speichern. Drücken Sie dann STRG+Q, um den Editor zu beenden.
Ausführen der Anwendung
Um Ihre Anwendung auszuführen, führen Sie in der Cloud Shell-Instanz rechts den folgenden Befehl aus:
dotnet run
Wenn Sie keine Fehlermeldungen sehen, wurde Ihre Anwendung erfolgreich ausgeführt, und Ihnen sollten die folgenden Antworten angezeigt werden:
Speech recognition started. Speech recognition stopped.
Führen Sie den folgenden Befehl aus, um eine Liste der Dateien in diesem Verzeichnis abzurufen:
ls -l
Sie sollten eine Antwort wie im folgenden Beispiel und die Datei Shakespeare.txt in der Liste der Dateien sehen:
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
Sie werden feststellen, dass die Textdatei klein ist, sie hat eine Größe von nur 98 Bytes.
Sie können den Inhalt der Datei Shakespeare.txt mit dem folgenden Befehl anzeigen:
cat Shakespeare.txt
Es wird eine Antwort ähnlich wie im folgenden Beispiel angezeigt:
The following quotes are from Act 2, scene seven of William Shakespeare's play as you like it.
Wenn Sie sich die WAVE-Beispieldatei angehört haben, werden Sie feststellen, dass dieser Text nur die ersten Sekunden des Audioinhalts enthält. Da wir die
RecognizeOnceAsync()
-Methode desSpeechRecognizer
verwendet haben, wurde die Spracherkennung beendet, als der Sprecher angehalten wurde.
In der nächsten Übung erfahren Sie, wie Sie die Spracherkennung für die gesamte Audiodatei fortsetzen.