Text-to-Speech API'yi Node.js ile kullanma

1. Genel Bakış

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

Bu codelab'de Node.js ile Text-to-Speech API'yi kullanmaya odaklanacaksınız. Mevcut sesleri nasıl listeleyeceğinizi ve metinden ses sentezlemeyi öğreneceksiniz.

Neler öğreneceksiniz?

  • Cloud Shell'i kullanma
  • Text-to-Speech API'yi etkinleştirme
  • API isteklerinin kimliğini doğrulama
  • Node.js için Google Cloud istemci kitaplığını yükleme
  • Kullanılabilir sesler nasıl listelenir?
  • Metinden ses nasıl sentezlenir

Gerekenler

  • Bir Google Cloud Platform Projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • Node.js kullanımı hakkında bilgi

Anket

Bu eğiticiden nasıl yararlanacaksınız?

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

Node.js deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

Google Cloud Platform hizmetlerinin kullanımıyla ilgili deneyiminizi nasıl değerlendirirsiniz?

Acemi Orta Yeterli

2. Kurulum ve Gereksinimler

Kendi hızınızda ortam kurulumu

  1. Cloud Console'da oturum açıp yeni bir proje oluşturun veya mevcut bir projeyi yeniden kullanın. (Gmail veya G Suite hesabınız yoksa hesap oluşturmanız gerekir.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Tüm Google Cloud projelerinde benzersiz bir ad olan proje kimliğini unutmayın (yukarıdaki ad zaten alınmış ve size uygun olmayacaktır!). Bu kod laboratuvarın ilerleyen bölümlerinde PROJECT_ID olarak adlandırılacaktır.

  1. Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir.

Bu codelab'i çalıştırmanın maliyeti, yüksek değildir. "Temizleme" bölümündeki talimatları izlediğinizden emin olun. bölümünde, bu eğiticinin dışında faturalandırmayla karşılaşmamanız için kaynakları nasıl kapatacağınız konusunda tavsiyelerde bulunuyoruz. Yeni Google Cloud kullanıcıları 300 ABD doları ücretsiz deneme programından yararlanabilir.

Cloud Shell'i başlatma

Google Cloud dizüstü bilgisayarınızdan uzaktan çalıştırılabilse de 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 H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_UZQZZGzGzGzqzQzGLzGzGzqqLqSqLG simgesini tıklayın.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Cloud Shell'i daha önce hiç çalıştırmadıysanız ne olduğunu açıklayan bir ara ekran (ekranın alt kısmında) gösterilir. Bu durumda Devam'ı tıklayın (bunu bir daha görmezsiniz). Tek seferlik ekran şöyle görünür:

kEPbNAo_w5C_pi9QvhFwWwky1cX8hr_xEMGWySNIoMCdi-Djx9AQRqWn-__DmEpC7vKgUtl-feTcv-wBxJ8NwzzAp7mY65-fi2LJo4twUoewT1SUjd6Y3h81RG3rKIkqhoVlFR-G7w

Temel hazırlık ve Cloud Shell'e bağlanmak yalnızca birkaç dakika sürer.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

İhtiyacınız olan tüm geliştirme araçlarını bu sanal makinede bulabilirsiniz. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Bu codelab'deki çalışmalarınızın tamamı olmasa bile büyük bir kısmı yalnızca bir tarayıcı veya Chromebook'unuzla yapılabilir.

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. Kimlik doğrulamanızın tamamlandığını onaylamak için Cloud Shell'de aşağıdaki 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`
gcloud config list project

Komut çıkışı

[core]
project = <PROJECT_ID>

Doğru değilse aşağıdaki 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. Cloud Shell'de aşağıdaki komutu kullanarak API'yi etkinleştirebilirsiniz:

gcloud services enable texttospeech.googleapis.com

4. API isteklerinin kimliğini doğrulama

Text-to-Speech API'ye istek göndermek için bir Hizmet Hesabı kullanmanız gerekir. Hizmet Hesabı projenize aittir ve Google Client Node.js kitaplığı tarafından, Text-to-Speech API istekleri yapmak için kullanılır. Diğer tüm kullanıcı hesapları gibi hizmet hesabı da e-posta adresiyle temsil edilir. Bu bölümde Google Cloud SDK'yı kullanarak bir hizmet hesabı oluşturacaksınız. Ardından, hizmet hesabı olarak kimliğinizi doğrulamak için gereken kimlik bilgilerini oluşturacaksınız.

Öncelikle, bu codelab boyunca kullanacağınız GOOGLE_CLOUD_PROJECT ile bir ortam değişkeni ayarlayın:

export GOOGLE_CLOUD_PROJECT=$(gcloud config get-value core/project)

Ardından, aşağıdakileri kullanarak Text-to-Speech API'ye erişmek için yeni bir hizmet hesabı oluşturun:

gcloud iam service-accounts create my-text-to-speech-sa \
  --display-name "my text-to-speech codelab service account"

Ardından, Node.js kodunuzun yeni hizmet hesabınız olarak giriş yapmak için kullanacağı kimlik bilgilerini oluşturun. Bu kimlik bilgilerini oluşturun ve "~/key.json" JSON dosyası olarak kaydedin kullanabilirsiniz:

gcloud iam service-accounts keys create ~/key.json \
  --iam-account  my-text-to-speech-sa@${GOOGLE_CLOUD_PROJECT}.iam.gserviceaccount.com

Son olarak, kimlik bilgilerinizi bulmak için Text-to-Speech API Node.js kitaplığının kullandığı GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini (bir sonraki adımda açıklanan) ayarlayın. Ortam değişkeninin, oluşturduğunuz kimlik bilgisi JSON dosyasının tam yoluna şu şekilde ayarlanması gerekir:

export GOOGLE_APPLICATION_CREDENTIALS="/home/${USER}/key.json"

5. Node.js için Google Cloud Text-to-Speech API istemci kitaplığını yükleme

Öncelikle, bu Text-to-Speech API laboratuvarını çalıştırmak için kullanacağınız bir proje oluşturun. Ardından, istediğiniz bir klasörde yeni bir Node.js paketini başlatın:

npm init

AİOY, proje yapılandırması hakkında ad ve sürüm gibi çeşitli sorular sorar. Her soru için varsayılan değerleri kabul etmek üzere ENTER tuşuna basın. Varsayılan giriş noktası index.js adlı bir dosyadır.

Sonra, projeye Google Cloud Speech kitaplığını yükleyin:

npm install --save @google-cloud/text-to-speech

Google Cloud için Node.js geliştirmesinin nasıl oluşturulacağıyla ilgili daha fazla talimat için lütfen Kurulum Kılavuzu'nu inceleyin.

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

6. Kullanılabilir Sesleri Listeleyin

Bu bölümde öncelikle ses sentezi için İngilizce olan mevcut tüm sesleri listelersiniz.

İçindeki index.js dosyasına gidin ve kodu aşağıdakiyle değiştirin:

'use strict';

/**
 * Lists available voices for the specified language.
 *
 * @param {string} languageCode - The language code.
 */
async function listVoices(languageCode) {
  const textToSpeech = require('@google-cloud/text-to-speech');

  const client = new textToSpeech.TextToSpeechClient();

  const [result] = await client.listVoices({languageCode});
  const voices = result.voices;

  voices.forEach((voice) => {
    console.log(`${voice.name} (${voice.ssmlGender}): ${voice.languageCodes}`);
  });
}

listVoices('en');

Bir iki dakikanızı ayırarak kodu inceleyin. Uygulamayı çalıştırın:

node . 

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

en-US-Standard-A (MALE): en-US
en-US-Standard-B (MALE): en-US
en-US-Standard-C (FEMALE): en-US
en-US-Standard-D (MALE): en-US
en-US-Standard-E (FEMALE): en-US
en-US-Standard-F (FEMALE): en-US
...

7. Metinden ses sentezle

Bir dizeyi ses verilerine dönüştürmek için Text-to-Speech API'yi kullanabilirsiniz. Konuşma sentezinin çıktısını benzersiz bir ses seçme veya çıktı perde, ses düzeyi, konuşma hızı ve örnek hızına göre değiştirme gibi çeşitli şekillerde yapılandırabilirsiniz.

İçindeki index.js dosyasına gidin ve aşağıdaki kodu ekleyin:

/**
 * Sythesizes sample text into an .mp3 file.
 */
async function synthesize() {
  const textToSpeech = require('@google-cloud/text-to-speech');
  const fs = require('fs');
  const util = require('util');

  const client = new textToSpeech.TextToSpeechClient();

  const text = 'This is a demonstration of the Google Cloud Text-to-Speech API';

  const request = {
    input: {text: text},
    voice: {languageCode: 'en-US', ssmlGender: 'NEUTRAL'},
    audioConfig: {audioEncoding: 'MP3'},
  };

  const [response] = await client.synthesizeSpeech(request);
  // Write the binary audio content to a local file
  const writeFile = util.promisify(fs.writeFile);
  await writeFile('output.mp3', response.audioContent, 'binary');
  console.log('Audio content written to file: output.mp3');
}

synthesize();

Bir iki dakikanızı ayırarak kodu inceleyin ve metinden ses dosyası oluşturmak için nasıl kullanıldığını öğrenin.

node .

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

Audio content written to file "output.mp3"

8. Tebrikler!

Ses dosyalarında farklı türde metne dönüştürme işlemleri gerçekleştirmek için Node.js 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 "Sil"i tıklayın üstte üstte yer alır: Bu işlem, projeyi silinmek üzere programlar.

Daha Fazla Bilgi

Lisans

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