Text-to-Speech API'yi C# ile kullanma

1. Genel Bakış

Google Cloud Text-to-Speech API (Beta), geliştiricilerin uygulamalarına oynatılabilir ses olarak doğal sesli, sentetik insan konuşması eklemesine olanak tanır. Text-to-Speech API, metin veya Konuşma Sentezi Biçimlendirme Dili (SSML) girişini MP3 veya LINEAR16 (WAV dosyalarında kullanılan kodlama) gibi ses verilerine dönüştürür.

Bu codelab'de Text-to-Speech API'yi C# ile kullanmaya odaklanacaksınız. Kullanılabilir sesleri nasıl listeleyeceğinizi ve metinden nasıl ses sentezleyeceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • Cloud Shell'i kullanma
  • Text-to-Speech API'yi etkinleştirme
  • API isteklerinin kimliğini doğrulama
  • C# için Google Cloud istemci kitaplığını yükleme
  • Kullanılabilir sesleri listeleme
  • Metinden ses sentezleme

Gerekenler

  • Google Cloud Platform projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • C# kullanma konusunda bilgi sahibi olma

Anket

Bu eğitimi nasıl kullanacaksınız?

Yalnızca okuyun Okuyun ve alıştırmaları tamamlayın

C# ile ilgili deneyiminizi nasıl değerlendirirsiniz?

Yeni başlayan Orta düzey Uzman

Google Cloud Platform hizmetlerini kullanma deneyiminizi nasıl değerlendirirsiniz?

Başlangıç Orta İleri

2. Kurulum ve Gereksinimler

Yönlendirmesiz ortam kurulumu

  1. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. Gmail veya Google Workspace hesabınız yoksa hesap oluşturmanız gerekir.

295004821bab6a87.png

37d264871000675d.png

96d86d3d5655cdbe.png

  • Proje adı, bu projenin katılımcıları için görünen addır. Google API'leri tarafından kullanılmayan bir karakter dizesidir. Bu bilgiyi istediğiniz zaman güncelleyebilirsiniz.
  • Proje kimliği, tüm Google Cloud projelerinde benzersizdir ve sabittir (ayarlandıktan sonra değiştirilemez). Cloud Console, benzersiz bir dizeyi otomatik olarak oluşturur. Genellikle bu dizenin ne olduğuyla ilgilenmezsiniz. Çoğu codelab'de proje kimliğinize (genellikle PROJECT_ID olarak tanımlanır) başvurmanız gerekir. Oluşturulan kimliği beğenmezseniz başka bir rastgele kimlik oluşturabilirsiniz. Dilerseniz kendi adınızı deneyerek kullanılabilir olup olmadığını kontrol edebilirsiniz. Bu adım tamamlandıktan sonra değiştirilemez ve proje süresince geçerli kalır.
  • Bazı API'lerin kullandığı üçüncü bir değer olan Proje Numarası da vardır. Bu üç değer hakkında daha fazla bilgiyi belgelerde bulabilirsiniz.
  1. Ardından, Cloud kaynaklarını/API'lerini kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Bu codelab'i tamamlamak neredeyse hiç maliyetli değildir. Bu eğitimin ötesinde faturalandırılmayı önlemek için kaynakları kapatmak üzere oluşturduğunuz kaynakları veya projeyi silebilirsiniz. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud, dizüstü bilgisayarınızdan uzaktan çalıştırılabilir. Ancak bu codelab'de, Cloud'da çalışan bir komut satırı ortamı olan Google Cloud Shell'i kullanacaksınız.

Cloud Shell'i etkinleştirme

  1. Cloud Console'da Cloud Shell'i etkinleştir 'i d1264ca30785e435.png tıklayın.

cb81e7c8e34bc8d.png

Cloud Shell'i ilk kez başlatıyorsanız ne olduğunu açıklayan bir ara ekran gösterilir. Ara ekran gösterildiyse Devam'ı tıklayın.

d95252b003979716.png

Cloud Shell'in temel hazırlığı ve bağlanması yalnızca birkaç dakikanızı alır.

7833d5e1c5d18f54.png

Bu sanal makineye, ihtiyaç duyacağınız tüm geliştirme araçları yüklenmiştir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu codelab'deki çalışmalarınızın neredeyse tamamını tarayıcıyla yapabilirsiniz.

Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, proje kimliğinize ayarlandığını görürsünüz.

  1. Kimliğinizin doğrulandığını onaylamak için Cloud Shell'de şu komutu çalıştırın:
gcloud auth list

Komut çıkışı

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud komutunun projeniz hakkında bilgi sahibi olduğunu onaylamak için Cloud Shell'de aşağıdaki komutu çalıştırın:
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Değilse şu komutla ayarlayabilirsiniz:

gcloud config set project <PROJECT_ID>

Komut çıkışı

Updated property [core/project].

3. Text-to-Speech API'yi etkinleştirme

Text-to-Speech API'yi kullanmaya başlamadan önce API'yi etkinleştirmeniz gerekir. API'yi Cloud Shell'de aşağıdaki komutu kullanarak etkinleştirebilirsiniz:

gcloud services enable texttospeech.googleapis.com

4. Google Cloud Text-to-Speech API'nin C# istemci kitaplığını yükleyin.

Öncelikle Text-to-Speech API örneklerini çalıştırmak için kullanacağınız basit bir C# konsol uygulaması oluşturun:

dotnet new console -n TextToSpeechApiDemo

Uygulamanın oluşturulduğunu ve bağımlılıkların çözüldüğünü görmelisiniz:

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

Ardından TextToSpeechApiDemo klasörüne gidin:

cd TextToSpeechApiDemo/

Ayrıca projeye Google.Cloud.TextToSpeech.V1 NuGet paketini ekleyin:

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

Artık Text-to-Speech API'yi kullanmaya hazırsınız.

5. Kullanılabilir Sesleri Listeleme

Bu bölümde, ses sentezi için İngilizce olarak sunulan tüm sesleri listeleyin.

Öncelikle Cloud Shell'in sağ üst tarafındaki kod düzenleyiciyi açın:

fd3fc1303e63572.png

TextToSpeechApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdakilerle değiştirin:

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)}");
            }
        }
    }
}

Bir veya iki dakikanızı ayırarak kodu inceleyin*.* Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Aşağıdaki çıkışı göreceksiniz:

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

Özet

Bu adımda, ses sentezi için İngilizce olarak sunulan tüm sesleri listeleyebildiniz. Kullanılabilen seslerin tam listesini Desteklenen Sesler sayfasında da bulabilirsiniz.

6. Metinden ses sentezleme

Bir dizeyi ses verilerine dönüştürmek için Text-to-Speech API'yi kullanabilirsiniz. Konuşma sentezinin çıkışını çeşitli şekillerde yapılandırabilirsiniz. Örneğin, benzersiz bir ses seçebilir veya çıkışı ses perdesi, ses düzeyi, konuşma hızı ve örnekleme hızı açısından modüle edebilirsiniz.

Metinden ses dosyası sentezlemek için TextToSpeechApiDemo klasöründeki Program.cs dosyasına gidin ve kodu aşağıdakiyle değiştirin:

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\"");
        }
    }
}

Kodu incelemek ve metinden ses dosyası oluşturmak için nasıl kullanıldığını görmek için bir veya iki dakikanızı ayırın.

Cloud Shell'e dönüp uygulamayı çalıştırın:

dotnet run

Aşağıdaki çıkışı göreceksiniz:

Audio content written to file "output.mp3"

Kod düzenleyicide mp3 dosyasını indirip makinenizde yerel olarak oynatabilirsiniz.

a4b9578505422dad.png

Özet

Bu adımda, bir dizeyi sesli mp3 dosyasına dönüştürmek için Text-to-Speech API'yi kullandınız. Ses dosyaları oluşturma hakkında daha fazla bilgi edinin.

7. Tebrikler!

Ses dosyalarında farklı türde transkripsiyonlar yapmak için C# kullanarak Text-to-Speech API'yi nasıl kullanacağınızı öğrendiniz.

Temizleme

Bu hızlı başlangıçta kullanılan kaynaklar için Google Cloud Platform hesabınızın ücretlendirmesini önlemek amacıyla:

  • Cloud Platform Console'a gidin.
  • Kapatmak istediğiniz projeyi seçin, ardından üst kısımdaki "Sil"i tıklayın. Bu işlem, projenin silinmesini planlar.

Daha Fazla Bilgi

Lisans

Bu çalışma, Creative Commons Attribution 2.0 Genel Amaçlı Lisans ile lisans altına alınmıştır.