Menggunakan Speech-to-Text API dengan Node.js

Menggunakan Speech-to-Text API dengan Node.js

Tentang codelab ini

subjectTerakhir diperbarui Des 15, 2022
account_circleDitulis oleh Anu Srivastava

1. Ringkasan

Dengan Google Cloud Speech-to-Text API, developer dapat mengonversi audio menjadi teks dalam 120 bahasa dan varian, dengan menerapkan model jaringan neural yang canggih di API yang mudah digunakan.

Dalam codelab ini, Anda akan berfokus pada penggunaan Speech-to-Text API dengan Node.js. Anda akan mempelajari cara mengirim file audio dalam bahasa Inggris dan bahasa lainnya ke Cloud Speech-to-Text API untuk dibuat transkripsinya.

Yang akan Anda pelajari

  • Cara mengaktifkan Speech-to-Text API
  • Cara Mengautentikasi permintaan API
  • Cara menginstal library klien Google Cloud untuk Node.js
  • Cara mentranskripsikan file audio dalam bahasa Inggris
  • Cara mentranskripsikan file audio dengan stempel waktu kata
  • Cara mentranskripsikan file audio dalam berbagai bahasa

Yang Anda butuhkan

  • Project Google Cloud Platform
  • Browser, seperti Chrome atau Firefox
  • Pemahaman dalam menggunakan JavaScript/Node.js

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Bagaimana penilaian Anda terhadap pengalaman Anda dengan Node.js?

Bagaimana penilaian Anda terhadap pengalaman menggunakan layanan Google Cloud Platform?

2. Penyiapan dan Persyaratan

Penyiapan lingkungan mandiri

  1. Login ke Cloud Console dan buat project baru atau gunakan kembali project yang sudah ada. (Jika belum memiliki akun Gmail atau G Suite, Anda harus membuatnya.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

Ingat project ID, nama unik di semua project Google Cloud (maaf, nama di atas telah digunakan dan tidak akan berfungsi untuk Anda!) Project ID tersebut selanjutnya akan dirujuk di codelab ini sebagai PROJECT_ID.

  1. Selanjutnya, Anda harus mengaktifkan penagihan di Cloud Console untuk menggunakan resource Google Cloud.

Menjalankan operasi dalam codelab ini seharusnya tidak memerlukan banyak biaya, bahkan mungkin tidak sama sekali. Pastikan untuk mengikuti petunjuk yang ada di bagian "Membersihkan" yang memberi tahu Anda cara menonaktifkan resource sehingga tidak menimbulkan penagihan di luar tutorial ini. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

Meskipun Google Cloud dapat dioperasikan dari jarak jauh menggunakan laptop Anda, dalam codelab ini, Anda akan menggunakan Google Cloud Shell, lingkungan command line yang berjalan di Cloud.

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell H7JlbhKGHITmsxhQIcLwoe5HXZMhDlYue4K-SPszMxUxDjIeWfOHBfxDHYpmLQTzUmQ7Xx8o6OJUlANnQF0iBuUyfp1RzVad_4nCa0Zz5LtwBlUZFXFCWFrmrWZLqg1MkZz2LdgUDQ.

zlNW0HehB_AFW1qZ4AyebSQUdWm95n7TbnOr7UVm3j9dFcg6oWApJRlC0jnU1Mvb-IQp-trP1Px8xKNwt6o3pP6fyih947sEhOFI4IRF0W7WZk6hFqZDUGXQQXrw21GuMm2ecHrbzQ

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika demikian, klik Lanjutkan (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

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

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

pTv5mEKzWMWp5VBrg2eGcuRPv9dLInPToS-mohlrqDASyYGWnZ_SwE-MzOWHe76ZdCSmw0kgWogSJv27lrQE8pvA5OD6P1I47nz8vrAdK7yR1NseZKJvcxAZrPb8wRxoqyTpD-gbhA

Mesin virtual ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda.

  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:
gcloud auth list

Output perintah

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

3. Mengaktifkan Speech-to-Text API

Sebelum dapat mulai menggunakan Speech-to-Text API, Anda harus mengaktifkan API tersebut. Anda dapat mengaktifkan API menggunakan perintah berikut di Cloud Shell:

gcloud services enable speech.googleapis.com

4. Melakukan Autentikasi permintaan API

Untuk membuat permintaan ke Speech-to-Text API, Anda harus menggunakan Akun Layanan. Akun Layanan merupakan milik project Anda dan digunakan oleh library Node.js Klien Google untuk membuat permintaan Speech-to-Text API. Seperti akun pengguna lainnya, akun layanan diwakili oleh alamat email. Di bagian ini, Anda akan menggunakan Cloud SDK untuk membuat akun layanan, lalu membuat kredensial yang diperlukan untuk melakukan autentikasi sebagai akun layanan.

Pertama, tetapkan variabel lingkungan dengan PROJECT_ID, yang akan digunakan pada codelab ini. Jika Anda menggunakan Cloud Shell, variabel ini akan ditetapkan untuk Anda:

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

Selanjutnya, buat akun layanan baru untuk mengakses Speech-to-Text API menggunakan:

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

Selanjutnya, buat kredensial yang akan digunakan kode Node.js untuk login sebagai akun layanan baru. Buat kredensial ini dan simpan sebagai ~/key.json file JSON menggunakan perintah berikut:

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

Terakhir, tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS, yang digunakan oleh library Node.js Speech-to-Text API, yang dibahas pada langkah berikutnya, untuk menemukan kredensial Anda. Variabel lingkungan harus ditetapkan ke jalur lengkap file JSON kredensial yang Anda buat menggunakan:

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

Anda dapat membaca lebih lanjut cara mengautentikasi Speech-to-Text API.

5. Menginstal library klien Google Cloud Speech-to-Text API untuk Node.js

Pertama, buat project yang akan Anda gunakan untuk menjalankan lab Speech-to-Text API ini, lakukan inisialisasi paket Node.js baru di folder pilihan Anda:

npm init

NPM akan mengajukan beberapa pertanyaan tentang konfigurasi project, seperti nama dan versi. Untuk setiap pertanyaan, tekan ENTER untuk menyetujui nilai default. Titik entri default adalah file bernama index.js.

Selanjutnya, instal library Google Cloud Speech ke project:

npm install --save @google-cloud/speech

Untuk petunjuk lebih lanjut tentang cara menyiapkan pengembangan Node.js untuk Google Cloud, lihat Panduan Penyiapan.

Sekarang, Anda siap untuk menggunakan Speech-to-Text API.

6. Mentranskripsikan File Audio

Di bagian ini, Anda akan mentranskripsikan file audio yang telah direkam sebelumnya dalam bahasa Inggris. File audio tersedia di Google Cloud Storage.

Buka file index.js di dalam dan ganti kode dengan kode berikut:

// 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
();

Luangkan waktu satu atau dua menit untuk mempelajari kode dan lihat bahwa kode digunakan untuk mentranskripsikan file audio*.*

Parameter Encoding memberi tahu API jenis encoding audio yang Anda gunakan untuk file audio. Flac adalah jenis encoding untuk file .raw (lihat dokumen untuk mengetahui detail selengkapnya).

Pada objek RecognitionAudio, Anda dapat meneruskan API dengan uri file audio di Cloud Storage atau jalur file lokal untuk file audio. Di sini, kita menggunakan URI Cloud Storage.

Jalankan program:

node .

Anda akan melihat output berikut:

how old is the Brooklyn Bridge

7. Transkripsikan dengan stempel waktu kata

Speech-to-Text dapat mendeteksi offset waktu (stempel waktu) untuk audio yang ditranskripsi. Offset waktu menampilkan awal dan akhir setiap kata yang diucapkan dalam audio yang disediakan. Nilai selisih waktu menunjukkan jumlah waktu yang telah berlalu dari awal audio, dengan kelipatan 100 md.

Buka file index.js di dalam dan ganti kode dengan kode berikut:

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
();

Luangkan waktu satu atau dua menit untuk mempelajari kode dan lihat bahwa kode digunakan untuk mentranskripsikan file audio dengan stempel waktu kata*.* Parameter EnableWordTimeOffsets memberi tahu API untuk mengaktifkan offset waktu (lihat dokumen untuk detail selengkapnya).

Jalankan lagi program Anda:

node .

Anda akan melihat output berikut:

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. Transkripsikan berbagai bahasa

Speech-to-Text API mendukung transkripsi ke dalam lebih dari 100 bahasa. Anda dapat menemukan daftar bahasa yang didukung di sini.

Di bagian ini, Anda akan mentranskripsikan file audio yang telah direkam sebelumnya dalam bahasa Prancis. File audio tersedia di Google Cloud Storage.

Buka file index.js di dalam dan ganti kode dengan kode berikut:

// 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
();

Jalankan lagi program Anda dan Anda akan melihat output berikut:

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

Ini adalah kalimat dari dongeng anak-anak Prancis populer.

Untuk mengetahui daftar lengkap kode bahasa dan bahasa yang didukung, lihat dokumentasi di sini.

9. Selamat!

Anda telah mempelajari cara menggunakan Speech-to-Text API menggunakan Node.js untuk melakukan berbagai jenis transkripsi pada file audio.

Pembersihan

Agar tidak menimbulkan biaya pada akun Google Cloud Platform Anda untuk resource yang digunakan di panduan memulai ini:

  • Buka Cloud Platform Console.
  • Pilih project yang ingin dinonaktifkan, lalu klik 'Delete' di bagian atas: tindakan ini menjadwalkan penghapusan project.

Pelajari Lebih Lanjut

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.