Mentranskripsikan file audio panjang menjadi teks

Halaman ini menunjukkan cara mentranskripsikan file audio yang panjang (dengan durasi lebih dari satu menit) ke teks menggunakan Speech-to-Text API dan pengenalan ucapan asinkron.

Tentang pengenalan ucapan asinkron

Pengenalan ucapan batch memulai operasi panjang pemrosesan audio. Gunakan pengenalan ucapan asinkron untuk mentranskripsikan audio yang berdurasi lebih dari 60 detik. Untuk audio berdurasi lebih pendek, pengenalan ucapan sinkron lebih cepat dan lebih mudah. Batas atas untuk pengenalan ucapan asinkron adalah 480 menit (8 jam).

Pengenalan ucapan batch hanya dapat mentranskripsikan audio yang disimpan di Cloud Storage. Output transkripsi dapat diberikan inline sebagai bagian dari respons (untuk permintaan pengenalan batch file tunggal) atau ditulis ke Cloud Storage.

Permintaan pengenalan batch menampilkan Operation yang berisi informasi tentang pemrosesan pengenalan yang sedang berlangsung atas permintaan Anda. Anda dapat melakukan polling operasi untuk mengetahui kapan operasi selesai dan transkripnya tersedia.

Sebelum memulai

  1. Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
  2. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  3. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  4. Aktifkan API Speech-to-Text.

    Mengaktifkan API

  5. Pastikan Anda memiliki peran berikut di project: Cloud Speech Administrator

    Memeriksa peran

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Di kolom Akun utama, cari baris yang berisi alamat email Anda.

      Jika alamat email Anda tidak ada di kolom tersebut, berarti Anda tidak memiliki peran apa pun.

    4. Di kolom Peran untuk baris yang berisi alamat email Anda, periksa apakah daftar peran menyertakan peran yang diperlukan.

    Memberikan peran

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Klik Berikan akses.
    4. Di kolom Akun utama baru, masukkan alamat email Anda.
    5. Di daftar Pilih peran, pilih peran.
    6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
    7. Klik Simpan.
  6. Menginstal Google Cloud CLI.
  7. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  8. Di konsol Google Cloud, pada halaman pemilih project, pilih atau buat project Google Cloud.

    Buka pemilih project

  9. Pastikan penagihan telah diaktifkan untuk project Google Cloud Anda.

  10. Aktifkan API Speech-to-Text.

    Mengaktifkan API

  11. Pastikan Anda memiliki peran berikut di project: Cloud Speech Administrator

    Memeriksa peran

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Di kolom Akun utama, cari baris yang berisi alamat email Anda.

      Jika alamat email Anda tidak ada di kolom tersebut, berarti Anda tidak memiliki peran apa pun.

    4. Di kolom Peran untuk baris yang berisi alamat email Anda, periksa apakah daftar peran menyertakan peran yang diperlukan.

    Memberikan peran

    1. Di konsol Google Cloud, buka halaman IAM.

      Buka IAM
    2. Pilih project.
    3. Klik Berikan akses.
    4. Di kolom Akun utama baru, masukkan alamat email Anda.
    5. Di daftar Pilih peran, pilih peran.
    6. Untuk memberikan peran tambahan, klik Tambahkan peran lain, lalu tambahkan setiap peran tambahan.
    7. Klik Simpan.
  12. Menginstal Google Cloud CLI.
  13. Untuk initialize gcloud CLI, jalankan perintah berikut:

    gcloud init
  14. Library klien dapat menggunakan Kredensial Default Aplikasi untuk dengan mudah melakukan autentikasi dengan Google API dan mengirim permintaan ke API tersebut. Dengan Kredensial Default Aplikasi, Anda dapat menguji aplikasi secara lokal dan men-deploy aplikasi tanpa mengubah kode yang mendasarinya. Untuk informasi selengkapnya, lihat Autentikasi untuk menggunakan library klien.

  15. Buat kredensial autentikasi lokal untuk Akun Google Anda:

    gcloud auth application-default login

Pastikan juga Anda telah menginstal library klien.

Mengaktifkan akses ke Cloud Storage

Speech-to-Text menggunakan akun layanan untuk mengakses file Anda di Cloud Storage. Secara default, akun layanan memiliki akses ke file Cloud Storage dalam project yang sama.

Alamat email akun layanan adalah sebagai berikut:

service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com

Untuk mentranskripsikan file Cloud Storage di project lain, Anda dapat memberikan peran Agen Layanan Speech-to-Text ke project layanan ini:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
    --role=roles/speech.serviceAgent

Informasi selengkapnya tentang kebijakan IAM project tersedia di bagian Mengelola akses ke project, folder, dan organisasi.

Anda juga dapat memberikan akses yang lebih terperinci kepada akun layanan dengan memberinya izin ke bucket Cloud Storage tertentu:

gsutil iam ch serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com:admin \
    gs://BUCKET_NAME

Informasi selengkapnya tentang cara mengelola akses ke Cloud Storage tersedia di bagian Membuat dan Mengelola daftar kontrol akses dalam dokumentasi Cloud Storage.

Melakukan pengenalan batch dengan hasil inline

Berikut adalah contoh menjalankan pengenalan ucapan batch pada file audio di Cloud Storage dan membaca hasil transkripsi secara inline dari respons:

Python

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech

def transcribe_batch_gcs_input_inline_output_v2(
    project_id: str,
    gcs_uri: str,
) -> cloud_speech.BatchRecognizeResults:
    """Transcribes audio from a Google Cloud Storage URI.

    Args:
        project_id: The Google Cloud project ID.
        gcs_uri: The Google Cloud Storage URI.

    Returns:
        The RecognizeResponse.
    """
    # Instantiates a client
    client = SpeechClient()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="long",
    )

    file_metadata = cloud_speech.BatchRecognizeFileMetadata(uri=gcs_uri)

    request = cloud_speech.BatchRecognizeRequest(
        recognizer=f"projects/{project_id}/locations/global/recognizers/_",
        config=config,
        files=[file_metadata],
        recognition_output_config=cloud_speech.RecognitionOutputConfig(
            inline_response_config=cloud_speech.InlineOutputConfig(),
        ),
    )

    # Transcribes the audio into text
    operation = client.batch_recognize(request=request)

    print("Waiting for operation to complete...")
    response = operation.result(timeout=120)

    for result in response.results[gcs_uri].transcript.results:
        print(f"Transcript: {result.alternatives[0].transcript}")

    return response.results[gcs_uri].transcript

Melakukan pengenalan batch dan menulis hasilnya ke Cloud Storage

Berikut adalah contoh melakukan pengenalan ucapan batch pada file audio di Cloud Storage dan membaca hasil transkripsi dari file output di Cloud Storage. Perhatikan bahwa file yang ditulis ke Cloud Storage adalah pesan BatchRecognizeResults dalam format JSON:

Python

import re

from google.cloud import storage
from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech

def transcribe_batch_gcs_input_gcs_output_v2(
    project_id: str,
    gcs_uri: str,
    gcs_output_path: str,
) -> cloud_speech.BatchRecognizeResults:
    """Transcribes audio from a Google Cloud Storage URI.

    Args:
        project_id: The Google Cloud project ID.
        gcs_uri: The Google Cloud Storage URI.
        gcs_output_path: The Cloud Storage URI to which to write the transcript.

    Returns:
        The BatchRecognizeResults message.
    """
    # Instantiates a client
    client = SpeechClient()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="long",
    )

    file_metadata = cloud_speech.BatchRecognizeFileMetadata(uri=gcs_uri)

    request = cloud_speech.BatchRecognizeRequest(
        recognizer=f"projects/{project_id}/locations/global/recognizers/_",
        config=config,
        files=[file_metadata],
        recognition_output_config=cloud_speech.RecognitionOutputConfig(
            gcs_output_config=cloud_speech.GcsOutputConfig(
                uri=gcs_output_path,
            ),
        ),
    )

    # Transcribes the audio into text
    operation = client.batch_recognize(request=request)

    print("Waiting for operation to complete...")
    response = operation.result(timeout=120)

    file_results = response.results[gcs_uri]

    print(f"Operation finished. Fetching results from {file_results.uri}...")
    output_bucket, output_object = re.match(
        r"gs://([^/]+)/(.*)", file_results.uri
    ).group(1, 2)

    # Instantiates a Cloud Storage client
    storage_client = storage.Client()

    # Fetch results from Cloud Storage
    bucket = storage_client.bucket(output_bucket)
    blob = bucket.blob(output_object)
    results_bytes = blob.download_as_bytes()
    batch_recognize_results = cloud_speech.BatchRecognizeResults.from_json(
        results_bytes, ignore_unknown_fields=True
    )

    for result in batch_recognize_results.results:
        print(f"Transcript: {result.alternatives[0].transcript}")

    return batch_recognize_results

Melakukan pengenalan batch pada beberapa file

Berikut adalah contoh cara melakukan pengenalan ucapan batch pada beberapa file audio di Cloud Storage dan membaca hasil transkripsi dari file output di Cloud Storage:

Python

import re
from typing import List

from google.cloud import storage
from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech

def transcribe_batch_multiple_files_v2(
    project_id: str,
    gcs_uris: List[str],
    gcs_output_path: str,
) -> cloud_speech.BatchRecognizeResponse:
    """Transcribes audio from a Google Cloud Storage URI.

    Args:
        project_id: The Google Cloud project ID.
        gcs_uris: The Google Cloud Storage URIs to transcribe.
        gcs_output_path: The Cloud Storage URI to which to write the transcript.

    Returns:
        The BatchRecognizeResponse message.
    """
    # Instantiates a client
    client = SpeechClient()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="long",
    )

    files = [cloud_speech.BatchRecognizeFileMetadata(uri=uri) for uri in gcs_uris]

    request = cloud_speech.BatchRecognizeRequest(
        recognizer=f"projects/{project_id}/locations/global/recognizers/_",
        config=config,
        files=files,
        recognition_output_config=cloud_speech.RecognitionOutputConfig(
            gcs_output_config=cloud_speech.GcsOutputConfig(
                uri=gcs_output_path,
            ),
        ),
    )

    # Transcribes the audio into text
    operation = client.batch_recognize(request=request)

    print("Waiting for operation to complete...")
    response = operation.result(timeout=120)

    print("Operation finished. Fetching results from:")
    for uri in gcs_uris:
        file_results = response.results[uri]
        print(f"  {file_results.uri}...")
        output_bucket, output_object = re.match(
            r"gs://([^/]+)/(.*)", file_results.uri
        ).group(1, 2)

        # Instantiates a Cloud Storage client
        storage_client = storage.Client()

        # Fetch results from Cloud Storage
        bucket = storage_client.bucket(output_bucket)
        blob = bucket.blob(output_object)
        results_bytes = blob.download_as_bytes()
        batch_recognize_results = cloud_speech.BatchRecognizeResults.from_json(
            results_bytes, ignore_unknown_fields=True
        )

        for result in batch_recognize_results.results:
            print(f"     Transcript: {result.alternatives[0].transcript}")

    return response

Mengaktifkan pembuatan batch dinamis pada pengenalan batch

Pembuatan batch dinamis memungkinkan transkripsi dengan biaya yang lebih rendah untuk latensi yang lebih tinggi. Fitur ini hanya tersedia untuk pengenalan batch.

Berikut adalah contoh melakukan pengenalan batch pada file audio di Cloud Storage dengan mengaktifkan pembuatan batch dinamis:

Python

from google.cloud.speech_v2 import SpeechClient
from google.cloud.speech_v2.types import cloud_speech

def transcribe_batch_dynamic_batching_v2(
    project_id: str,
    gcs_uri: str,
) -> cloud_speech.BatchRecognizeResults:
    """Transcribes audio from a Google Cloud Storage URI.

    Args:
        project_id: The Google Cloud project ID.
        gcs_uri: The Google Cloud Storage URI.

    Returns:
        The RecognizeResponse.
    """
    # Instantiates a client
    client = SpeechClient()

    config = cloud_speech.RecognitionConfig(
        auto_decoding_config=cloud_speech.AutoDetectDecodingConfig(),
        language_codes=["en-US"],
        model="long",
    )

    file_metadata = cloud_speech.BatchRecognizeFileMetadata(uri=gcs_uri)

    request = cloud_speech.BatchRecognizeRequest(
        recognizer=f"projects/{project_id}/locations/global/recognizers/_",
        config=config,
        files=[file_metadata],
        recognition_output_config=cloud_speech.RecognitionOutputConfig(
            inline_response_config=cloud_speech.InlineOutputConfig(),
        ),
        processing_strategy=cloud_speech.BatchRecognizeRequest.ProcessingStrategy.DYNAMIC_BATCHING,
    )

    # Transcribes the audio into text
    operation = client.batch_recognize(request=request)

    print("Waiting for operation to complete...")
    response = operation.result(timeout=120)

    for result in response.results[gcs_uri].transcript.results:
        print(f"Transcript: {result.alternatives[0].transcript}")

    return response.results[gcs_uri].transcript

Mengganti fitur pengenalan per file

Pengenalan batch secara default menggunakan konfigurasi pengenalan yang sama untuk setiap file dalam permintaan pengenalan batch. Jika file yang berbeda memerlukan konfigurasi atau fitur yang berbeda, konfigurasi dapat diganti per file menggunakan kolom config dalam pesan [BatchRecognizeFileMetadata][batch-file -metadata-grpc]. Lihat dokumentasi pengenal untuk mengetahui contoh penggantian fitur pengenalan.

Pembersihan

Agar akun Google Cloud Anda tidak dikenai biaya untuk resource yang digunakan pada halaman ini, ikuti langkah-langkah berikut.

  1. Opsional: Cabut kredensial autentikasi yang Anda buat, dan hapus file kredensial lokal.

    gcloud auth application-default revoke
  2. Opsional: Cabut kredensial dari gcloud CLI.

    gcloud auth revoke

Konsol

  • Di konsol Google Cloud, buka halaman Manage resource.

    Buka Manage resource

  • Pada daftar project, pilih project yang ingin Anda hapus, lalu klik Delete.
  • Pada dialog, ketik project ID, lalu klik Shut down untuk menghapus project.
  • gcloud

    Menghapus project Google Cloud:

    gcloud projects delete PROJECT_ID

    Langkah selanjutnya