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

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

Bu codelab hakkında

subjectSon güncelleme Ara 15, 2022
account_circleYazan: Anu Srivastava

1. Genel Bakış

Google Cloud Speech-to-Text API, kullanımı kolay API ile güçlü nöral ağ modelleri uygulayarak geliştiricilerin 120 dil ve lehçede sesi metne dönüştürmesini sağlar.

Bu codelab'de, Speech-to-Text API'yi Node.js ile kullanmaya odaklanacaksınız. İngilizce ve diğer dillerde ses dosyalarını metne dönüştürmek için Cloud Speech-to-Text API'ye nasıl göndereceğinizi öğreneceksiniz.

Neler öğreneceksiniz?

  • Speech-to-Text API'yi etkinleştirme
  • API isteklerinin kimliğini doğrulama
  • Node.js için Google Cloud istemci kitaplığını yükleme
  • İngilizce ses dosyalarını metne dönüştürme
  • Ses dosyalarını kelime zaman damgalarıyla metne dönüştürme
  • Farklı dillerdeki ses dosyalarını metne dönüştürme

Gerekenler

  • Bir Google Cloud Platform Projesi
  • Chrome veya Firefox gibi bir tarayıcı
  • JavaScript/Node.js kullanma bilgisi

Anket

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

Node.js deneyiminizi nasıl değerlendirirsiniz?

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

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. Speech-to-Text API&#39;yi etkinleştirme

Speech-to-Text 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 speech.googleapis.com

4. API isteklerinin kimliğini doğrulama

Speech-to-Text 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 Speech-to-Text 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 PROJECT_ID'nizle bir ortam değişkeni ayarlayın. Cloud Shell kullanıyorsanız bu değişken sizin için ayarlanır:

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

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

gcloud iam service-accounts create my-speech-to-text-sa \
 
--display-name "my speech-to-text 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 aşağıdaki komutu kullanarak ~/key.json JSON dosyası olarak kaydedin:

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

Son olarak, kimlik bilgilerinizi bulmak için bir sonraki adımda ele alınan Speech-to-Text API Node.js kitaplığı tarafından kullanılan GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini 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"

Speech-to-Text API'nin kimliğini doğrulama hakkında daha fazla bilgi edinin.

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

Öncelikle, bu Speech-to-Text 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/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 Speech-to-Text API'yi kullanmaya hazırsınız.

6. Ses Dosyalarını Metne Dönüştürme

Bu bölümde, önceden kaydedilmiş bir ses dosyasını İngilizce dilinde metne dönüştüreceksiniz. Ses dosyası, Google Cloud Storage'da kullanılabilir.

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

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'LINEAR16',
    sampleRateHertz
: 16000,
    languageCode
: 'en-US',
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
 
const transcription = response.results
     
.map(result => result.alternatives[0].transcript)
     
.join('\n');
  console
.log(`Transcription: ${transcription}`);
}

quickstart
();

Bir veya iki dakikanızı ayırarak kodu inceleyin ve kodun bir ses dosyasında metne dönüştürmek için kullanıldığını görün*.*

Encoding parametresi, ses dosyası için hangi ses kodlaması türünü kullandığınızı API'ye bildirir. Flac, .raw dosyaları için kullanılan kodlama türüdür (Ayrıntılı bilgi için belgeye göz atın).

RecognitionAudio nesnesinde, API'ye Cloud Storage'daki ses dosyamızın URI'sını veya ses dosyasının yerel dosya yolunu iletebilirsiniz. Burada Cloud Storage URI'si kullanıyoruz.

Programı çalıştırın:

node .

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

how old is the Brooklyn Bridge

7. Kelime zaman damgalarıyla metne dönüştürme

Speech-to-Text, metne dönüştürülen sesin zaman farkını (zaman damgası) algılayabilir. Zaman ofsetleri, sağlanan seste söylenen her kelimenin başını ve sonunu gösterir. Zaman farkı değeri, sesin başlangıcından itibaren geçen süreyi 100 ms'lik artışlarla temsil eder.

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

const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/brooklyn_bridge.raw';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'LINEAR16',
    sampleRateHertz
: 16000,
    languageCode
: 'en-US',
    enableWordTimeOffsets
: true,
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
  response
.results.forEach((result) => {
    result
.alternatives.forEach((alternative) => {
      console
.log(`Transcript: ${alternative.transcript}`);
      console
.log(`Word details:`);
      console
.log(` Word count ${alternative.words.length}`);
      alternative
.words.forEach((item) => {
        console
.log(`  ${item.word}`);
       
const s = parseInt(item.startTime.seconds) +
         item
.startTime.nanos/1000000000;
        console
.log(`   WordStartTime: ${s}s`);
       
const e = parseInt(item.endTime.seconds) +
        item
.endTime.nanos/1000000000;
        console
.log(`   WordEndTime: ${e}s`);
     
});
   
});
 
});
}

quickstart
();

Bir veya iki dakikanızı ayırarak kodu inceleyin. Kodun, ses dosyalarında kelime zaman damgalarını* içeren metne dönüştürüldüğünden emin olun.* EnableWordTimeOffsets parametresi, API'ye zaman farkını etkinleştirmesini bildirir (daha fazla bilgi için belgeye bakın).

Programınızı tekrar çalıştırın:

node .

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

Transcript: how old is the Brooklyn Bridge
Word details:
 
Word count 6
  how
   
WordStartTime: 0s
   
WordEndTime: 0.3s
  old
   
WordStartTime: 0.3s
   
WordEndTime: 0.6s
 
is
   
WordStartTime: 0.6s
   
WordEndTime: 0.8s
  the
   
WordStartTime: 0.8s
   
WordEndTime: 0.9s
 
Brooklyn
   
WordStartTime: 0.9s
   
WordEndTime: 1.1s
 
Bridge
   
WordStartTime: 1.1s
   
WordEndTime: 1.4s

8. Farklı dilleri metne dönüştürün

Speech-to-Text API, 100'ü aşkın dilde metne dönüştürme özelliğini destekler. Desteklenen dillerin listesini burada bulabilirsiniz.

Bu bölümde, önceden kaydedilmiş bir ses dosyasını Fransızca konuşmayı metne dönüştüreceksiniz. Ses dosyası, Google Cloud Storage'da kullanılabilir.

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

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

const client = new speech.SpeechClient();

/**
 * Calls the Speech-to-Text API on a demo audio file.
 */

async
function quickstart() {
// The path to the remote LINEAR16 file stored in Google Cloud Storage
 
const gcsUri = 'gs://cloud-samples-data/speech/corbeau_renard.flac';

 
// The audio file's encoding, sample rate in hertz, and BCP-47 language code
 
const audio = {
    uri
: gcsUri,
 
};
 
const config = {
    encoding
: 'FLAC',
    languageCode
: 'fr-FR',
 
};
 
const request = {
    audio
: audio,
    config
: config,
 
};

 
// Detects speech in the audio file
 
const [response] = await client.recognize(request);
 
const transcription = response.results
     
.map((result) => result.alternatives[0].transcript)
     
.join('\n');
  console
.log(`Transcription: ${transcription}`);
}

quickstart
();

Programınızı yeniden çalıştırın. Aşağıdaki çıkışı göreceksiniz:

maître corbeau sur un arbre perché tenait en son bec un fromage

Bu cümle, popüler bir Fransız çocuk öyküsünden alınmıştır.

Desteklenen dillerin ve dil kodlarının tam listesi için buradaki belgelere bakın.

9. Tebrikler!

Ses dosyalarında farklı türde metne dönüştürme işlemleri gerçekleştirmek için Node.js kullanarak Speech-to-Text 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.