1. Omówienie
Interfejs Google Cloud Speech-to-Text API umożliwia programistom konwertowanie dźwięku na tekst w 120 językach i wariantach przez zastosowanie zaawansowanych modeli sieci neuronowych w łatwym w użyciu interfejsie API.
W tym ćwiczeniu w Codelabs dowiesz się, jak używać interfejsu Speech-to-Text API w języku C#. Dowiesz się, jak wysłać plik audio w języku angielskim i innych językach do interfejsu Cloud Speech-to-Text API w celu wykonania transkrypcji.
Czego się nauczysz
- Jak używać Cloud Shell
- Jak włączyć interfejs Speech-to-Text API
- Jak uwierzytelniać żądania do interfejsu API
- Jak zainstalować bibliotekę klienta Google Cloud dla języka C#
- Jak tworzyć transkrypcje plików audio w języku angielskim
- Jak tworzyć transkrypcje plików audio z sygnaturami czasowymi słów
- Jak tworzyć transkrypcje plików audio w różnych językach
Czego potrzebujesz
Ankieta
Jak wykorzystasz ten samouczek?
Jak oceniasz swoje doświadczenia z językiem C#?
Jak oceniasz swoje wrażenia z korzystania 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 wykorzystaj już istniejący. Jeśli nie masz jeszcze konta Gmail ani Google Workspace, musisz je utworzyć.
- Nazwa projektu jest wyświetlaną nazwą uczestników tego projektu. To ciąg znaków, który nie jest używany przez interfejsy API Google. W każdej chwili możesz ją zaktualizować.
- Identyfikator projektu jest unikalny we wszystkich projektach Google Cloud i nie można go zmienić (po jego ustawieniu nie można go zmienić). Cloud Console automatycznie wygeneruje unikalny ciąg znaków. zwykle nieważne, co ona jest. W większości ćwiczeń w Codelabs musisz podać swój identyfikator projektu (zwykle identyfikowany jako
PROJECT_ID
). Jeśli nie podoba Ci się wygenerowany identyfikator, możesz wygenerować kolejny losowy. Możesz też spróbować własnych sił i sprawdzić, czy jest dostępna. Po wykonaniu tej czynności nie można jej już zmienić. Pozostanie ona przez cały czas trwania projektu. - Jest jeszcze trzecia wartość, numer projektu, z którego korzystają niektóre interfejsy API. Więcej informacji o wszystkich 3 wartościach znajdziesz w dokumentacji.
- Następnie musisz włączyć płatności w Cloud Console, aby korzystać z zasobów Cloud/interfejsów API. Ukończenie tego ćwiczenia z programowania nic nie kosztuje. Aby wyłączyć zasoby w celu uniknięcia 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
Google Cloud można obsługiwać zdalnie z laptopa, ale w ramach tego ćwiczenia z programowania wykorzystasz Google Cloud Shell – środowisko wiersza poleceń działające w Cloud.
Aktywowanie Cloud Shell
- W konsoli Cloud kliknij Aktywuj Cloud Shell .
Jeśli uruchamiasz Cloud Shell po raz pierwszy, zobaczysz ekran pośredni z opisem tej usługi. Jeśli wyświetlił się ekran pośredni, kliknij Dalej.
Uzyskanie dostępu do Cloud Shell i połączenie się z nim powinno zająć tylko kilka chwil.
Ta maszyna wirtualna ma wszystkie potrzebne narzędzia dla programistów. Zawiera stały katalog domowy o pojemności 5 GB i działa w Google Cloud, co znacznie zwiększa wydajność sieci i uwierzytelnianie. Większość zadań w ramach tego ćwiczenia z programowania można wykonać w przeglądarce.
Po nawiązaniu połączenia z Cloud Shell powinno pojawić się potwierdzenie, że użytkownik jest uwierzytelniony, a projekt jest ustawiony na identyfikator Twojego projektu.
- Uruchom to polecenie w Cloud Shell, aby potwierdzić, że jesteś uwierzytelniony:
gcloud auth list
Dane wyjściowe polecenia
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Uruchom to polecenie w Cloud Shell, aby sprawdzić, czy polecenie gcloud zna Twój projekt:
gcloud config list project
Dane wyjściowe polecenia
[core] project = <PROJECT_ID>
Jeśli tak nie jest, możesz go ustawić za pomocą tego polecenia:
gcloud config set project <PROJECT_ID>
Dane wyjściowe polecenia
Updated property [core/project].
3. Włączanie Speech-to-Text API
Zanim zaczniesz korzystać ze Speech-to-Text API, musisz go włączyć. Interfejs API możesz włączyć, używając w Cloud Shell tego polecenia:
gcloud services enable speech.googleapis.com
4. Instalowanie biblioteki klienta interfejsu Google Cloud Speech-to-Text API dla języka C#
Najpierw utwórz prostą aplikację konsoli w C#, której będziesz używać do uruchamiania przykładów interfejsu Speech-to-Text API:
dotnet new console -n SpeechToTextApiDemo
Powinna pojawić się utworzona aplikacja i zamknięte zależności:
The template "Console Application" was created successfully.
Processing post-creation actions...
...
Restore succeeded.
Następnie przejdź do folderu SpeechToTextApiDemo
:
cd SpeechToTextApiDemo/
I dodaj do projektu pakiet NuGet Google.Cloud.Speech.V1
:
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 zacząć korzystać ze Speech-to-Text API.
5. Transkrybuj pliki audio
W tej sekcji utworzysz transkrypcję nagranego wcześniej pliku audio w języku angielskim. Plik audio jest dostępny w Google Cloud Storage.
Aby utworzyć transkrypcję pliku audio, otwórz edytor kodu w prawym górnym rogu Cloud Shell:
Przejdź do pliku Program.cs
znajdującego się w folderze SpeechToTextApiDemo
i zastąp kod poniższym 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ęć kilka minut na zapoznanie się z kodem i sprawdź, czy jest on używany do transkrypcji pliku audio*.*
Parametr Encoding
informuje interfejs API, jakiego typu kodowania dźwięku używasz w przypadku pliku audio. Flac
to typ kodowania dla plików RAW (więcej informacji znajdziesz w dokumentacji).
W obiekcie RecognitionAudio
możesz przekazać interfejs API albo identyfikator URI pliku audio w Cloud Storage, albo lokalną ścieżkę pliku audio. Tutaj używamy identyfikatora URI Cloud Storage.
Z powrotem w Cloud Shell uruchom aplikację:
dotnet run
Powinny się wyświetlić te dane wyjściowe:
how old is the Brooklyn Bridge
Podsumowanie
W tym kroku udało Ci się utworzyć transkrypcję pliku audio w języku angielskim i wydrukować wynik. Więcej informacji o transkrybowaniu.
6. Transkrybuj z sygnaturami czasowymi słów
Funkcja Speech-to-Text może wykryć przesunięcie czasu (sygnaturę czasową) w transkrybowanych treściach audio. Przesunięcia czasu pokazują początek i koniec każdego wypowiedzianego słowa w dostarczonym dźwięku. Wartość przesunięcia czasu reprezentuje czas, który upłynął od rozpoczęcia odtwarzania dźwięku, w przyrostach co 100 ms.
Aby utworzyć transkrypcję pliku audio z przesunięciem czasu, przejdź do pliku Program.cs
w folderze SpeechToTextApiDemo
i zastąp go 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ęć kilka minut na zapoznanie się z kodem i sprawdź, czy służy on do tworzenia transkrypcji pliku audio z sygnaturami czasowymi słów*.* Parametr EnableWordTimeOffsets
informuje interfejs API, że ma włączyć przesunięcia czasu (więcej informacji znajdziesz w dokumencie).
Z powrotem w Cloud Shell 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
W tym kroku udało Ci się utworzyć transkrypcję pliku audio w języku angielskim z sygnaturami czasowymi słów i wydrukować wynik. Dowiedz się więcej o transkrypcji z uwzględnieniem przesunięcia słów.
7. Transkrybuj różne języki
Interfejs Speech-to-Text API obsługuje transkrypcję w ponad 100 językach. Listę obsługiwanych języków znajdziesz tutaj.
W tej sekcji utworzysz transkrypcję nagranego wcześniej pliku audio w języku francuskim. Plik audio jest dostępny w Google Cloud Storage.
Aby utworzyć transkrypcję pliku audio w języku francuskim, przejdź do pliku Program.cs
w folderze SpeechToTextApiDemo
i zastąp go 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ęć kilka minut na zapoznanie się z kodem i sprawdź, jak jest używany do transkrypcji plików audio*.* Parametr LanguageCode
informuje interfejs API, w jakim języku jest nagranie dźwiękowe.
Z powrotem w Cloud Shell 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
W tym kroku 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 tworzenia różnych 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 wyłączyć, i kliknij „Usuń”. u góry: spowoduje to zaplanowanie usunięcia projektu.
Więcej informacji
- Interfejs Google Cloud Speech-to-Text API: https://cloud.google.com/speech-to-text/docs
- C#/.NET w 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.