Menggunakan Speech-to-Text API dengan Python

Menggunakan Speech-to-Text API dengan Python

Tentang codelab ini

subjectTerakhir diperbarui Mar 27, 2024
account_circleDitulis oleh Laurent Picard

1. Ringkasan

9e7124a578332fed.pngS

Speech-to-Text API memungkinkan developer mengonversi audio menjadi teks dalam lebih dari 125 bahasa dan varian, dengan menerapkan model jaringan neural yang canggih di API yang mudah digunakan.

Dalam tutorial ini, Anda akan berfokus pada penggunaan Speech-to-Text API dengan Python.

Yang akan Anda pelajari

  • Cara menyiapkan lingkungan Anda
  • 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
  • Browser, seperti Chrome atau Firefox
  • Pemahaman dalam menggunakan Python

Survei

Bagaimana Anda akan menggunakan tutorial ini?

Bagaimana penilaian Anda terhadap pengalaman dengan Python?

Bagaimana Anda menilai pengalaman Anda dengan layanan Google Cloud?

2. Penyiapan dan persyaratan

Penyiapan lingkungan mandiri

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • Project name adalah nama tampilan untuk peserta project ini. String ini adalah string karakter yang tidak digunakan oleh Google API. Anda dapat memperbaruinya kapan saja.
  • Project ID bersifat unik di semua project Google Cloud dan tidak dapat diubah (tidak dapat diubah setelah ditetapkan). Cloud Console otomatis membuat string unik; biasanya Anda tidak mementingkan kata-katanya. Di sebagian besar codelab, Anda harus merujuk Project ID-nya (umumnya diidentifikasi sebagai PROJECT_ID). Jika tidak suka dengan ID yang dibuat, Anda dapat membuat ID acak lainnya. Atau, Anda dapat mencobanya sendiri, dan lihat apakah ID tersebut tersedia. ID tidak dapat diubah setelah langkah ini dan tersedia selama durasi project.
  • Sebagai informasi, ada nilai ketiga, Project Number, yang digunakan oleh beberapa API. Pelajari lebih lanjut ketiga nilai ini di dokumentasi.
  1. Selanjutnya, Anda harus mengaktifkan penagihan di Konsol Cloud untuk menggunakan resource/API Cloud. Menjalankan operasi dalam codelab ini tidak akan memakan banyak biaya, bahkan mungkin tidak sama sekali. Guna mematikan resource agar tidak menimbulkan penagihan di luar tutorial ini, Anda dapat menghapus resource yang dibuat atau menghapus project-nya. Pengguna baru Google Cloud memenuhi syarat untuk mengikuti program Uji Coba Gratis senilai $300 USD.

Mulai Cloud Shell

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

Mengaktifkan Cloud Shell

  1. Dari Cloud Console, klik Aktifkan Cloud Shell 853e55310c205094.pngS.

3c1dabeca90e44e5.pngS

Jika ini pertama kalinya Anda memulai Cloud Shell, Anda akan melihat layar perantara yang menjelaskan apa itu Cloud Shell. Jika Anda melihat layar perantara, klik Lanjutkan.

9c92662c6a846a5c.pngS

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

9f0e51b578fecce5.pngS

Mesin virtual ini dimuat dengan semua alat pengembangan yang dibutuhkan. 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 dengan browser.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda telah 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`
  1. Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:
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. Penyiapan lingkungan

Sebelum Anda dapat mulai menggunakan Speech-to-Text API, jalankan perintah berikut di Cloud Shell untuk mengaktifkan API:

gcloud services enable speech.googleapis.com

Anda akan melihat sesuatu seperti ini:

Operation "operations/..." finished successfully.

Sekarang, Anda dapat menggunakan Speech-to-Text API.

Buka direktori utama Anda:

cd ~

Buat lingkungan virtual Python untuk mengisolasi dependensi:

virtualenv venv-speech

Aktifkan lingkungan virtual:

source venv-speech/bin/activate

Instal IPython dan library klien Speech-to-Text API:

pip install ipython google-cloud-speech

Anda akan melihat sesuatu seperti ini:

...
Installing collected packages: ..., ipython, google-cloud-speech
Successfully installed ... google-cloud-speech-2.25.1 ...

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

Pada langkah berikutnya, Anda akan menggunakan penafsir Python interaktif yang disebut IPython, yang Anda instal di langkah sebelumnya. Mulai sesi dengan menjalankan ipython di Cloud Shell:

ipython

Anda akan melihat sesuatu seperti ini:

Python 3.9.2 (default, Feb 28 2021, 17:03:44)
Type 'copyright', 'credits' or 'license' for more information
IPython 8.18.1 -- An enhanced Interactive Python. Type '?' for help.

In [1]:

Anda siap membuat permintaan pertama Anda...

4. Mentranskripsikan file audio

Di bagian ini, Anda akan mentranskripsikan file audio bahasa Inggris.

Salin kode berikut ke dalam sesi IPython:

from google.cloud import speech


def speech_to_text(
    config
: speech.RecognitionConfig,
    audio
: speech.RecognitionAudio,
) -> speech.RecognizeResponse:
    client
= speech.SpeechClient()

   
# Synchronous speech recognition request
    response
= client.recognize(config=config, audio=audio)

   
return response


def print_response(response: speech.RecognizeResponse):
   
for result in response.results:
        print_result
(result)


def print_result(result: speech.SpeechRecognitionResult):
    best_alternative
= result.alternatives[0]
   
print("-" * 80)
   
print(f"language_code: {result.language_code}")
   
print(f"transcript:    {best_alternative.transcript}")
   
print(f"confidence:    {best_alternative.confidence:.0%}")
   

Luangkan waktu untuk mempelajari kode tersebut dan lihat cara kode tersebut menggunakan metode library klien recognize untuk mentranskripsikan file audio*.* Parameter config menunjukkan cara memproses permintaan dan parameter audio menentukan data audio yang akan dikenali.

Kirim permintaan:

config = speech.RecognitionConfig(
    language_code
="en",
)
audio
= speech.RecognitionAudio(
    uri
="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response
= speech_to_text(config, audio)
print_response
(response)

Anda akan melihat output berikut:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    how old is the Brooklyn Bridge
confidence:    98%

Perbarui konfigurasi untuk mengaktifkan tanda baca otomatis dan mengirim permintaan baru:

config.enable_automatic_punctuation = True

response
= speech_to_text(config, audio)
print_response
(response)

Anda akan melihat output berikut:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%

Ringkasan

Pada langkah ini, Anda dapat mentranskripsikan file audio dalam bahasa Inggris, menggunakan parameter yang berbeda, dan mencetak hasilnya. Anda dapat membaca lebih lanjut cara mentranskripsikan file audio.

5. Mendapatkan 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.

Untuk mentranskripsikan file audio dengan stempel waktu kata, perbarui kode Anda dengan menyalin teks berikut ke dalam sesi IPython:

def print_result(result: speech.SpeechRecognitionResult):
    best_alternative
= result.alternatives[0]
   
print("-" * 80)
   
print(f"language_code: {result.language_code}")
   
print(f"transcript:    {best_alternative.transcript}")
   
print(f"confidence:    {best_alternative.confidence:.0%}")
   
print("-" * 80)
   
for word in best_alternative.words:
        start_s
= word.start_time.total_seconds()
        end_s
= word.end_time.total_seconds()
       
print(f"{start_s:>7.3f} | {end_s:>7.3f} | {word.word}")
       

Luangkan waktu sejenak untuk mempelajari kode tersebut dan lihat cara kode mentranskripsikan file audio dengan stempel waktu kata*.* Parameter enable_word_time_offsets memberi tahu API untuk menampilkan offset waktu untuk setiap kata (lihat dokumen untuk detail selengkapnya).

Kirim permintaan:

config = speech.RecognitionConfig(
    language_code
="en",
    enable_automatic_punctuation
=True,
    enable_word_time_offsets
=True,
)
audio
= speech.RecognitionAudio(
    uri
="gs://cloud-samples-data/speech/brooklyn_bridge.flac",
)

response
= speech_to_text(config, audio)
print_response
(response)

Anda akan melihat output berikut:

--------------------------------------------------------------------------------
language_code: en-us
transcript:    How old is the Brooklyn Bridge?
confidence:    98%
--------------------------------------------------------------------------------
  0.000 |   0.300 | How
  0.300 |   0.600 | old
  0.600 |   0.800 | is
  0.800 |   0.900 | the
  0.900 |   1.100 | Brooklyn
  1.100 |   1.400 | Bridge?

Ringkasan

Pada langkah ini, Anda dapat mentranskripsikan file audio dalam bahasa Inggris dengan stempel waktu kata dan mencetak hasilnya. Baca selengkapnya tentang mendapatkan stempel waktu kata.

6. Transkripsikan berbagai bahasa

Speech-to-Text API mengenali lebih dari 125 bahasa dan varian. Anda dapat menemukan daftar bahasa yang didukung di sini.

Di bagian ini, Anda akan mentranskripsikan file audio dalam bahasa Prancis.

Untuk mentranskripsikan file audio dalam bahasa Prancis, perbarui kode Anda dengan menyalin teks berikut ke dalam sesi IPython:

config = speech.RecognitionConfig(
    language_code
="fr-FR",
    enable_automatic_punctuation
=True,
    enable_word_time_offsets
=True,
)
audio
= speech.RecognitionAudio(
    uri
="gs://cloud-samples-data/speech/corbeau_renard.flac",
)

response
= speech_to_text(config, audio)
print_response
(response)

Anda akan melihat output berikut:

--------------------------------------------------------------------------------
language_code: fr-fr
transcript:    Maître corbeau sur un arbre perché Tenait dans son bec un fromage maître Renard par l'odeur alléché lui tint à peu près ce langage et bonjour monsieur du corbeau.
confidence:    94%
--------------------------------------------------------------------------------
  0.000 |   0.700 | Maître
  0.700 |   1.100 | corbeau
  1.100 |   1.300 | sur
  1.300 |   1.600 | un
  1.600 |   1.700 | arbre
  1.700 |   2.000 | perché
  2.000 |   3.000 | Tenait
  3.000 |   3.000 | dans
  3.000 |   3.200 | son
  3.200 |   3.500 | bec
  3.500 |   3.700 | un
  3.700 |   3.800 | fromage
...
 10.800 |  11.800 | monsieur
 11.800 |  11.900 | du
 11.900 |  12.100 | corbeau.

Ringkasan

Pada langkah ini, Anda dapat mentranskripsikan file audio bahasa Prancis dan mencetak hasilnya. Anda dapat membaca selengkapnya tentang bahasa yang didukung.

7. Selamat!

9e7124a578332fed.pngS

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

Pembersihan

Untuk membersihkan lingkungan pengembangan Anda, dari Cloud Shell:

  • Jika Anda masih berada dalam sesi IPython, kembali ke shell: exit
  • Berhenti menggunakan lingkungan virtual Python: deactivate
  • Hapus folder lingkungan virtual Anda: cd ~ ; rm -rf ./venv-speech

Untuk menghapus project Google Cloud Anda dari Cloud Shell:

  • Ambil project ID Anda saat ini: PROJECT_ID=$(gcloud config get-value core/project)
  • Pastikan project ini yang ingin Anda hapus: echo $PROJECT_ID
  • Hapus project: gcloud projects delete $PROJECT_ID

Pelajari lebih lanjut

Lisensi

Karya ini dilisensikan berdasarkan Lisensi Umum Creative Commons Attribution 2.0.