Suara kustom instan di Text-to-Speech memungkinkan pengguna membuat model suara yang dipersonalisasi dengan melatih model menggunakan rekaman audio berkualitas tinggi milik mereka sendiri. Dengan fitur ini, Anda dapat membuat suara pribadi dengan cepat, yang kemudian dapat digunakan untuk menyintesis audio menggunakan Cloud TTS API, yang mendukung streaming dan teks panjang.
![]() |
![]() |
Ketersediaan bahasa
Suara kustom instan didukung dalam bahasa berikut:
Bahasa | Kode BCP-47 | Pernyataan Izin |
---|---|---|
Arab (XA) | ar-XA | .أنا مالك هذا الصوت وأوافق على أن تستخدم Google هذا الصوت لإنشاء نموذج صوتي اصطناعي |
Bengali (India) | bn-IN | আমি এই ভয়েসের মালিক এবং আমি একটি সিন্থেটিক ভয়েস মডেল তৈরি করতে এই ভয়েস ব্যবহার করে Google-এর সাথে সম্মতি দিচ্ছি। |
China (China) | cmn-CN | 我是此声音的拥有者并授权谷歌使用此声音创建语音合成模型 |
Inggris (Australia) | en-AU | Saya adalah pemilik suara ini dan saya mengizinkan Google menggunakan suara ini untuk membuat model suara sintetis. |
Inggris (India) | en-IN | Saya adalah pemilik suara ini dan saya mengizinkan Google menggunakan suara ini untuk membuat model suara sintetis. |
Inggris (Inggris Raya) | en-GB | Saya adalah pemilik suara ini dan saya mengizinkan Google menggunakan suara ini untuk membuat model suara sintetis. |
Inggris (AS) | en-US | Saya adalah pemilik suara ini dan saya mengizinkan Google menggunakan suara ini untuk membuat model suara sintetis. |
Prancis (Kanada) | fr-CA | Je suis le propriétaire de cette voix et j'autorise Google à utiliser cette voix pour créer un modèle de voix synthétique. |
Prancis (Prancis) | fr-FR | Je suis le propriétaire de cette voix et j'autorise Google à utiliser cette voix pour créer un modèle de voix synthétique. |
Jerman (Jerman) | de-DE | Ich bin der Eigentümer dieser Stimme und bin damit einverstanden, dass Google diese Stimme zur Erstellung eines synthetischen Stimmmodells verwendet. |
Gujarati (India) | gu-IN | હું આ વોઈસનો માલિક છું અને સિન્થેટિક વોઈસ મોડલ બનાવવા માટે આ વોઈસનો ઉપયોગ કરીને google ને હું સંમતિ આપું છું |
Hindi (India) | hi-IN | मैं इस आवाज का मालिक हूं और मैं सिंथेटिक आवाज मॉडल बनाने के लिए Google को इस आवाज का उपयोग करने की सहमति देता हूं |
Indonesia (Indonesia) | id-ID | Saya pemilik suara ini dan saya menyetujui Google menggunakan suara ini untuk membuat model suara sintetis. |
Italia (Italia) | it-IT | Sono il proprietario di questa voce e acconsento che Google la utilizzi per creare un modello di voce sintetica. |
Jepang (Jepang) | ja-JP | Saya adalah pemilik audio ini dan saya mengizinkan Google menggunakan audio ini untuk membuat model sintesis ucapan. |
Kannada (India) | kn-IN | ನಾನು ಈ ಧ್ವನಿಯ ಮಾಲಿಕ ಮತ್ತು ಸಂಶ್ಲೇಷಿತ ಧ್ವನಿ ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಈ ಧ್ವನಿಯನ್ನು ಬಳಸಿಕೊಂಡುಗೂಗಲ್ ಗೆ ನಾನು ಸಮ್ಮತಿಸುತ್ತೇನೆ. |
Korea (Korea) | ko-KR | 나는 이 음성의 소유자이며 구글이 이 음성을 사용하여 음성 합성 모델을 생성할 것을 허용합니다. |
Malayalam (India) | ml-IN | ഈ ശബ്ദത്തിന്റെ ഉടമ ഞാനാണ്, ഒരു സിന്തറ്റിക് വോയ്സ് മോഡൽ സൃഷ്ടിക്കാൻ ഈ ശബ്ദം ഉപയോഗിക്കുന്നതിന് ഞാൻ Google-ന് സമ്മതം നൽകുന്നു." |
Marathi (India) | mr-IN | मी या आवाजाचा मालक आहे आणि सिंथेटिक व्हॉइस मॉडेल तयार करण्यासाठी हा आवाज वापरण्यासाठी मी Google ला संमती देतो |
Belanda (Belanda) | nl-NL | Ik ben de eigenaar van deze stem en ik geef Google toestemming om deze stem te gebruiken om een synthetisch stemmodel te maken. |
Polandia (Polandia) | pl-PL | Jestem właścicielem tego głosu i wyrażam zgodę na wykorzystanie go przez Google w celu utworzenia syntetycznego modelu głosu. |
Portugis (Brasil) | pt-BR | Eu sou o proprietário desta voz e autorizo o Google a usá-la para criar um modelo de voz sintética. |
Rusia (Rusia) | ru-RU | Я являюсь владельцем этого голоса и даю согласие Google на использование этого голоса для создания модели синтетического голоса. |
Tamil (India) | ta-IN | நான் இந்த குரலின் உரிமையாளர் மற்றும் செயற்கை குரல் மாதிரியை உருவாக்க இந்த குரலை பயன்படுத்த குகல்க்கு நான் ஒப்புக்கொள்கிறேன். |
Telugu (India) | te-IN | నేను ఈ వాయిస్ యజమానిని మరియు సింతటిక్ వాయిస్ మోడల్ ని రూపొందించడానికి ఈ వాయిస్ ని ఉపయోగించడానికి googleకి నేను సమ్మతిస్తున్నాను. |
Thai (Thailand) | th-TH | Saya adalah pemilik suara ini dan saya mengizinkan Google menggunakan suara ini untuk membuat model suara sintetis |
Turki (Turki) | tr-TR | Bu sesin sahibi benim ve Google'ın bu sesi kullanarak sentetik bir ses modeli oluşturmasına izin veriyorum. |
Vietnam (Vietnam) | vi-VN | Tôi là chủ sở hữu giọng nói này và tôi đồng ý cho Google sử dụng giọng nói này để tạo mô hình giọng nói tổng hợp. |
Spanyol (Spanyol) | es-ES | Soy el propietario de esta voz y doy mi consentimiento para que Google la utilice para crear un modelo de voz sintética. |
Spanyol (AS) | es-US | Soy el propietario de esta voz y doy mi consentimiento para que Google la utilice para crear un modelo de voz sintética. |
Ketersediaan Regional
Suara kustom instan tersedia di wilayah berikut: Google Cloud
Google Cloud Zona | Metode yang Didukung | Kesiapan Peluncuran |
---|---|---|
global |
Pembuatan, Sintesis | Pratinjau Pribadi |
us |
Sintesis | Pratinjau Pribadi |
eu |
Sintesis | Pratinjau Pribadi |
asia-southeast1 |
Sintesis | Pratinjau Pribadi |
Format output yang didukung
Format respons default adalah LINEAR16, tetapi format lain yang didukung mencakup:
Metode API | Format |
---|---|
streaming |
ALAW, MULAW, OGG_OPUS, dan PCM |
batch |
ALAW, MULAW, MP3, OGG_OPUS, dan PCM |
Dukungan dan batasan fitur
Fitur | Dukungan | Deskripsi |
---|---|---|
SSML | Tidak | Tag SSML untuk mempersonalisasi audio sintetis |
Perintah Berbasis Teks | Eksperimental | Gunakan tanda baca, jeda, dan ketidaklancaran untuk menambahkan alur dan kecepatan yang alami pada Text-to-Speech. |
Stempel waktu | Tidak | Stempel waktu tingkat kata |
Menjeda Tag | Tidak | Memperkenalkan jeda sesuai permintaan pada audio yang disintesis |
Kontrol Kecepatan | Tidak | Sesuaikan kecepatan audio yang disintesis, dari kecepatan 0,25x hingga 2x. |
Kontrol Pengucapan | Tidak | Pengucapan kustom kata atau frasa menggunakan encoding fonetik IPA atau X-SAMPA |
Menggunakan Chirp 3: suara kustom instan
Bagian berikut menjelaskan cara menggunakan Chirp 3: Kemampuan suara kustom instan di Text-to-Speech API.
Merekam izin dan audio referensi
Merekam pernyataan izin: Untuk mematuhi pedoman hukum dan etika untuk Suara kustom instan, rekam pernyataan izin yang diperlukan sebagai file audio satu saluran dalam bahasa yang sesuai dan dalam encoding audio yang didukung, dengan durasi hingga 10 detik. (Saya adalah pemilik suara ini, dan saya mengizinkan Google menggunakan suara ini untuk membuat model suara sintetis.)
Merekam audio referensi: Gunakan mikrofon komputer Anda untuk merekam audio hingga 10 detik sebagai file audio satu saluran dalam encoding audio yang didukung. Tidak boleh ada suara bising di latar belakang selama perekaman. Rekam audio persetujuan dan audio rujukan di lingkungan yang sama.
Menyimpan file audio: Simpan file audio yang direkam di lokasi Cloud Storage yang ditentukan.
Pedoman untuk menghasilkan audio referensi berkualitas tinggi
- Audio harus sedekat mungkin dengan 10 detik, dengan derau minimal. Namun, audio harus menyertakan jeda dan kecepatan yang alami, bukan memasukkan terlalu banyak kata dalam 10 detik tersebut.
- Model mereplikasi kualitas mikrofon, jadi jika rekaman terdengar tidak jelas, outputnya juga akan terdengar tidak jelas.
- Suara harus dinamis dan sedikit lebih ekspresif daripada suara yang dihasilkan pada output akhir. Suara juga harus memiliki irama yang Anda inginkan untuk suara yang dikloning. Misalnya, jika audio referensi tidak memiliki jeda atau istirahat alami, suara yang dikloning tidak akan bagus dalam menjeda.
- Perintah yang baik lebih bersemangat dan penuh energi daripada monoton dan membosankan, sehingga model akan mengambil isyarat untuk mereplikasi energi ini.
Encoding audio yang didukung
Encoding audio input berikut didukung:
LINEAR16
PCM
MP3
M4A
Membuat suara kustom instan menggunakan REST API
Suara kustom instan berbentuk kunci kloning suara, yang merupakan representasi string teks dari data suara Anda.
Hal penting yang perlu diperhatikan
Berikut beberapa hal penting yang perlu diketahui tentang cara membuat suara kustom:
- Tidak ada batasan jumlah kunci kloning suara yang dapat Anda buat, karena kunci kloning suara disimpan di sisi klien dan diberikan per permintaan.
- Kunci kloning suara yang sama dapat digunakan oleh beberapa klien atau perangkat secara bersamaan.
- Anda dapat membuat 10 kunci kloning suara per menit per project. Untuk mengetahui informasi selengkapnya, lihat Batas permintaan.
- Anda tidak dapat menggunakan skrip izin kustom sebagai pengganti skrip izin default. Anda harus menggunakan skrip izin yang disediakan di Ketersediaan Bahasa.
import requests, os, json
def create_instant_custom_voice_key(
access_token, project_id, reference_audio_bytes, consent_audio_bytes
):
url = "https://texttospeech.googleapis.com/v1beta1/voices:generateVoiceCloningKey"
request_body = {
"reference_audio": {
# Supported audio_encoding values are LINEAR16, PCM, MP3, and M4A.
"audio_config": {"audio_encoding": "LINEAR16"},
"content": reference_audio_bytes,
},
"voice_talent_consent": {
# Supported audio_encoding values are LINEAR16, PCM, MP3, and M4A.
"audio_config": {"audio_encoding": "LINEAR16"},
"content": consent_audio_bytes,
},
"consent_script": "I am the owner of this voice and I consent to Google using this voice to create a synthetic voice model.",
"language_code": "en-US",
}
try:
headers = {
"Authorization": f"Bearer {access_token}",
"x-goog-user-project": project_id,
"Content-Type": "application/json; charset=utf-8",
}
response = requests.post(url, headers=headers, json=request_body)
response.raise_for_status()
response_json = response.json()
return response_json.get("voiceCloningKey")
except requests.exceptions.RequestException as e:
print(f"Error making API request: {e}")
except json.JSONDecodeError as e:
print(f"Error decoding JSON response: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
Melakukan sintesis dengan suara kustom instan menggunakan REST API
Gunakan kunci kloning suara untuk melakukan sintesis audio menggunakan REST API.
import requests, os, json, base64
from IPython.display import Audio, display
def synthesize_text_with_cloned_voice(access_token, project_id, voice_key, text):
url = "https://texttospeech.googleapis.com/v1beta1/text:synthesize"
request_body = {
"input": {
"text": text
},
"voice": {
"language_code": "en-US",
"voice_clone": {
"voice_cloning_key": voice_key,
}
},
"audioConfig": {
# Supported audio_encoding values are LINEAR16, PCM, MP3, and M4A.
"audioEncoding": "LINEAR16",
}
}
try:
headers = {
"Authorization": f"Bearer {access_token}",
"x-goog-user-project": project_id,
"Content-Type": "application/json; charset=utf-8"
}
response = requests.post(url, headers=headers, json=request_body)
response.raise_for_status()
response_json = response.json()
audio_content = response_json.get("audioContent")
if audio_content:
display(Audio(base64.b64decode(audio_content), rate=24000))
else:
print("Error: Audio content not found in the response.")
print(response_json)
except requests.exceptions.RequestException as e:
print(f"Error making API request: {e}")
except json.JSONDecodeError as e:
print(f"Error decoding JSON response: {e}")
except Exception as e:
print(f"An unexpected error occurred: {e}")
Menyintesis dengan suara kustom instan menggunakan library klien Python
Contoh ini menggunakan library klien Python untuk melakukan sintesis suara kustom instan, menggunakan kunci kloning suara yang telah disimpan ke file, voice_cloning_key.txt
. Untuk membuat kunci kloning suara, lihat
Membuat suara kustom instan menggunakan REST API.
from google.cloud import texttospeech
from google.cloud.texttospeech_v1beta1.services.text_to_speech import client
def perform_voice_cloning(
voice_cloning_key: str,
transcript: str,
language_code: str,
synthesis_output_path: str,
tts_client: client.TextToSpeechClient,
) -> None:
"""Perform voice cloning and write output to a file.
Args:
voice_cloning_key: The voice cloning key.
transcript: The transcript to synthesize.
language_code: The language code.
synthesis_output_path: The synthesis audio output path.
tts_client: The TTS client to use.
"""
voice_clone_params = texttospeech.VoiceCloneParams(
voice_cloning_key=voice_cloning_key
)
voice = texttospeech.VoiceSelectionParams(
language_code=language_code, voice_clone=voice_clone_params
)
request = texttospeech.SynthesizeSpeechRequest(
input=texttospeech.SynthesisInput(text=transcript),
voice=voice,
audio_config=texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.LINEAR16,
sample_rate_hertz=24000,
),
)
response = tts_client.synthesize_speech(request)
with open(synthesis_output_path, 'wb') as out:
out.write(response.audio_content)
print(f'Audio content written to file {synthesis_output_path}.')
if __name__ == '__main__':
client = texttospeech.TextToSpeechClient()
with open('voice_cloning_key.txt', 'r') as f:
key = f.read()
perform_voice_cloning(
voice_cloning_key=key,
transcript='Hello world!',
language_code='en-US',
synthesis_output_path='/tmp/output.wav',
tts_client=client,
)
Menyintesis streaming dengan suara kustom instan menggunakan library klien Python
Contoh ini menggunakan library klien Python untuk melakukan sintesis streaming suara kustom instan, menggunakan kunci kloning suara yang disimpan ke voice_cloning_key.txt
.
Untuk membuat kunci kloning suara, lihat
Membuat suara kustom instan menggunakan REST API.
import io
import wave
from google.cloud import texttospeech
from google.cloud.texttospeech_v1beta1.services.text_to_speech import client
def perform_voice_cloning_with_simulated_streaming(
voice_cloning_key: str,
simulated_streamed_text: list[str],
language_code: str,
synthesis_output_path: str,
tts_client: client.TextToSpeechClient,
) -> None:
"""Perform voice cloning for a given reference audio, voice talent consent, and consent script.
Args:
voice_cloning_key: The voice cloning key.
simulated_streamed_text: The list of transcripts to synthesize, where each
item represents a chunk of streamed text. This is used to simulate
streamed text input and is not meant to be representative of real-world
streaming usage.
language_code: The language code.
synthesis_output_path: The path to write the synthesis audio output to.
tts_client: The TTS client to use.
"""
voice_clone_params = texttospeech.VoiceCloneParams(
voice_cloning_key=voice_cloning_key
)
streaming_config = texttospeech.StreamingSynthesizeConfig(
voice=texttospeech.VoiceSelectionParams(
language_code=language_code, voice_clone=voice_clone_params
),
streaming_audio_config=texttospeech.StreamingAudioConfig(
audio_encoding=texttospeech.AudioEncoding.PCM,
sample_rate_hertz=24000,
),
)
config_request = texttospeech.StreamingSynthesizeRequest(
streaming_config=streaming_config
)
# Request generator. Consider using Gemini or another LLM with output
# streaming as a generator.
def request_generator():
yield config_request
for text in simulated_streamed_text:
yield texttospeech.StreamingSynthesizeRequest(
input=texttospeech.StreamingSynthesisInput(text=text)
)
streaming_responses = tts_client.streaming_synthesize(request_generator())
audio_buffer = io.BytesIO()
for response in streaming_responses:
print(f'Audio content size in bytes is: {len(response.audio_content)}')
audio_buffer.write(response.audio_content)
# Write collected audio outputs to a WAV file.
with wave.open(synthesis_output_path, 'wb') as wav_file:
wav_file.setnchannels(1)
wav_file.setsampwidth(2)
wav_file.setframerate(24000)
wav_file.writeframes(audio_buffer.getvalue())
print(f'Audio content written to file {synthesis_output_path}.')
if __name__ == '__main__':
client = texttospeech.TextToSpeechClient()
with open('voice_cloning_key.txt', 'r') as f:
key = f.read()
perform_voice_cloning_with_simulated_streaming(
voice_cloning_key=key,
simulated_streamed_text=[
'Hello world!',
'This is the second text chunk.',
'This simulates streaming text for synthesis.',
],
language_code='en-US',
synthesis_output_path='streaming_output.wav',
tts_client=client,
)
Menggunakan kontrol suara HD Chirp 3
Suara kustom instan mendukung kontrol kecepatan, kontrol jeda, dan fitur pengucapan kustom yang sama dengan yang didukung Chirp 3: Suara HD. Untuk mengetahui informasi selengkapnya tentang kontrol suara HD Chirp 3, lihat Chirp 3: Kontrol suara HD.
Ketiga fitur dapat diaktifkan untuk suara kustom instan dengan menyesuaikan
SynthesizeSpeechRequest
atau StreamingSynthesizeConfig
dengan cara yang sama seperti untuk
Suara kustom instan.
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
,th-TH
, danvi-VN
.
Mengaktifkan transfer multibahasa
Suara kustom instan mendukung transfer multibahasa untuk
pasangan lokalitas tertentu. Artinya, jika diberi kunci kloning suara yang dibuat dengan kode bahasa tertentu seperti en-US
, kunci tersebut dapat digunakan untuk menyintesis bahasa dalam bahasa lain seperti es-ES
.
Contoh kode ini menunjukkan konfigurasi SynthesizeRequest
untuk menyintesis es-ES
menggunakan
kunci kloning suara en-US
:
voice_clone_params = texttospeech.VoiceCloneParams(
voice_cloning_key=en_us_voice_cloning_key
)
request = texttospeech.SynthesizeSpeechRequest(
input=texttospeech.SynthesisInput(text=transcript),
voice=texttospeech.VoiceSelectionParams(
language_code='es-ES', voice_clone=voice_clone_params
),
audio_config=texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.LINEAR16,
sample_rate_hertz=24000,
),
)
Contoh konfigurasi StreamingSynthesizeConfig
untuk menyintesis es-ES
menggunakan
kunci kloning suara en-US
:
voice_clone_params = texttospeech.VoiceCloneParams(
voice_cloning_key=en_us_voice_cloning_key
)
streaming_config = texttospeech.StreamingSynthesizeConfig(
voice=texttospeech.VoiceSelectionParams(
language_code='es-ES', voice_clone=voice_clone_params
),
streaming_audio_config=texttospeech.StreamingAudioConfig(
audio_encoding=texttospeech.AudioEncoding.PCM,
sample_rate_hertz=24000,
),
)
Ketersediaan bahasa untuk transfer multibahasa
Suara kustom instan mendukung transfer bahasa berikut:
Kunci kloning suara dengan lokalitas
en-US
dapat menyintesis output dalam lokalitas berikut:de-DE
es-US
es-ES
fr-CA
fr-FR
pt-BR