Używanie interfejsu Text-to-Speech API w języku C#

1. Omówienie

Interfejs Google Cloud Text-to-Speech API (beta) pozwala programistom uwzględniać w aplikacjach naturalnie brzmiącą syntetyczną mowę ludzką jako dźwięk, który można odtwarzać. Text-to-Speech API konwertuje tekst lub dane wejściowe Speech Synthesis Markup Language (SSML) na dane audio, takie jak MP3 lub LINEAR16 (kodowanie używane w plikach WAV).

W tym ćwiczeniu w Codelabs dowiesz się, jak używać interfejsu Text-to-Speech API w języku C#. Dowiesz się, jak wyświetlić listę dostępnych głosów i jak syntetyzować dźwięk z tekstu.

Czego się nauczysz

  • Jak używać Cloud Shell
  • Jak włączyć interfejs Text-to-Speech API
  • Jak uwierzytelniać żądania do interfejsu API
  • Jak zainstalować bibliotekę klienta Google Cloud dla języka C#
  • Jak wyświetlić listę dostępnych głosów
  • Jak zsyntetyzować plik audio z tekstu

Czego potrzebujesz

  • Projekt Google Cloud Platform
  • przeglądarkę, np. Chrome lub Firefox;
  • Znajomość języka C#

Ankieta

Jak wykorzystasz ten samouczek?

Tylko do przeczytania Przeczytaj go i wykonaj ćwiczenia

Jak oceniasz swoje doświadczenia z językiem C#?

Początkujący Poziom średnio zaawansowany Biegły

Jak oceniasz swoje wrażenia z korzystania z usług Google Cloud Platform?

Początkujący Poziom średnio zaawansowany Biegły
.

2. Konfiguracja i wymagania

Samodzielne konfigurowanie środowiska

  1. 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ć.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • 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.
  1. 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 chmurze.

Aktywowanie Cloud Shell

  1. W konsoli Cloud kliknij Aktywuj Cloud Shell d1264ca30785e435.png.

cb81e7c8e34bc8d.png

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.

d95252b003979716.png

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

7833d5e1c5d18f54.png

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.

  1. 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`
  1. 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 Text-to-Speech API

Zanim zaczniesz używać interfejsu Text-to-Speech API, musisz go włączyć. Interfejs API możesz włączyć, używając w Cloud Shell tego polecenia:

gcloud services enable texttospeech.googleapis.com

4. Instalowanie biblioteki klienta interfejsu Google Cloud Text-to-Speech 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 Text-to-Speech API:

dotnet new console -n TextToSpeechApiDemo

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 TextToSpeechApiDemo:

cd TextToSpeechApiDemo/

I dodaj do projektu pakiet NuGet Google.Cloud.TextToSpeech.V1:

dotnet add package Google.Cloud.TextToSpeech.V1
info : Adding PackageReference for package 'Google.Cloud.TextToSpeech.V1' into project '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.
log  : Restoring packages for /home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj...
...
info : PackageReference for package 'Google.Cloud.TextToSpeech.V1' version '1.0.0-beta01' added to file '/home/atameldev/TextToSpeechDemo/TextToSpeechDemo.csproj'.

Teraz możesz korzystać z interfejsu Text-to-Speech API.

5. Lista dostępnych głosów

W tej sekcji zobaczysz najpierw wszystkie głosy dostępne w języku angielskim na potrzeby syntezy dźwięku.

Najpierw otwórz edytor kodu w prawym górnym rogu Cloud Shell:

fd3fc1303e63572.png

Przejdź do pliku Program.cs znajdującego się w folderze TextToSpeechApiDemo i zastąp kod poniższym kodem:

using Google.Cloud.TextToSpeech.V1;
using System;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();
            var response = client.ListVoices("en");
            foreach (var voice in response.Voices)
            {
                Console.WriteLine($"{voice.Name} ({voice.SsmlGender}); Language codes: {string.Join(", ", voice.LanguageCodes)}");
            }
        }
    }
}

Poświęć chwilę na zapoznanie się z kodem*.* Uruchom aplikację w Cloud Shell:

dotnet run

Powinny się wyświetlić te dane wyjściowe:

en-US-Wavenet-D (Male); Language codes: en-US
en-AU-Wavenet-A (Female); Language codes: en-AU
en-AU-Wavenet-B (Male); Language codes: en-AU
en-AU-Wavenet-C (Female); Language codes: en-AU
en-AU-Wavenet-D (Male); Language codes: en-AU
en-GB-Wavenet-A (Female); Language codes: en-GB
en-GB-Wavenet-B (Male); Language codes: en-GB
en-GB-Wavenet-C (Female); Language codes: en-GB
...
en-GB-Standard-A (Female); Language codes: en-GB
en-GB-Standard-B (Male); Language codes: en-GB
en-AU-Standard-D (Male); Language codes: en-AU

Podsumowanie

W tym kroku udało Ci się wyświetlić listę wszystkich głosów dostępnych w języku angielskim na potrzeby syntezy dźwięku. Pełną listę dostępnych głosów znajdziesz na stronie Obsługiwane głosy.

6. Syntetyzowanie pliku audio z tekstu

Za pomocą interfejsu Text-to-Speech API możesz przekonwertować ciąg znaków na dane dźwiękowe. Sygnały wyjściowe syntezy mowy możesz skonfigurować na wiele sposobów, na przykład przez wybranie unikalnego głosu lub zmianę wysokości tonu, głośności, szybkości mówienia i częstotliwości próbkowania.

Aby zsyntetyzować plik audio z tekstu, przejdź do pliku Program.cs w folderze TextToSpeechApiDemo i zastąp go tym kodem:

using Google.Cloud.TextToSpeech.V1;
using System;
using System.IO;

namespace TextToSpeechApiDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            var client = TextToSpeechClient.Create();

            // The input to be synthesized, can be provided as text or SSML.
            var input = new SynthesisInput
            {
                Text = "This is a demonstration of the Google Cloud Text-to-Speech API"
            };

            // Build the voice request.
            var voiceSelection = new VoiceSelectionParams
            {
                LanguageCode = "en-US",
                SsmlGender = SsmlVoiceGender.Female
            };

            // Specify the type of audio file.
            var audioConfig = new AudioConfig
            {
                AudioEncoding = AudioEncoding.Mp3
            };

            // Perform the text-to-speech request.
            var response = client.SynthesizeSpeech(input, voiceSelection, audioConfig);
            
            // Write the response to the output file.
            using (var output = File.Create("output.mp3"))
            {
                response.AudioContent.WriteTo(output);
            }
            Console.WriteLine("Audio content written to file \"output.mp3\"");
        }
    }
}

Poświęć chwilę na zapoznanie się z kodem i sprawdź, jak można go wykorzystać do utworzenia pliku audio na podstawie tekstu*.*

Uruchom aplikację w Cloud Shell:

dotnet run

Powinny się wyświetlić te dane wyjściowe:

Audio content written to file "output.mp3"

W edytorze kodu możesz pobrać plik MP3 i odtworzyć go lokalnie na komputerze.

a4b9578505422dad.png

Podsumowanie

W tym kroku udało Ci się użyć interfejsu Text-to-Speech API, aby przekonwertować ciąg znaków na plik audio MP3. Dowiedz się więcej o tworzeniu plików audio z głosem.

7. Gratulacje!

Wiesz już, jak używać interfejsu Text-to-Speech 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

Licencja

To zadanie jest licencjonowane na podstawie ogólnej licencji Creative Commons Attribution 2.0.