1. Przegląd
Interfejs Google Cloud Speech-to-Text API umożliwia deweloperom konwertowanie dźwięku na tekst w 120 językach i wariantach za pomocą zaawansowanych modeli sieci neuronowych w prostym API.
W tym laboratorium skupisz się na używaniu interfejsu Speech-to-Text API w języku C#. Dowiesz się, jak wysyłać pliki audio w języku angielskim i innych językach do interfejsu Cloud Speech-to-Text API w celu wykonania transkrypcji.
Czego się nauczysz
- Jak korzystać z Cloud Shell
- Włączanie interfejsu Speech-to-Text API
- Uwierzytelnianie żądań do interfejsu API
- Instalowanie biblioteki klienta Google Cloud dla C#
- Jak transkrybować pliki audio w języku angielskim
- Jak transkrybować pliki audio z sygnaturami czasowymi słów
- Jak transkrybować pliki audio w różnych językach
Czego potrzebujesz
Ankieta
Jak zamierzasz korzystać z tego samouczka?
Jak oceniasz swoje doświadczenie z językiem C#?
Jak oceniasz korzystanie z usług Google Cloud Platform?
2. Konfiguracja i wymagania
Samodzielne konfigurowanie środowiska
- Zaloguj się w konsoli Google Cloud i utwórz nowy projekt lub użyj istniejącego. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.



- Nazwa projektu to wyświetlana nazwa uczestników tego projektu. Jest to ciąg znaków, który nie jest używany przez interfejsy API Google. Zawsze możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić po ustawieniu. Konsola Cloud automatycznie generuje unikalny ciąg znaków. Zwykle nie musisz się nim przejmować. W większości ćwiczeń z programowania musisz odwoływać się do identyfikatora projektu (zwykle oznaczanego jako
PROJECT_ID). Jeśli wygenerowany identyfikator Ci się nie podoba, możesz wygenerować inny losowy identyfikator. Możesz też spróbować własnej nazwy i sprawdzić, czy jest dostępna. Po tym kroku nie można go zmienić i pozostaje on taki przez cały czas trwania projektu. - Warto wiedzieć, że istnieje też trzecia wartość, numer projektu, której używają niektóre interfejsy API. Więcej informacji o tych 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w konsoli Cloud, aby korzystać z zasobów i interfejsów API Google Cloud. Wykonanie tego laboratorium nie będzie kosztować dużo, a może nawet nic. Aby wyłączyć zasoby i uniknąć naliczania opłat po zakończeniu tego samouczka, możesz usunąć utworzone zasoby lub projekt. Nowi użytkownicy Google Cloud mogą skorzystać z programu bezpłatnego okresu próbnego o wartości 300 USD.
Uruchamianie Cloud Shell
Z Google Cloud można korzystać zdalnie na laptopie, ale w tym module praktycznym będziesz używać Google Cloud Shell, czyli środowiska wiersza poleceń działającego w chmurze.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell
.

Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tego środowiska. Jeśli pojawił się ekran pośredni, kliknij Dalej.

Uzyskanie dostępu do środowiska Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.

Ta maszyna wirtualna zawiera wszystkie potrzebne narzędzia dla programistów. Zawiera również stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i usprawnia proces uwierzytelniania. Większość zadań w tym module, a być może wszystkie, możesz wykonać w przeglądarce.
Po połączeniu z Cloud Shell zobaczysz, że uwierzytelnianie zostało już przeprowadzone, a projekt jest już ustawiony na Twój identyfikator projektu.
- Aby potwierdzić, że uwierzytelnianie zostało przeprowadzone, uruchom w Cloud Shell to polecenie:
gcloud auth list
Wynik polecenia
Credentialed Accounts
ACTIVE ACCOUNT
* <my_account>@<my_domain.com>
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- Aby potwierdzić, że polecenie gcloud zna Twój projekt, uruchom w Cloud Shell to polecenie:
gcloud config list project
Wynik polecenia
[core] project = <PROJECT_ID>
Jeśli nie, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Wynik polecenia
Updated property [core/project].
3. Włączanie Speech-to-Text API
Zanim zaczniesz korzystać z interfejsu Speech-to-Text API, musisz go włączyć. Aby włączyć interfejs API, użyj w Cloud Shell tego polecenia:
gcloud services enable speech.googleapis.com
4. Instalowanie biblioteki klienta interfejsu Google Cloud Speech-to-Text API dla C#
Najpierw utwórz prostą aplikację konsolową w języku C#, której będziesz używać do uruchamiania próbek interfejsu Speech-to-Text API:
dotnet new console -n SpeechToTextApiDemo
Powinna pojawić się utworzona aplikacja i rozwiązane zależności:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Następnie otwórz folder SpeechToTextApiDemo:
cd SpeechToTextApiDemo/
Dodaj do projektu pakiet Google.Cloud.Speech.V1 NuGet:
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'.
Teraz możesz używać interfejsu Speech-to-Text API.
5. Transkrypcja plików audio
W tej sekcji transkrybujesz nagrany wcześniej plik audio w języku angielskim. Plik audio jest dostępny w Google Cloud Storage.
Aby transkrybować plik audio, otwórz edytor kodu w prawym górnym rogu Cloud Shell:

Otwórz plik Program.cs w folderze SpeechToTextApiDemo i zastąp kod tym kodem:
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);
}
}
}
}
}
Poświęć minutę lub dwie na zapoznanie się z kodem i sprawdź, jak jest używany do transkrypcji pliku audio*.
Parametr Encoding przekazuje interfejsowi API informacje o typie kodowania audio używanego w pliku audio. Flac to typ kodowania dla plików RAW (więcej informacji o typach kodowania znajdziesz w tym dokumencie).
W obiekcie RecognitionAudio możesz przekazać do interfejsu API identyfikator URI pliku audio w Cloud Storage lub lokalną ścieżkę do pliku audio. Używamy tu adresu URI Cloud Storage.
Wróć do Cloud Shell i uruchom aplikację:
dotnet run
Powinny się wyświetlić te dane wyjściowe:
how old is the Brooklyn Bridge
Podsumowanie
Na tym etapie udało Ci się dokonać transkrypcji pliku audio w języku angielskim i wydrukować wynik. Dowiedz się więcej o transkrypcji.
6. Transkrypcja z sygnaturami czasowymi słów
Usługa Speech-to-Text może wykrywać przesunięcie czasowe (sygnaturę czasową) transkrybowanego dźwięku. Przesunięcia czasowe wskazują początek i koniec każdego wypowiedzianego słowa w przesłanym pliku audio. Wartość przesunięcia czasowego to czas, który upłynął od początku dźwięku, w przyrostach co 100 ms.
Aby utworzyć transkrypcję pliku audio z przesunięciami czasowymi, otwórz plik Program.cs w folderze SpeechToTextApiDemo i zastąp kod tym kodem:
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}");
}
}
}
}
}
}
Poświęć chwilę na zapoznanie się z kodem i sprawdź, jak jest używany do transkrypcji pliku audio ze znacznikami czasu słów*. Parametr EnableWordTimeOffsets informuje interfejs API, że ma włączyć przesunięcia czasowe (więcej informacji znajdziesz w dokumencie).
Wróć do Cloud Shell i uruchom aplikację:
dotnet run
Powinny się wyświetlić te dane wyjściowe:
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"
Podsumowanie
Na tym etapie udało Ci się dokonać transkrypcji pliku audio w języku angielskim z sygnaturami czasowymi słów i wydrukować wynik. Dowiedz się więcej o transkrypcji z przesunięciami słów.
7. Transkrypcja w różnych językach
Interfejs Speech-to-Text API obsługuje transkrypcję w ponad 100 językach. Listę obsługiwanych języków znajdziesz tutaj.
W tej sekcji dokonasz transkrypcji nagranego wcześniej pliku audio w języku francuskim. Plik audio jest dostępny w Google Cloud Storage.
Aby utworzyć transkrypcję francuskiego pliku audio, otwórz plik Program.cs w folderze SpeechToTextApiDemo i zastąp kod tym kodem:
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);
}
}
}
}
}
Poświęć minutę lub dwie na zapoznanie się z kodem i sprawdź, jak jest on używany do transkrypcji pliku audio*. Parametr LanguageCode przekazuje interfejsowi API informacje o języku nagrania dźwiękowego.
Wróć do Cloud Shell i uruchom aplikację:
dotnet run
Powinny się wyświetlić te dane wyjściowe:
maître corbeau sur un arbre perché tenait en son bec un fromage
To zdanie z popularnej francuskiej baśni dla dzieci.
Podsumowanie
Na tym etapie udało Ci się utworzyć transkrypcję pliku audio w języku francuskim i wydrukować wynik. Dowiedz się więcej o obsługiwanych językach.
8. Gratulacje!
Wiesz już, jak używać interfejsu Speech-to-Text API w języku C# do wykonywania różnych rodzajów transkrypcji plików audio.
Czyszczenie danych
Oto kroki, które musisz wykonać, aby uniknąć obciążenia konta Google Cloud Platform opłatami za zasoby zużyte podczas krótkiego wprowadzenia:
- Otwórz konsolę Cloud Platform.
- Wybierz projekt, który chcesz zamknąć, a następnie kliknij „Usuń” u góry. Spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
- Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- C#/.NET na Google Cloud Platform: https://cloud.google.com/dotnet/
- Klient Google Cloud .NET: https://googlecloudplatform.github.io/google-cloud-dotnet/
Licencja
To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.