Übung: Erstellen einer Spracherkennungsanwendung mit Single-Shot-Erkennung

Abgeschlossen

In dieser Übung erstellen Sie eine Anwendung, die mit der Single-Shot-Erkennung eine Beispielaudiodatei transkribiert, die Sie herunterladen.

Erstellen Ihrer Spracherkennungsanwendung

  1. 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
    
  2. Erstellen Sie eine neue .NET Core-Anwendung:

    dotnet new console
    

    Die Ausführung dieses Befehls sollte einige Sekunden dauern.

  3. 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

  1. Öffnen Sie in der Cloud Shell-Instanz rechts die Datei Program.cs:

    code Program.cs
    
  2. 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;
    
  3. 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 und azureLocation 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 von SpeechRecognizer den Audioinhalt in Text und speichert dann mit einem Stream-Writer die Ergebnisse in einer Textdatei.

  4. 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 und azureLocation mit Ihrem Schlüssel und Speicherort aus der vorherigen Übung zu aktualisieren.

  5. 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

  1. Um Ihre Anwendung auszuführen, führen Sie in der Cloud Shell-Instanz rechts den folgenden Befehl aus:

    dotnet run
    
  2. 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.
    
  3. 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.

  4. 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 des SpeechRecognizer 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.