![]() |
![]() |
Mit Instant-Custom Voice in Text-to-Speech können Nutzer personalisierte Sprachmodelle erstellen, indem sie ein Modell mit ihren hochwertigen Audioaufnahmen trainieren. Mit Instant-Custom Voice lassen sich schnell personalisierte Stimmen generieren, die dann mit der Cloud Text-to-Speech API zur Audiosynthese verwendet werden können. Dabei werden sowohl Streaming als auch lange Texte unterstützt.
Wenn Sie Instant-Custom Voice in der Google Cloud -Konsole ausprobieren möchten, sehen Sie sich Media Studio an.
Sofortige benutzerdefinierte Stimme in Vertex AI Studio ausprobieren
Verfügbare Sprachen
Instant-Custom Voice wird in den folgenden Sprachen unterstützt:
Sprache | BCP-47-Code | Einwilligungserklärung |
---|---|---|
Arabisch (XA) | ar-XA | .أنا مالك هذا الصوت وأوافق على أن تستخدم Google هذا الصوت لإنشاء نموذج صوتي اصطناعي |
Bengalisch (Indien) | bn-IN | আমি এই ভয়েসের মালিক এবং আমি একটি সিন্থেটিক ভয়েস মডেল তৈরি করতে এই ভয়েস ব্যবহার করে Google-এর সাথে সম্মতি দিচ্ছি। |
Chinesisch (China) | cmn-CN | 我是此声音的拥有者并授权谷歌使用此声音创建语音合成模型 |
Englisch (Australien) | en-AU | I am the owner of this voice and I consent to Google using this voice to create a synthetic voice model. |
Englisch (Indien) | en-IN | I am the owner of this voice and I consent to Google using this voice to create a synthetic voice model. |
Englisch (Vereinigtes Königreich) | de-DE | I am the owner of this voice and I consent to Google using this voice to create a synthetic voice model. |
Englisch (USA) | en-US | I am the owner of this voice and I consent to Google using this voice to create a synthetic voice model. |
Französisch (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. |
Französisch (Frankreich) | 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. |
Deutsch (Deutschland) | de-DE | Ich bin der Eigentümer dieser Stimme und bin damit einverstanden, dass Google diese Stimme zur Erstellung eines synthetischen Stimmmodells verwendet. |
Gujarati (Indien) | gu-IN | હું આ વોઈસનો માલિક છું અને સિન્થેટિક વોઈસ મોડલ બનાવવા માટે આ વોઈસનો ઉપયોગ કરીને google ને હું સંમતિ આપું છું |
Hindi (Indien) | hi-IN | मैं इस आवाज का मालिक हूं और मैं सिंथेटिक आवाज मॉडल बनाने के लिए Google को इस आवाज का उपयोग करने की सहमति देता हूं |
Indonesisch (Indonesien) | id-ID | Saya pemilik suara ini dan saya menyetujui Google menggunakan suara ini untuk membuat model suara sintetis. |
Italienisch (Italien) | it-IT | Sono il proprietario di questa voce e acconsento che Google la utilizzi per creare un modello di voce sintetica. |
Japanisch (Japan) | ja-JP | 私はこの音声の所有者であり、Googleがこの音声を使用して音声合成モデルを作成することを承認します。 |
Kannada (Indien) | kn-IN | ನಾನು ಈ ಧ್ವನಿಯ ಮಾಲಿಕ ಮತ್ತು ಸಂಶ್ಲೇಷಿತ ಧ್ವನಿ ಮಾದರಿಯನ್ನು ರಚಿಸಲು ಈ ಧ್ವನಿಯನ್ನು ಬಳಸಿಕೊಂಡುಗೂಗಲ್ ಗೆ ನಾನು ಸಮ್ಮತಿಸುತ್ತೇನೆ. |
Koreanisch (Korea) | ko-KR | 나는 이 음성의 소유자이며 구글이 이 음성을 사용하여 음성 합성 모델을 생성할 것을 허용합니다. |
Malayalam (Indien) | ml-IN | ഈ ശബ്ദത്തിന്റെ ഉടമ ഞാനാണ്, ഒരു സിന്തറ്റിക് വോയ്സ് മോഡൽ സൃഷ്ടിക്കാൻ ഈ ശബ്ദം ഉപയോഗിക്കുന്നതിന് ഞാൻ Google-ന് സമ്മതം നൽകുന്നു." |
Marathi (Indien) | mr-IN | मी या आवाजाचा मालक आहे आणि सिंथेटिक व्हॉइस मॉडेल तयार करण्यासाठी हा आवाज वापरण्यासाठी मी Google ला संमती देतो |
Niederländisch (Niederlande) | 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. |
Polnisch (Polen) | 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. |
Portugiesisch (Brasilien) | pt-BR | Eu sou o proprietário desta voz e autorizo o Google a usá-la para criar um modelo de voz sintética. |
Russisch (Russland) | ru-RU | Я являюсь владельцем этого голоса и даю согласие Google на использование этого голоса для создания модели синтетического голоса. |
Tamil (Indien) | ta-IN | நான் இந்த குரலின் உரிமையாளர் மற்றும் செயற்கை குரல் மாதிரியை உருவாக்க இந்த குரலை பயன்படுத்த குகல்க்கு நான் ஒப்புக்கொள்கிறேன். |
Telugu (Indien) | te-IN | నేను ఈ వాయిస్ యజమానిని మరియు సింతటిక్ వాయిస్ మోడల్ ని రూపొందించడానికి ఈ వాయిస్ ని ఉపయోగించడానికి googleకి నేను సమ్మతిస్తున్నాను. |
Thailändisch (Thailand) | th-TH | ฉันเป็นเจ้าของเสียงนี้ และฉันยินยอมให้ Google ใช้เสียงนี้เพื่อสร้างแบบจำลองเสียงสังเคราะห์ |
Türkisch (Türkei) | tr-TR | Bu sesin sahibi benim ve Google'ın bu sesi kullanarak sentetik bir ses modeli oluşturmasına izin veriyorum. |
Vietnamesisch (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. |
Spanisch (Spanien) | 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. |
Spanisch (USA) | 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. |
Regionale Verfügbarkeit
Instant-Custom Voice ist in den folgenden Google Cloud-Regionen verfügbar:
Google Cloud -Zone | Unterstützte Methode | Einführungsreife |
---|---|---|
global |
Erstellung, Synthese | Private Vorschau |
us |
Synthese | Private Vorschau |
eu |
Synthese | Private Vorschau |
asia-southeast1 |
Erstellung, Synthese | Private Vorschau |
asia-northeast1 |
Erstellung, Synthese | Private Vorschau |
europe-west2 |
Erstellung, Synthese | Private Vorschau |
Unterstützte Ausgabeformate
Das Standardantwortformat ist LINEAR16, aber es werden folgende weitere Formate unterstützt:
API-Methode | Format |
---|---|
streaming |
ALAW, MULAW, OGG_OPUS und PCM |
batch |
ALAW, MULAW, MP3, OGG_OPUS und PCM |
Funktionsunterstützung und Einschränkungen
Funktion | Unterstützung | Beschreibung |
---|---|---|
SSML | Nein | SSML-Tags zum Personalisieren von synthetischem Audio. |
Textbasierte Prompts | Ja | Satzzeichen, Pausen und Unflüssigkeiten, um Text-to-Speech einen natürlichen Fluss und ein natürliches Tempo zu verleihen. |
Zeitstempel | Nein | Zeitstempel auf Wortebene. |
Tags pausieren | Experimentell | Pausen bei Bedarf in synthetisierte Audioausgabe einfügen |
Temposteuerung | Ja | Geschwindigkeit der synthetisierten Audioausgabe anpassen, von 0,25‑facher bis zu 2‑facher Geschwindigkeit |
Aussprachesteuerung | Experimentell | Benutzerdefinierte Aussprache von Wörtern oder Phrasen mit phonetischer IPA- oder X‑SAMPA-Codierung. |
Chirp 3: Instant-Custom Voice verwenden
In den folgenden Abschnitten wird erläutert, wie Sie die Funktionen von Chirp 3: Instant-Custom Voice in der Text-to-Speech API verwenden können.
Einwilligung und Referenzaudio aufzeichnen
Einwilligungserklärung aufzeichnen: Um die rechtlichen und ethischen Richtlinien für Instant-Custom Voice einzuhalten, zeichnen Sie die erforderliche Einwilligungserklärung als Einkanal-Audiodatei in der entsprechenden Sprache und in einer unterstützten Audio-Codierung auf. Die Audiodatei darf maximal 10 Sekunden lang sein. (Ich bin der Eigentümer dieser Stimme und erkläre mich damit einverstanden, dass Google ein Sprachsynthesemodell mit dieser Stimme erstellt.)
Referenzaudio aufnehmen: Nehmen Sie mit dem Mikrofon Ihres Computers bis zu 10 Sekunden Audio als Einkanal-Audiodatei in einer unterstützten Audio-Codierung auf. Während der Aufnahme sollten keine Hintergrundgeräusche zu hören sein. Nehmen Sie die Einwilligung und das Referenzaudio in derselben Umgebung auf.
Audiodateien speichern: Speichern Sie die aufgezeichneten Audiodateien in Cloud Storage.
Richtlinien für die Produktion hochwertiger Referenz- und Einwilligungs-Audios
Beachten Sie die folgenden Richtlinien, um hochwertige Referenz- und Einwilligungs-Audioinhalte zu erstellen:
- Das Audio sollte möglichst genau 10 Sekunden lang sein.
- Das Audio sollte natürliche Pausen und ein natürliches Tempo enthalten.
- Die Audiodatei sollte nur minimale Hintergrundgeräusche enthalten.
- Weitere Informationen finden Sie unter Unterstützte Audiocodierungen. Es kann eine beliebige Abtastrate verwendet werden.
- Das Modell gibt die Qualität des Mikrofons wieder. Wenn die Aufnahme also undeutlich klingt, ist auch die Ausgabe undeutlich.
- Die Stimme sollte dynamisch und etwas ausdrucksstärker sein als die endgültige Ausgabe. Die Stimme sollte auch die gewünschte Kadenz haben. Wenn das Referenz-Audio beispielsweise keine natürlichen Pausen oder Unterbrechungen enthält, wird die geklonte Stimme keine guten Pausen machen.
- Ein guter Prompt ist eher enthusiastisch und energiegeladen als monoton und gelangweilt, damit das Modell Hinweise erhält, diese Energie zu replizieren.
Unterstützte Audiocodierungen
Die folgenden Audio-Codierungen für die Eingabe werden unterstützt:
LINEAR16
PCM
MP3
M4A
Instant-Custom Voice mit der REST API erstellen
Eine Instant-Custom Voice wird durch einen Schlüssel zum Klonen einer Stimme repräsentiert, bei dem es sich um eine Textstring-Darstellung Ihrer Sprachdaten handelt.
Wichtige Hinweise
Hier sind einige wichtige Informationen zum Erstellen einer benutzerdefinierten Stimme:
- Die Anzahl der Schlüssel zum Klonen von Stimmen, die Sie erstellen können, ist nicht begrenzt, da sie clientseitig gespeichert und pro Anfrage bereitgestellt werden.
- Derselbe Schlüssel zum Klonen einer Stimme kann von mehreren Clients oder Geräten gleichzeitig verwendet werden.
- Sie können pro Projekt und Minute 10 Schlüssel zum Klonen von Stimmen erstellen. Weitere Informationen finden Sie unter Anfragenlimit.
- Sie können kein benutzerdefiniertes Skript für die Einwilligung anstelle des Standardskripts verwenden. Sie müssen das Skript für die Einwilligung verwenden, das unter Verfügbare Sprachen bereitgestellt ist.
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}")
Synthese mit einer Instant-Custom Voice über die REST API durchführen
Mit dem Schlüssel zum Klonen einer Stimme können Sie Audio mithilfe der REST API synthetisieren.
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}")
Synthese mit einer Instant-Custom Voice über die Python-Clientbibliothek durchführen
In diesem Beispiel wird die Python-Clientbibliothek verwendet, um die Synthese einer Instant-Custom Voice mit einem Schlüssel zum Klonen einer Stimme durchzuführen, der in der Datei voice_cloning_key.txt
gespeichert wurde. Informationen zum Generieren eines Schlüssels zum Klonen einer Stimme finden Sie unter Instant-Custom Voice mit der REST API erstellen.
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,
)
Streaming-Synthese mit einer Instant-Custom Voice über die Python-Clientbibliothek durchführen
In diesem Beispiel wird die Python-Clientbibliothek verwendet, um die Streaming-Synthese einer Instant-Custom Voice mit einem Schlüssel zum Klonen einer Stimme durchzuführen, der in voice_cloning_key.txt
gespeichert ist.
Informationen zum Generieren eines Schlüssels zum Klonen einer Stimme finden Sie unter Instant-Custom Voice mit der REST API erstellen.
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,
)
Chirp 3: HD-Stimmsteuerung verwenden
Instant Custom Voice unterstützt dieselben Funktionen für Temposteuerung, Pausensteuerung und benutzerdefinierte Aussprache wie Chirp 3: HD-Stimmen. Weitere Informationen zur Chirp 3: HD-Stimmsteuerung
Alle drei Funktionen können für Instant-Custom Voice aktiviert werden, indem Sie die SynthesizeSpeechRequest
oder StreamingSynthesizeConfig
auf dieselbe Weise anpassen wie für Instant-Custom Voice.
Verfügbare Sprachen für die Stimmsteuerung
Die Temposteuerung ist in allen Sprachen verfügbar.
Die Pausensteuerung ist in allen Sprachen verfügbar.
Benutzerdefinierte Aussprachen sind in allen Sprachen verfügbar, außer in
bn-IN
,gu-IN
,th-TH
undvi-VN
.
Mehrsprachige Übertragung aktivieren
Instant-Custom Voice unterstützt die mehrsprachige Übertragung für bestimmte Gebietsschemapaare. Das bedeutet, dass ein mit einem bestimmten Sprachcode wie en-US
generierter Schlüssel zum Synthetisieren von Sprache in einer anderen Sprache wie es-ES
verwendet werden kann.
In diesem Codebeispiel wird die Konfiguration von SynthesizeRequest
zum Synthetisieren von es-ES
mit einem en-US
-Schlüssel für das Klonen von Stimmen veranschaulicht:
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,
),
)
Beispiel für die Konfiguration von StreamingSynthesizeConfig
zum Synthetisieren von es-ES
mit einem en-US
-Schlüssel zum Klonen von Stimmen:
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,
),
)
Verfügbare Sprachen für die mehrsprachige Übertragung
Instant-Custom Voice unterstützt die folgenden Sprachübertragungen:
Mit Schlüsseln zum Klonen von Stimmen mit dem Gebietsschema
en-US
kann die Ausgabe in den folgenden Gebietsschemas synthetisiert werden:de-DE
es-US
es-ES
fr-CA
fr-FR
pt-BR