Speech-to-Text API mit C# verwenden

1. Übersicht

Mit der Google Cloud Speech-to-Text API können Entwickler Audio in Text in 120 Sprachen und Varianten umwandeln. Dabei kommen leistungsstarke Modelle neuronaler Netze in einer nutzerfreundlichen API zum Einsatz.

In diesem Codelab konzentrieren Sie sich auf die Verwendung der Speech-to-Text API mit C#. Sie erfahren, wie Sie Audiodateien in Englisch und anderen Sprachen zur Transkription an die Cloud Speech-to-Text API senden.

Aufgaben in diesem Lab

  • Cloud Shell verwenden
  • Speech-to-Text API aktivieren
  • API-Anfragen authentifizieren
  • Google Cloud-Clientbibliothek für C# installieren
  • So transkribiert man Audiodateien auf Englisch
  • Audiodateien mit Wortzeitstempeln transkribieren
  • So transkribieren Sie Audiodateien in verschiedenen Sprachen

Voraussetzungen

  • Google Cloud Platform-Projekt
  • Browser, z. B. Chrome oder Firefox
  • Vertrautheit mit C#

Umfrage

Wie möchten Sie diese Anleitung nutzen?

<ph type="x-smartling-placeholder"></ph> Nur bis zum Ende lesen Lies sie dir durch und absolviere die Übungen

Wie würden Sie Ihre Erfahrung mit C# bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Leicht fortgeschritten Kompetent

Wie würden Sie Ihre Erfahrungen im Umgang mit Google Cloud Platform-Diensten bewerten?

<ph type="x-smartling-placeholder"></ph> Neuling Leicht fortgeschritten Kompetent

2. Einrichtung und Anforderungen

Umgebung für das selbstbestimmte Lernen einrichten

  1. Melden Sie sich in der Google Cloud Console an und erstellen Sie ein neues Projekt oder verwenden Sie ein vorhandenes Projekt. Wenn Sie noch kein Gmail- oder Google Workspace-Konto haben, müssen Sie eines erstellen.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Der Projektname ist der Anzeigename für die Projektteilnehmer. Es handelt sich um eine Zeichenfolge, die von Google APIs nicht verwendet wird. Sie können sie jederzeit aktualisieren.
  • Die Projekt-ID ist für alle Google Cloud-Projekte eindeutig und unveränderlich. Sie kann nach dem Festlegen nicht mehr geändert werden. Die Cloud Console generiert automatisch einen eindeutigen String. ist Ihnen meist egal, was es ist. In den meisten Codelabs musst du auf deine Projekt-ID verweisen, die üblicherweise als PROJECT_ID bezeichnet wird. Wenn Ihnen die generierte ID nicht gefällt, können Sie eine weitere zufällige ID generieren. Alternativ können Sie einen eigenen verwenden und nachsehen, ob er verfügbar ist. Sie kann nach diesem Schritt nicht mehr geändert werden und bleibt für die Dauer des Projekts erhalten.
  • Zur Information gibt es noch einen dritten Wert, die Projektnummer, die von manchen APIs verwendet wird. Weitere Informationen zu allen drei Werten finden Sie in der Dokumentation.
  1. Als Nächstes müssen Sie in der Cloud Console die Abrechnung aktivieren, um Cloud-Ressourcen/APIs verwenden zu können. Dieses Codelab ist kostengünstig. Sie können die von Ihnen erstellten Ressourcen oder das Projekt löschen, um Ressourcen herunterzufahren, um zu vermeiden, dass über diese Anleitung hinaus Kosten anfallen. Neue Google Cloud-Nutzer haben Anspruch auf das kostenlose Testprogramm mit 300$Guthaben.

Cloud Shell starten

Sie können Google Cloud zwar von Ihrem Laptop aus aus der Ferne bedienen, in diesem Codelab verwenden Sie jedoch Google Cloud Shell, eine Befehlszeilenumgebung, die in der Cloud ausgeführt wird.

Cloud Shell aktivieren

  1. Klicken Sie in der Cloud Console auf Cloud Shell aktivieren d1264ca30785e435.png.

cb81e7c8e34bc8d.png

Wenn Sie Cloud Shell zum ersten Mal starten, wird ein Zwischenbildschirm mit einer Beschreibung der Funktion angezeigt. Wenn ein Zwischenbildschirm angezeigt wird, klicken Sie auf Weiter.

d95252b003979716.png

Die Bereitstellung und Verbindung mit Cloud Shell dauert nur einen Moment.

7833d5e1c5d18f54.png

Diese virtuelle Maschine verfügt über alle erforderlichen Entwicklertools. Es bietet ein Basisverzeichnis mit 5 GB nichtflüchtigem Speicher und wird in Google Cloud ausgeführt, wodurch die Netzwerkleistung und Authentifizierung erheblich verbessert werden. Viele, wenn nicht sogar alle Arbeiten in diesem Codelab können mit einem Browser erledigt werden.

Sobald Sie mit Cloud Shell verbunden sind, sollten Sie sehen, dass Sie authentifiziert sind und das Projekt auf Ihre Projekt-ID eingestellt ist.

  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob Sie authentifiziert sind:
gcloud auth list

Befehlsausgabe

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. Führen Sie in Cloud Shell den folgenden Befehl aus, um zu prüfen, ob der gcloud-Befehl Ihr Projekt kennt:
gcloud config list project

Befehlsausgabe

[core]
project = <PROJECT_ID>

Ist dies nicht der Fall, können Sie die Einstellung mit diesem Befehl vornehmen:

gcloud config set project <PROJECT_ID>

Befehlsausgabe

Updated property [core/project].

3. Speech-to-Text API aktivieren

Bevor Sie die Speech-to-Text API verwenden können, müssen Sie sie aktivieren. Sie können die API mit dem folgenden Befehl in Cloud Shell aktivieren:

gcloud services enable speech.googleapis.com

4. Google Cloud Speech-to-Text API-Clientbibliothek für C# installieren

Erstellen Sie zuerst eine einfache C#-Konsolenanwendung, mit der Sie Speech-to-Text API-Beispiele ausführen:

dotnet new console -n SpeechToTextApiDemo

Die erstellte Anwendung und die Abhängigkeiten sollten aufgelöst werden:

The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.

Gehen Sie dann zum Ordner SpeechToTextApiDemo:

cd SpeechToTextApiDemo/

Fügen Sie dem Projekt außerdem das NuGet-Paket Google.Cloud.Speech.V1 hinzu:

dotnet add package Google.Cloud.Speech.V1
info : Adding PackageReference for package 'Google.Cloud.Speech.V1' into project '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.
log  : Restoring packages for /home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.Speech.V1' version '1.0.1' added to file '/home/atameldev/SpeechToTextApiDemo/SpeechToTextApiDemo.csproj'.

Jetzt können Sie die Speech-to-Text API verwenden.

5. Audiodateien transkribieren

In diesem Abschnitt transkribieren Sie eine vorab aufgezeichnete Audiodatei auf Englisch. Die Audiodatei ist in Google Cloud Storage verfügbar.

Öffnen Sie zum Transkribieren einer Audiodatei den Code-Editor oben rechts in Cloud Shell:

fd3fc1303e63572.png

Gehen Sie zur Datei Program.cs im Ordner SpeechToTextApiDemo und ersetzen Sie den Code durch folgenden Code:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");         
            
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

Nehmen Sie sich ein bis zwei Minuten Zeit, um sich den Code anzusehen und zu sehen, wie er zum Transkribieren einer Audiodatei verwendet wird.*

Der Parameter Encoding teilt der API mit, welche Art der Audiocodierung Sie für die Audiodatei verwenden. Flac ist der Codierungstyp für RAW-Dateien .Weitere Informationen finden Sie in der Dokumentation zum Codierungstyp.

Im RecognitionAudio-Objekt können Sie der API entweder den URI der Audiodatei in Cloud Storage oder den lokalen Dateipfad für die Audiodatei übergeben. Hier verwenden wir einen Cloud Storage-URI.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Es sollte folgende Ausgabe angezeigt werden:

how old is the Brooklyn Bridge

Zusammenfassung

In diesem Schritt haben Sie eine Audiodatei auf Englisch transkribiert und das Ergebnis ausdrucken können. Weitere Informationen zum Transkribieren

6. Mit Zeitstempeln von Wörtern transkribieren

Speech-to-Text kann einen Zeitversatz (Zeitstempel) für die transkribierten Audiodaten erkennen. Zeitverschiebungen zeigen den Anfang und das Ende jedes gesprochenen Worts in den bereitgestellten Audiodaten an. Ein Zeitverschiebungswert gibt die Zeit in Schritten von 100 ms an, die seit Beginn des Audiosignals vergangen ist.

Wenn Sie eine Audiodatei mit Zeitverschiebungen transkribieren möchten, rufen Sie die Datei Program.cs im Ordner SpeechToTextApiDemo auf und ersetzen Sie den Code durch den folgenden Code:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                SampleRateHertz = 16000,
                LanguageCode = LanguageCodes.English.UnitedStates,
                EnableWordTimeOffsets = true
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-tests/speech/brooklyn.flac");
     
            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine($"Transcript: { alternative.Transcript}");
                    Console.WriteLine("Word details:");
                    Console.WriteLine($" Word count:{alternative.Words.Count}");
                    foreach (var item in alternative.Words)
                    {
                        Console.WriteLine($"  {item.Word}");
                        Console.WriteLine($"    WordStartTime: {item.StartTime}");
                        Console.WriteLine($"    WordEndTime: {item.EndTime}");
                    }
                }
            }
        }
    }
}

Sehen Sie sich den Code genau an, um zu sehen, wie er zum Transkribieren einer Audiodatei mit Zeitstempeln verwendet wird.* Der Parameter EnableWordTimeOffsets weist die API an, Zeitverschiebungen zu aktivieren. Weitere Informationen finden Sie in der Dokumentation.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Es sollte folgende Ausgabe angezeigt werden:

dotnet run

Transcript: how old is the Brooklyn Bridge
Word details:
 Word count:6
  how
    WordStartTime: "0s"
    WordEndTime: "0.300s"
  old
    WordStartTime: "0.300s"
    WordEndTime: "0.600s"
  is
    WordStartTime: "0.600s"
    WordEndTime: "0.800s"
  the
    WordStartTime: "0.800s"
    WordEndTime: "0.900s"
  Brooklyn
    WordStartTime: "0.900s"
    WordEndTime: "1.100s"
  Bridge
    WordStartTime: "1.100s"
    WordEndTime: "1.500s"

Zusammenfassung

In diesem Schritt haben Sie eine Audiodatei auf Englisch mit Wortzeitstempeln transkribiert und das Ergebnis ausgegeben. Weitere Informationen zum Transkribieren mit Wortoffsets

7. Verschiedene Sprachen transkribieren

Die Speech-to-Text API unterstützt Transkriptionen in über 100 Sprachen. Eine Liste der unterstützten Sprachen finden Sie hier.

In diesem Abschnitt transkribieren Sie eine vorab aufgezeichnete Audiodatei auf Französisch. Die Audiodatei ist in Google Cloud Storage verfügbar.

Rufen Sie zum Transkribieren der französischen Audiodatei die Datei Program.cs im Ordner SpeechToTextApiDemo auf und ersetzen Sie den Code durch folgenden Code:

using Google.Cloud.Speech.V1;
using System;

namespace SpeechToTextApiDemo
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var speech = SpeechClient.Create();
            var config = new RecognitionConfig
            {
                Encoding = RecognitionConfig.Types.AudioEncoding.Flac,
                LanguageCode = LanguageCodes.French.France
            };
            var audio = RecognitionAudio.FromStorageUri("gs://cloud-samples-data/speech/corbeau_renard.flac");

            var response = speech.Recognize(config, audio);

            foreach (var result in response.Results)
            {
                foreach (var alternative in result.Alternatives)
                {
                    Console.WriteLine(alternative.Transcript);
                }
            }
        }
    }
}

Nehmen Sie sich ein bis zwei Minuten Zeit, um sich mit dem Code vertraut zu machen und zu erfahren, wie damit eine Audiodatei transkribiert wird.* Mit dem Parameter LanguageCode wird der API mitgeteilt, in welcher Sprache die Audioaufnahme vorliegt.

Führen Sie die Anwendung in Cloud Shell aus:

dotnet run

Es sollte folgende Ausgabe angezeigt werden:

maître corbeau sur un arbre perché tenait en son bec un fromage

Dies ist ein Satz aus einer beliebten französischen Kindergeschichte.

Zusammenfassung

In diesem Schritt haben Sie eine Audiodatei auf Französisch transkribiert und das Ergebnis ausdrucken können. Weitere Informationen zu unterstützten Sprachen

8. Glückwunsch!

Sie haben gelernt, wie Sie die Speech-to-Text API mit C# verwenden, um verschiedene Arten von Transkriptionen für Audiodateien durchzuführen.

Bereinigen

So vermeiden Sie, dass Ihr Google Cloud Platform-Konto für die in diesem Schnellstart verwendeten Ressourcen belastet wird:

  • Rufen Sie die Cloud Platform Console auf.
  • Wählen Sie das Projekt aus, das Sie beenden möchten, und klicken Sie auf „Löschen“. oben: Dadurch wird das Projekt zum Löschen vorgemerkt.

Weitere Informationen

Lizenz

Dieser Text ist mit einer Creative Commons Attribution 2.0 Generic License lizenziert.