Mengonfigurasi bahasa dan suara

Dokumen ini menjelaskan cara mengonfigurasi respons ucapan yang disintesis dan deteksi aktivitas suara di Gemini Live API. Anda dapat mengonfigurasi respons dalam berbagai suara dan bahasa HD, serta mengonfigurasi setelan deteksi aktivitas suara untuk memungkinkan pengguna menginterupsi model.

Menyetel bahasa dan suara

Model audio live seperti gemini-3.8-live dapat beralih antarbahasa secara alami selama percakapan. Anda juga dapat membatasi bahasa yang digunakan untuk berbicara dengan menentukannya dalam petunjuk sistem.

Suara dikonfigurasi di kolom voice_name untuk semua model.

Contoh kode berikut menunjukkan cara mengonfigurasi bahasa dan suara.

from google.genai.types import LiveConnectConfig, SpeechConfig, VoiceConfig, PrebuiltVoiceConfig

config = LiveConnectConfig(
  response_modalities=["AUDIO"],
  speech_config=SpeechConfig(
    voice_config=VoiceConfig(
        prebuilt_voice_config=PrebuiltVoiceConfig(
            voice_name=voice_name,
        )
    ),
    language_code="en-US",
  ),
)

Gaya dan aksen suara panduan

Anda dapat memandu gaya bahasa dan aksen suara menggunakan petunjuk sistem, dan Gemini Live API akan merespons dengan suara yang Anda perintahkan. Misalnya, "Bahasa Inggris dengan suara yang positif dan bersemangat dengan aksen Prancis."

Suara yang didukung

Gemini Live API mendukung 30 opsi suara berikut di kolom voice_name:

Zephyr -- Bright
Kore -- Firm
Orus -- Firm
Autonoe -- Bright
Umbriel -- Easy-going
Erinome -- Clear
Laomedeia -- Upbeat
Schedar -- Even
Achird -- Friendly
Sadachbia -- Lively
Puck -- Upbeat
Fenrir -- Excitable
Aoede -- Breezy
Enceladus -- Breathy
Algieba -- Smooth
Algenib -- Gravelly
Achernar -- Soft
Gacrux -- Mature
Zubenelgenubi -- Casual
Sadaltager -- Knowledgeable
Charon -- Informatif
Leda -- Muda
Callirrhoe -- Santai
Iapetus -- Jelas
Despina -- Halus
Rasalgethi -- Informatif
Alnilam -- Tegas
Pulcherrima -- Maju
Vindemiatrix -- Lembut
Sulafat -- Hangat

Bahasa yang didukung

Gemini Live API mendukung bahasa berikut:

Bahasa Kode BCP-47
Arab (Mesir) ar-EG
Bengali (Bangladesh) bn-BD
Belanda (Belanda) nl-NL
Inggris (India) Paket en-IN & hi-IN
Inggris (AS) en-US
Prancis (Prancis) fr-FR
Jerman (Jerman) de-DE
Hindi (India) hi-IN
Indonesia (Indonesia) id-ID
Italia (Italia) it-IT
Jepang (Jepang) ja-JP
Korea (Korea) ko-KR
Marathi (India) mr-IN
Polandia (Polandia) pl-PL
Portugis (Brasil) pt-BR
Rumania (Rumania) ro-RO
Rusia (Rusia) ru-RU
Spanyol (AS) es-US
Tamil (India) ta-IN
Telugu (India) te-IN
Thai (Thailand) th-TH
Turkiye (Turkiye) tr-TR
Ukraina (Ukraina) uk-UA
Vietnam (Vietnam) vi-VN

Menggunakan suara kustom

Daripada suara bawaan, Anda dapat memberikan rekaman singkat suara yang direplikasi oleh Gemini Live API dalam respons ucapan yang disintesis. Suara kustom dikonfigurasi per sesi di kolom replicated_voice_config dari voice_config. Anda tidak perlu mengupload atau melatih apa pun sebelumnya.

Persyaratan contoh suara

Contoh suara harus memenuhi spesifikasi berikut:

  • Format audio: Audio PCM s16le dengan kecepatan sampel variabel, misalnya audio/pcm;rate=24000

  • Durasi: 10 hingga 20 detik.

Merekam suara kustom

Saat merekam sampel suara, sebaiknya ikuti tips berikut untuk mendapatkan kualitas suara terbaik:

  1. Berbicara secara alami: Jangan menggunakan "suara radio" atau melafalkan kata secara berlebihan kecuali jika Anda ingin avatar terdengar seperti penyiar. Baca skrip persis seperti Anda berbicara dengan teman.

  2. Batasi suara bising di latar belakang: Batasi suara bising di latar belakang sebanyak mungkin: matikan kipas angin, matikan AC, dan tutup semua jendela yang terbuka.

  3. Tersenyum sedikit: Tersenyum saat merekam cenderung membuat Anda menambahkan kehangatan ke rekaman, dan kehangatan tersebut kemudian ditambahkan ke suara yang direplikasi.

Sebaiknya gunakan salah satu skrip berikut untuk merekam suara kustom:

  • Standar fonetik, terbaik untuk kualitas keseluruhan: "Saat sinar matahari mengenai tetesan hujan di udara, tetesan hujan tersebut bertindak seperti prisma dan membentuk pelangi. Pelangi adalah pembagian cahaya putih menjadi banyak warna indah. Jembatan ini berbentuk lengkungan bulat panjang."

  • Storyteller, paling cocok untuk merekam emosi dan rentang dinamis: "Saya tidak bisa memercayai mata saya saat membuka buku tua berdebu itu. Sebuah kunci emas kecil berbunyi di lantai kayu. 'Dari mana ini berasal?' Aku berbisik pada diriku sendiri, merasakan sensasi kegembiraan yang tiba-tiba. Semuanya akan berubah."

Menyetel suara kustom

Konfigurasi suara kustom dalam payload setup awal yang Anda kirim melalui koneksi WebSocket:

import base64
import json
import websockets

# Load custom voice audio (PCM s16le, e.g., 24kHz)
with open("/path/to/your/audio_sample.wav", "rb") as f:
    wav_b64 = base64.b64encode(f.read()).decode("utf-8")

# Setup generation config with custom voice
GENERATION_CONFIG = {
    "response_modalities": ["AUDIO"],
    "speech_config": {
        "voice_config": {
            "replicated_voice_config": {
                "voice_sample_audio": "VOICE_SAMPLE",
                "mime_type": "VOICE_MIME_TYPEaudio/pcm;rate=24000",
            }
        }
    },
}

# Session setup message
SETUP_MESSAGE = {
    "setup": {
        "model": "gemini-3.8-live",
        "generation_config": GENERATION_CONFIG,
        "system_instruction": {
            "parts": [{"text": "Your system instruction here"}]
        },
        "input_audio_transcription": {},
        "output_audio_transcription": {},
    }
}

Ganti kode berikut:

  • VOICE_SAMPLE: string audio PCM berenkode base64 (sampel 10-20 detik ).

  • VOICE_MIME_TYPE: Jenis MIME untuk audio PCM, misalnya "audio/pcm;rate=24000".

Anda dapat menyandingkan suara kustom dengan avatar bawaan atau avatar kustom. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi avatar live.

Mengonfigurasi deteksi aktivitas suara

Deteksi aktivitas suara (VAD) memungkinkan model mengenali saat seseorang sedang berbicara. Hal ini penting untuk menciptakan percakapan yang alami, karena memungkinkan pengguna menyela model kapan saja.

Saat VAD mendeteksi gangguan, pembuatan yang sedang berlangsung akan dibatalkan dan dihapus. Hanya informasi yang sudah dikirim ke klien yang dipertahankan dalam histori sesi. Kemudian, server mengirimkan pesan BidiGenerateContentServerContent untuk melaporkan gangguan. Server kemudian membatalkan panggilan fungsi yang tertunda dan mengirim pesan BidiGenerateContentServerContent dengan ID panggilan yang dibatalkan.

Python

config = {
    "response_modalities": ["audio"],
    "realtime_input_config": {
        "automatic_activity_detection": {
            "disabled": False, # default
            "start_of_speech_sensitivity": "low",
            "end_of_speech_sensitivity": "low",
            "prefix_padding_ms": 20,
            "silence_duration_ms": 100,
        }
    }
}
      

Langkah berikutnya