Membuat audio berdurasi panjang

Dokumen ini akan memandu Anda dalam proses menyintesis audio berdurasi panjang. Sintesis Audio Panjang secara asinkron menyintesis hingga 1 juta byte pada input. Untuk mempelajari lebih lanjut tentang konsep dasar dalam Text-to-Speech, baca Dasar-Dasar Text-to-Speech.

Sebelum memulai

Sebelum dapat mengirim permintaan ke Text-to-Speech API, Anda harus sudah menyelesaikan tindakan berikut. Lihat halaman sebelum memulai untuk mengetahui detailnya.

  • Aktifkan Text-to-Speech di project GCP.
    1. Pastikan penagihan diaktifkan untuk Text-to-Speech.
    2. Pastikan Anda memiliki peran Identity and Access Management (IAM) berikut di bucket GCS output.
      • Storage Object Creator
      • Storage Object Viewer
  • Instal Google Cloud CLI, lalu initialize dengan menjalankan perintah berikut:

    gcloud init

Menyintesis audio berdurasi panjang dari teks menggunakan command line

Anda dapat mengonversi teks panjang menjadi audio dengan membuat permintaan HTTP POST ke endpoint https://texttospeech.googleapis.com/v1beta1/projects/{$project_number}/locations/global:synthesizeLongAudio. Dalam isi perintah POST, tentukan kolom berikut.

voice: Jenis suara yang akan disintesis.

input.text: Teks yang akan disintesis.

audioConfig: Jenis audio yang akan dibuat.

output_gcs_uri: Jalur file output GCS dalam bentuk "gs://bucket_name/file_name.wav".

parent: Induk di bawah formulir "projects/{YOUR PROJECT NUMBER}/locations/{YOUR PROJECT LOCATION}".

Input dapat berisi hingga 1 MB karakter. Batas persisnya dapat bervariasi dari input yang berbeda.

  1. Buat bucket Google Cloud Storage dalam project yang digunakan untuk menjalankan sintesis. Pastikan akun layanan yang digunakan untuk menjalankan sintesis memiliki akses baca/tulis ke bucket GCS output.

  2. Jalankan permintaan REST di bawah ini pada command line untuk menyintesis audio dari teks menggunakan Text-to-Speech. Perintah tersebut menggunakan perintah gcloud auth application-default print-access-token untuk mengambil token otorisasi untuk permintaan tersebut.

    Pastikan akun layanan yang menjalankan operasi GET memiliki peran Editor Text-to-Speech.

    Metode HTTP dan URL:

    POST https://texttospeech.googleapis.com/v1beta1/projects/12345/locations/global:synthesizeLongAudio

    Meminta isi JSON:

    {
      "parent": "projects/12345/locations/global",
      "audio_config":{
          "audio_encoding":"LINEAR16"
      },
      "input":{
          "text":"hello"
      },
      "voice":{
          "language_code":"en-us",
          "name":"en-us-Standard-A"
      },
      "output_gcs_uri": "gs://bucket_name/file_name.wav"
    }
    

    Untuk mengirim permintaan Anda, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "name": "23456",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.texttospeech.v1beta1.SynthesizeLongAudioMetadata",
        "progressPercentage": 0,
        "startTime": "2022-12-20T00:46:56.296191037Z",
        "lastUpdateTime": "2022-12-20T00:46:56.296191037Z"
      },
      "done": false
    }
    

  3. Output JSON untuk perintah REST berisi nama operasi yang panjang di kolom name. Jalankan permintaan REST di bawah ini pada command line untuk mengkueri status operasi yang berjalan lama.

    Pastikan akun layanan yang menjalankan operasi GET berasal dari project yang sama dengan yang digunakan untuk sintesis.

    Metode HTTP dan URL:

    GET https://texttospeech.googleapis.com/v1beta1/projects/12345/locations/global/operations/23456

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "name": "projects/12345/locations/global/operations/23456",
      "metadata": {
        "@type": "type.googleapis.com/google.cloud.texttospeech.v1beta1.SynthesizeLongAudioMetadata",
        "progressPercentage": 100
      },
      "done": true
    }
    

  4. Buat kueri daftar semua operasi yang dijalankan di project tertentu, jalankan permintaan REST di bawah ini.

    Pastikan akun layanan yang menjalankan operasi LIST berasal dari project yang sama dengan yang digunakan untuk sintesis.

    Metode HTTP dan URL:

    GET https://texttospeech.googleapis.com/v1beta1/projects/12345/locations/global/operations

    Untuk mengirim permintaan, perluas salah satu opsi berikut:

    Anda akan melihat respons JSON seperti berikut:

    {
      "operations": [
        {
          "name": "12345",
          "done": false
        },
        {
          "name": "23456",
          "done": false
        }
      ],
      "nextPageToken": ""
    }
    

  5. Setelah operasi yang berjalan lama berhasil diselesaikan, temukan file audio output dalam uri bucket yang ditentukan di kolom output_gcs_uri. Jika operasi tidak berhasil diselesaikan, temukan error dengan membuat kueri menggunakan perintah GET REST, perbaiki error, dan keluarkan RPC lagi.

Menyintesis audio berdurasi panjang dari teks menggunakan library klien

Menginstal library klien

Python

Sebelum menginstal library, pastikan Anda telah menyiapkan lingkungan untuk pengembangan Python.

pip install --upgrade google-cloud-texttospeech

Membuat data audio

Anda dapat menggunakan Text-to-Speech untuk membuat file audio panjang yang berisi ucapan sintetis manusia. Gunakan kode berikut untuk membuat file audio panjang di bucket GCS Anda.

Python

Sebelum menjalankan contoh, pastikan Anda telah menyiapkan lingkungan untuk pengembangan Python.

# Copyright 2023 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from google.cloud import texttospeech

def synthesize_long_audio(project_id, location, output_gcs_uri):
    """
    Synthesizes long input, writing the resulting audio to `output_gcs_uri`.

    Example usage: synthesize_long_audio('12345', 'us-central1', 'gs://{BUCKET_NAME}/{OUTPUT_FILE_NAME}.wav')

    """
    # TODO(developer): Uncomment and set the following variables
    # project_id = 'YOUR_PROJECT_ID'
    # location = 'YOUR_LOCATION'
    # output_gcs_uri = 'YOUR_OUTPUT_GCS_URI'

    client = texttospeech.TextToSpeechLongAudioSynthesizeClient()

    input = texttospeech.SynthesisInput(
        text="Test input. Replace this with any text you want to synthesize, up to 1 million bytes long!"
    )

    audio_config = texttospeech.AudioConfig(
        audio_encoding=texttospeech.AudioEncoding.LINEAR16
    )

    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US", name="en-US-Standard-A"
    )

    parent = f"projects/{project_id}/locations/{location}"

    request = texttospeech.SynthesizeLongAudioRequest(
        parent=parent,
        input=input,
        audio_config=audio_config,
        voice=voice,
        output_gcs_uri=output_gcs_uri,
    )

    operation = client.synthesize_long_audio(request=request)
    # Set a deadline for your LRO to finish. 300 seconds is reasonable, but can be adjusted depending on the length of the input.
    # If the operation times out, that likely means there was an error. In that case, inspect the error, and try again.
    result = operation.result(timeout=300)
    print(
        "\nFinished processing, check your GCS bucket to find your audio file! Printing what should be an empty result: ",
        result,
    )

Pembersihan

Untuk menghindari tagihan Google Cloud Platform yang tidak diperlukan, gunakan konsol Google Cloud untuk menghapus project jika Anda tidak membutuhkannya.

Langkah selanjutnya

  • Pelajari Cloud Text-to-Speech lebih lanjut dengan membaca dasar-dasarnya.
  • Tinjau daftar suara yang tersedia yang dapat Anda gunakan untuk ucapan sintetis.