Chirp 3: Suara HD

Coba notebook Colab Lihat notebook di GitHub

Text-to-Speech Chirp 3: Suara HD mewakili generasi terbaru teknologi Text-to-Speech. Berkat teknologi model generatif generasi terbaru kami, suara ini memberikan realisme dan resonansi emosional.

Untuk menjelajahi dan bereksperimen dengan model suara kami di konsol Google Cloud , lihat Media Studio.

Coba Chirp 3: Suara HD di (Vertex AI Studio)

Pilihan suara

Berbagai pilihan suara tersedia, masing-masing dengan karakteristik yang berbeda:

Nama Gender Demo
Achernar Perempuan
Achird Laki-laki
Algenib Laki-laki
Algieba Laki-laki
Alnilam Laki-laki
Aoede Perempuan
Autonoe Perempuan
Callirrhoe Perempuan
Charon Laki-laki
Despina Perempuan
Enceladus Laki-laki
Erinome Perempuan
Fenrir Laki-laki
Gacrux Perempuan
Iapetus Laki-laki
Kore Perempuan
Laomedeia Perempuan
Leda Perempuan
Orus Laki-laki
Pulcherrima Perempuan
Puck Laki-laki
Rasalgethi Laki-laki
Sadachbia Laki-laki
Sadaltager Laki-laki
Schedar Laki-laki
Sulafat Perempuan
Umbriel Laki-laki
Vindemiatrix Perempuan
Zephyr Perempuan
Zubenelgenubi Laki-laki

Ketersediaan bahasa

Chirp 3: Suara HD didukung dalam bahasa berikut:

Bahasa Kode BCP-47
Arab (Umum) ar-XA
Bengali (India) bn-IN
Denmark (Denmark) da-DK
Belanda (Belgia) nl-BE
Belanda (Belanda) nl-NL
Inggris (Australia) en-AU
Inggris (India) en-IN
Inggris (Inggris Raya) en-GB
Inggris (Amerika Serikat) en-US
Finlandia (Finlandia) fi-FI
Prancis (Kanada) fr-CA
Prancis (Prancis) fr-FR
Jerman (Jerman) de-DE
Gujarati (India) gu-IN
Hindi (India) hi-IN
Indonesia (Indonesia) id-ID
Italia (Italia) it-IT
Jepang (Jepang) ja-JP
Kannada (India) kn-IN
Korea (Korea Selatan) ko-KR
Malayalam (India) ml-IN
China Mandarin (China) cmn-CN
Marathi (India) mr-IN
Bokmål Norwegia (Norwegia) nb-NO
Polandia (Polandia) pl-PL
Portugis (Brasil) pt-BR
Rusia (Rusia) ru-RU
Spanyol (Spanyol) es-ES
Spanyol (Amerika Serikat) es-US
Swahili (Kenya) sw-KE
Swedia (Swedia) sv-SE
Tamil (India) ta-IN
Telugu (India) te-IN
Thai (Thailand) th-TH
Turkiye (Turkiye) tr-TR
Ukraina (Ukraina) uk-UA
Urdu (India) ur-IN
Vietnam (Vietnam) vi-VN

Ketersediaan regional

Chirp 3: Suara HD tersedia di region Google Cloud berikut:

ZonaGoogle Cloud Kesiapan Peluncuran
global GA
us GA
eu GA
asia-southeast1 GA
europe-west2 GA
asia-northeast1 GA

Format output yang didukung

Format respons default adalah LINEAR16, tetapi format lain yang didukung meliputi:

Metode API Format
streaming ALAW, MULAW, OGG_OPUS, dan PCM
batch ALAW, MULAW, MP3, OGG_OPUS, dan PCM

Menggunakan Chirp 3: Suara HD

Pelajari cara menggunakan Chirp 3: Suara HD untuk menyintesis ucapan.

Menjalankan permintaan sintesis ucapan streaming

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Text-to-Speech, lihat Library klien Text-to-Speech. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Text-to-Speech API untuk Python.

Untuk mengautentikasi ke Text-to-Speech, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

"""Synthesizes speech from a stream of input text."""
from google.cloud import texttospeech

client = texttospeech.TextToSpeechClient()

# See https://cloud.google.com/text-to-speech/docs/voices for all voices.
streaming_config = texttospeech.StreamingSynthesizeConfig(
    voice=texttospeech.VoiceSelectionParams(
        name="en-US-Chirp3-HD-Charon",
        language_code="en-US",
    )
)

# Set the config for your stream. The first request must contain your config, and then each subsequent request must contain text.
config_request = texttospeech.StreamingSynthesizeRequest(
    streaming_config=streaming_config
)

text_iterator = [
    "Hello there. ",
    "How are you ",
    "today? It's ",
    "such nice weather outside.",
]

# Request generator. Consider using Gemini or another LLM with output streaming as a generator.
def request_generator():
    yield config_request
    for text in text_iterator:
        yield texttospeech.StreamingSynthesizeRequest(
            input=texttospeech.StreamingSynthesisInput(text=text)
        )

streaming_responses = client.streaming_synthesize(request_generator())

for response in streaming_responses:
    print(f"Audio content size in bytes is: {len(response.audio_content)}")

Menjalankan permintaan sintesis ucapan online

Python

Untuk mempelajari cara menginstal dan menggunakan library klien untuk Text-to-Speech, lihat Library klien Text-to-Speech. Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi Text-to-Speech API untuk Python.

Untuk mengautentikasi ke Text-to-Speech, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

def synthesize_text():
    """Synthesizes speech from the input string of text."""
    from google.cloud import texttospeech

    text = "Hello there."
    client = texttospeech.TextToSpeechClient()

    input_text = texttospeech.SynthesisInput(text=text)

    # Note: the voice can also be specified by name.
    # Names of voices can be retrieved with client.list_voices().
    voice = texttospeech.VoiceSelectionParams(
        language_code="en-US",
        name="en-US-Chirp3-HD-Charon",
    )

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

    response = client.synthesize_speech(
        input=input_text,
        voice=voice,
        audio_config=audio_config,
    )

    # The response's audio_content is binary.
    with open("output.mp3", "wb") as out:
        out.write(response.audio_content)
        print('Audio content written to file "output.mp3"')

Tips pembuatan skrip dan perintah

Membuat audio yang menarik dan terdengar alami dari teks memerlukan pemahaman tentang nuansa bahasa lisan dan menerjemahkannya ke dalam bentuk skrip. Tips berikut akan membantu Anda membuat skrip yang terdengar autentik dan sesuai dengan nada bicara yang dipilih.

Memahami tujuan: Membuat ucapan yang terdengar alami

Tujuan utamanya adalah membuat suara yang disintesis terdengar semirip mungkin dengan suara alami manusia. Hal ini meliputi:

  • Meniru Kecepatan Alami: Seberapa cepat atau lambat seseorang berbicara.
  • Membuat Alur yang Mulus: Memastikan transisi yang lancar antara kalimat dan frasa.
  • Menambahkan Jeda yang Realistis: Memasukkan jeda untuk penekanan dan kejelasan.
  • Menangkap Nada Percakapan: Membuat audio terdengar seperti percakapan sungguhan.

Teknik utama untuk membuat ucapan yang terdengar alami

  • Tanda Baca untuk Kecepatan dan Alur

    • Titik (.): Menunjukkan berhenti penuh dan jeda yang lebih lama. Gunakan tanda titik untuk memisahkan pemikiran yang lengkap dan membuat batas kalimat yang jelas.
    • Koma (,): Menandakan jeda yang lebih pendek dalam kalimat. Gunakan koma untuk memisahkan klausa, item daftar, atau jeda singkat untuk mengatur napas.
    • Elipsis (...): Menunjukkan jeda yang lebih lama dan lebih disengaja. Ellipsis dapat menunjukkan pemikiran yang tertinggal, keraguan, atau jeda dramatis.
      • Contoh: "Lalu... hal tersebut terjadi."
    • Tanda hubung (-): Dapat digunakan untuk menunjukkan jeda singkat atau perubahan pikiran yang tiba-tiba.
      • Contoh: "Saya ingin mengatakannya - tetapi tidak bisa."
  • Menyertakan Jeda dan Ketidaklancaran

    • Jeda Strategis: Gunakan elipsis, koma, atau tanda hubung untuk membuat jeda di bagian saat pembicara manusia akan berhenti sejenak untuk menarik napas atau memberikan penekanan.
    • Ketidaklancaran (Emm dan Eeh): Meskipun beberapa model Text-to-Speech menangani ketidaklancaran secara otomatis, pastikan untuk memahami peran model ini. Fitur ini menambahkan tingkat keaslian dan membuat ucapan terdengar tidak seperti robot. Meskipun model ini menambahkan hal tersebut, sebaiknya ketahui di mana jeda tersebut biasanya diberikan dalam ucapan manusia agar memudahkan Anda memahami alur keseluruhan skrip.
  • Eksperimen dan Iterasi

    • Menyintesis ulang: Jangan takut untuk menyintesis ulang pesan yang sama dengan suara yang sama berkali-kali. Penyesuaian kecil pada tanda baca, spasi, atau pilihan kata dapat memengaruhi hasil akhir audio secara signifikan.
    • Mendengarkan dengan Cermat: Perhatikan dengan cermat kecepatan, alur, dan keseluruhan nada audio yang disintesis. Identifikasi bagian yang terdengar tidak wajar dan sesuaikan skrip Anda.
    • Mencoba Variasi Suara: Jika sistem mengizinkannya, coba gunakan suara yang berbeda untuk melihat suara mana yang paling sesuai dengan skrip dan nada yang Anda pilih.
  • Tips Pembuatan Skrip Praktis

    • Baca dengan Keras: Sebelum menyintesis, baca skrip Anda dengan keras. Hal ini akan membantu Anda mengidentifikasi frasa yang canggung, jeda yang tidak natural, dan bagian yang perlu disesuaikan.
    • Tulis dengan Gaya Percakapan: Gunakan pemendekan kata (misalnya, "takkan", "info") dan bahasa informal untuk membuat skrip terdengar lebih natural.
    • Pertimbangkan Konteks: Nada dan kecepatan pembacaan skrip harus sesuai dengan konteks audio. Presentasi formal akan memerlukan pendekatan yang berbeda dengan percakapan santai.
    • Uraikan Kalimat yang Kompleks: Kalimat yang panjang dan berbelit-belit dapat sulit ditangani oleh mesin TTS. Uraikan kalimat tersebut menjadi kalimat yang lebih pendek dan lebih mudah dikelola.
  • Contoh Perbaikan Skrip

    • Skrip Asli (Robotik): "Produk ini kini tersedia. Kami memiliki fitur baru. Ini sangat menarik."

    • Skrip yang Diperbaiki (Natural): "Produk ini kini tersedia... dan kami telah menambahkan beberapa fitur baru yang menarik. Ini, waduh, sangat menarik pastinya."

    • Skrip Asli (Robotik): "Ini adalah pesan konfirmasi otomatis. Reservasi Anda telah diproses. Detail berikut berkaitan dengan waktu inap Anda mendatang. Nomor reservasi adalah 12345. Nama tamu yang terdaftar adalah Anthony Vasquez. Tanggal kedatangan adalah 14 Maret. Tanggal keberangkatan adalah 16 Maret. Jenis kamar adalah Deluxe Suite. Jumlah tamu adalah 1 tamu. Waktu check-in adalah pukul 15.00. Waktu check-out adalah pukul 11.00. Perlu diketahui bahwa kebijakan pembatalan memerlukan pemberitahuan 48 jam sebelum kedatangan. Jika tidak ada informasi yang diberikan dalam jangka waktu ini, Anda akan dikenai biaya menginap satu malam. Fasilitas tambahan yang termasuk dalam reservasi Anda adalah: Wi-Fi gratis, akses ke pusat kebugaran, dan sarapan gratis. Jika ada pertanyaan, hubungi langsung hotel di nomor 855-555-6689. Terima kasih telah memilih hotel kami."

    • Skrip yang Diperbaiki (Natural): "Halo Anthony Vasquez! Kami sangat senang dapat membantu Anda mengonfirmasi pesanan kamar Anda. Anda sudah siap untuk menginap dari tanggal 14 hingga 16 Maret di Deluxe Suite kami yang menawan. Kamar ini diperuntukkan bagi 1 orang. Nomor konfirmasi Anda adalah 12345, jika Anda memerlukannya.

      Oh, sebagai pengingat singkat, check-in dilakukan pada pukul 15.00, dan check-out pada pukul 11.00.

      Sekarang, kami ingin memberitahukan kebijakan pembatalan kami… jika Anda ingin membatalkan pesanan, cukup beri tahu kami setidaknya 48 jam sebelum kedatangan Anda, oke? Jika tidak, Anda akan dikenai biaya untuk menginap satu malam.

      Untuk membuat waktu inap Anda lebih nyaman, Anda akan mendapatkan Wi-Fi gratis, akses ke pusat kebugaran kami, dan sarapan gratis yang lezat setiap pagi.

      Jika ada pertanyaan, jangan ragu untuk menghubungi kami di nomor 855-555-6689. Kami tidak sabar menyambut Anda di hotel kami."

    • Penjelasan Perubahan:

      • Elipsis (...) memberikan jeda untuk penekanan.
      • "dan kami telah" menggunakan kontraksi untuk nada bicara yang lebih ke arah percakapan.
      • "Ini, waduh, sangat menarik pastinya" menambahkan sedikit ketidaklancaran, dan penekanan.
      • Pengingat ramah "Oke?" melembutkan nada bicara.

    Dengan mengikuti panduan ini, Anda dapat membuat skrip text-to-audio yang terdengar alami, menarik, dan menyerupai manusia. Ingatlah bahwa latihan dan eksperimen adalah kunci untuk menguasai keterampilan ini.

Chirp 3: Dukungan SSML HD

Tag Speech Synthesis Markup Language (SSML) memberi Anda kontrol yang lebih besar terhadap cara teks dikonversi menjadi ucapan. Dengan menggunakan SSML, Anda dapat menentukan pengucapan, paragraf, serta mengontrol dan memengaruhi struktur keseluruhan teks input untuk menghasilkan audio yang terdengar lebih alami.

Elemen SSML yang didukung

Chirp 3: Suara HD mendukung subset tag SSML yang tersedia, yang dijelaskan di sini. Setiap tag yang tidak ada dalam daftar ini akan diabaikan selama proses sintesis.

  • <speak>: Elemen root teks SSML.
  • <say-as>: Memungkinkan Anda memberikan petunjuk tentang cara mengucapkan teks yang ada di dalamnya. Perhatikan bahwa interpret-as="expletive" atau interpret-as="bleep" tidak didukung.
  • <p>: Mewakili paragraf.
  • <s>: Mewakili kalimat.
  • <phoneme>: Memberikan pengucapan fonetik untuk teks yang ada di dalamnya.
  • <sub>: Mengucapkan nilai alias, bukan teks yang ada dalam elemen.

Contoh SynthesizeSpeechRequest menggunakan SSML:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "ssml": "<speak>Here are <say-as interpret-as=\"characters\">SSML</say-as> samples. I can also substitute phrases, like the <sub alias=\"World Wide Web Consortium\">W3C</sub>. Hi,<phoneme alphabet=\"ipa\" ph=\"ˌmænɪˈtoʊbə\">manitoba<phoneme>! Finally, I can speak a paragraph with two sentences. <p><s>This is sentence one.</s><s>This is sentence two.</s></p></speak>",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Chirp 3: Kontrol suara HD

Fitur kontrol suara dikhususkan untuk sintesis suara HD. Anda dapat mengelola kontrol kecepatan, kontrol jeda, dan pengucapan kustom melalui opsi Chirp 3: Kontrol suara HD.

Kontrol kecepatan

Anda dapat menyesuaikan kecepatan audio yang dihasilkan menggunakan parameter kecepatan. Dengan parameter kecepatan, Anda dapat memperlambat atau mempercepat ucapan, dengan nilai mulai dari 0,25x (sangat lambat) hingga 2x (sangat cepat). Untuk mengatur kecepatan, gunakan parameter speaking_rate dalam permintaan Anda. Pilih nilai antara 0,25 hingga 2,0. Nilai di bawah 1,0 akan memperlambat ucapan, dan nilai di atas 1,0 akan mempercepatnya. Nilai 1,0 menunjukkan kecepatan yang tidak disesuaikan.

Contoh SynthesizeSpeechRequest menggunakan kontrol kecepatan:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
    "speaking_rate": 2.0,
  },
  "input": {
    "text": "Once upon a time, there was a cute cat. He was so cute that he got lots of treats.",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Contoh StreamingSynthesizeConfig menggunakan kontrol kecepatan:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
    "speaking_rate": 2.0,
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Contoh audio kontrol kecepatan:

Kecepatan bicara Output
0,5
1,0
2,0

Kontrol jeda

Anda dapat menyisipkan jeda ke dalam ucapan yang dihasilkan AI dengan menyematkan tag khusus langsung ke dalam teks menggunakan kolom input markup. Perhatikan bahwa tag jeda hanya akan berfungsi di kolom markup, dan bukan di kolom text.

Tag ini memberi sinyal pada AI untuk membuat jeda, tetapi durasi tepat dari jeda ini tidak tetap. AI menyesuaikan durasi berdasarkan konteks, seperti halnya ucapan alami manusia yang bervariasi menurut pembicara, lokasi, dan struktur kalimat. Tag jeda yang tersedia adalah [pause short], [pause long], dan [pause]. Untuk metode alternatif dalam membuat jeda tanpa menggunakan tag markup, lihat panduan pembuatan perintah dan penulisan kami.

Model AI terkadang mengabaikan tag jeda, terutama jika ditempatkan di posisi yang tidak wajar dalam teks. Anda dapat menggabungkan beberapa tag jeda untuk jeda yang lebih lama, tetapi penggunaan yang berlebihan dapat menyebabkan masalah.

Contoh SynthesizeSpeechRequest menggunakan kontrol jeda:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Let me take a look, [pause long] yes, I see it.",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Contoh StreamingSynthesisInput menggunakan kontrol jeda:

{
  "markup": "Let me take a look, [pause long] yes, I see it.",
}

Contoh audio kontrol jeda:

Input markup Output
"Coba saya lihat, ya, saya melihatnya."
"Coba saya lihat, [jeda panjang] ya, saya melihatnya."

Pengucapan kustom

Anda dapat menentukan pengucapan kustom menggunakan representasi fonetik IPA atau X-SAMPA untuk kata-kata dalam teks input. Pastikan untuk menggunakan fonem yang sesuai dengan bahasa agar rendering akurat. Anda dapat mempelajari lebih lanjut penggantian fonem di dokumentasi fonem kami.

Contoh SynthesizeSpeechRequest menggunakan pengucapan kustom:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "There is a dog in the boat",
    "custom_pronunciations": {
      "phrase": "dog",
      "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
      "pronunciation": "\"k{t",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

Contoh StreamingSynthesizeConfig menggunakan pengucapan kustom:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
  "custom_pronunciations": {
    "phrase": "dog",
    "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
    "pronunciation": "\"k{t",
  }
}

Contoh audio pengucapan kustom:

Pengucapan kustom yang diterapkan Output
Tidak ada
"dog" diucapkan sebagai ""k{t"

Frasa yang diganti dapat diformat dengan cara apa pun, termasuk menggunakan simbol. Misalnya, jika ada potensi ambiguitas berbasis konteks dalam pencocokan frasa (yang umum terjadi dalam bahasa seperti China dan Jepang) atau kalimat yang satu kata di dalamnya dapat diucapkan dengan cara yang berbeda, frasa tersebut dapat diformat untuk menghilangkan ambiguitas. Misalnya, untuk menghindari penggantian kata read yang tidak disengaja di input, frasa "read" dapat diformat sebagai "read1", "[read]", atau "(read)" untuk teks input dan frasa yang diganti.

Lihat contoh penerapan pengucapan kustom pada kalimat yang berisi kata read yang diucapkan dengan dua cara berbeda:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "I read1 a book, and I will now read2 it to you.",
    "custom_pronunciations": {
      "phrase": "read1",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "rɛd",
    }
    "custom_pronunciations": {
      "phrase": "read2",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
Pengucapan kustom yang diterapkan Output
"read" diganti dengan dua cara

Selain itu, pengucapan kustom dapat digunakan dengan input markup, yang juga memungkinkan penggunaan tag jeda:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Did you [pause long] read this book?",
    "custom_pronunciations": {
      "phrase": "read",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
Pengucapan kustom yang digunakan Output
Mengganti pengucapan dengan tag jeda

Ketersediaan bahasa untuk kontrol suara

  • Kontrol kecepatan tersedia di semua lokalitas.

  • Kontrol jeda tersedia di semua lokalitas.

  • Pengucapan kustom tersedia di semua lokalitas kecuali: bn-in, gu-in, nl-be, sw-ke, th-th, uk-ua, ur-in, dan vi-vn.

FAQ

Pertanyaan umum beserta jawabannya:

Bagaimana cara mengontrol kecepatan dan alur untuk meningkatkan kualitas output ucapan?

Anda dapat memanfaatkan panduan pembuatan perintah dan penulisan kami serta memperbaiki kualitas perintah teks untuk meningkatkan kualitas output ucapan Anda.

Bagaimana cara mengakses suara dalam bahasa yang didukung?

Nama suara mengikuti format tertentu, sehingga memungkinkan penggunaan di seluruh bahasa yang didukung dengan menentukan suara secara unik. Formatnya mengikuti \<locale\>-\<model\>-\<voice\>. Misalnya, untuk menggunakan suara Kore untuk bahasa Inggris (Amerika Serikat) menggunakan model Chirp 3: Suara HD, Anda akan menentukannya sebagai en-US-Chirp3-HD-Kore.