![]() |
![]() |
Gemini-TTS는 자연스러움을 넘어 텍스트 기반 프롬프트를 사용하여 생성된 오디오를 세부적으로 제어할 수 있도록 지원하는 최신 버전의 Text-to-Speech 기술입니다. Gemini-TTS를 사용하면 짧은 스니펫부터 긴 형식의 내러티브까지 단일 또는 다중 화자 음성을 합성하여 스타일, 억양, 속도, 어조, 감정 표현까지 정확하게 표현할 수 있으며, 이 모든 것은 자연어 프롬프트를 통해 조정 가능합니다.
콘솔에서 이 모델을 살펴보려면 Model Garden의 Gemini-TTS 모델 카드 (Media Studio 탭을 사용하여 액세스 가능)를 참조하세요.
Vertex AI (Vertex AI Studio)에서 Gemini-TTS 사용해 보기
Gemini-TTS 기능은 다음에서 지원됩니다.
gemini-2.5-flash-tts
: Gemini 2.5 Flash TTS는 비용 효율적인 일상 TTS 애플리케이션에 적합합니다.gemini-2.5-pro-tts
: Gemini 2.5 Pro TTS는 제어 가능한 음성 생성 (TTS)과 최첨단 품질의 복잡한 프롬프트에 적합합니다.
모델 | 최적화 목표 | 입력 형식 | 출력 형식 | 단일 화자 | 멀티 스피커 |
---|---|---|---|---|---|
Gemini 2.5 Flash TTS | 비용 효율적인 일상적인 애플리케이션을 위한 짧은 지연 시간, 제어 가능한 단일 및 다중 화자 Text-to-Speech 오디오 생성 | 텍스트 | 오디오 | ✔️ | ✔️ |
Gemini 2.5 Pro TTS | 팟캐스트 생성, 오디오북, 고객 지원 등 구조화된 워크플로를 위한 높은 제어력 | 텍스트 | 오디오 | ✔️ | ✔️ |
추가 제어 및 기능은 다음과 같습니다.
자연스러운 대화: 뛰어난 품질의 음성 상호작용, 더욱 적절한 표현력, 운율(리듬 패턴)이 매우 짧은 지연 시간으로 제공되므로 유연하게 대화할 수 있습니다.
스타일 제어: 자연어 프롬프트를 사용하여 특정 억양을 채택하고 속삭임을 비롯한 다양한 어조와 표현을 생성하도록 조정하여 대화 내에서 전달 방식을 조정할 수 있습니다.
동적 성능: 이 모델은 시, 뉴스, 흥미로운 스토리텔링을 표현력 있게 읽어 텍스트에 생기를 불어넣을 수 있습니다. 또한 요청 시 특정 감정으로 연기하고 억양을 낼 수 있습니다.
향상된 속도 및 발음 제어: 전달 속도를 제어하면 특정 단어를 비롯한 발음의 정확성을 높일 수 있습니다.
예시
model: "gemini-2.5-pro-tts" prompt: "You are having a casual conversation with a friend. Say the following in a friendly and amused way." text: "hahah I did NOT expect that. Can you believe it!." speaker: "Callirhoe"
model: "gemini-2.5-flash-tts" prompt: "Say the following in a curious way" text: "OK, so... tell me about this [uhm] AI thing.", speaker: "Orus"
model: "gemini-2.5-flash-tts" prompt: "Say the following" text: "[extremely fast] Availability and terms may vary. Check our website or your local store for complete details and restrictions." speaker: "Kore"
이러한 음성을 프로그래매틱 방식으로 사용하는 방법에 대한 자세한 내용은 Gemini-TTS 사용 섹션을 참고하세요.
음성 옵션
Gemini-TTS는 기존 Chirp 3: HD 음성과 유사한 다양한 음성 옵션을 제공하며, 각각 고유한 특성이 있습니다.
이름 | 성별 | 데모 |
---|---|---|
Achernar | 여성 | |
Achird | 남성 | |
Algenib | 남성 | |
Algieba | 남성 | |
Alnilam | 남성 | |
Aoede | 여성 | |
Autonoe | 여성 | |
Callirrhoe | 여성 | |
카론 | 남성 | |
Despina | 여성 | |
엔켈라두스 | 남성 | |
Erinome | 여성 | |
Fenrir | 남성 | |
Gacrux | 여성 | |
이아페투스 | 남성 | |
Kore | 여성 | |
Laomedeia | 여성 | |
Leda | 여성 | |
Orus | 남성 | |
Pulcherrima | 여성 | |
Puck | 남성 | |
Rasalgethi | 남성 | |
Sadachbia | 남성 | |
Sadaltager | 남성 | |
Schedar | 남성 | |
Sulafat | 여성 | |
Umbriel | 남성 | |
Vindemiatrix | 여성 | |
Zephyr | 여성 | |
Zubenelgenubi | 남성 |
지원 언어
Gemini-TTS는 다음 언어를 지원합니다.
언어 | BCP-47 코드 | 출시 준비 |
---|---|---|
아랍어(이집트) | ar-EG | GA |
네덜란드어(네덜란드) | nl-NL | GA |
영어(인도) | en-IN | GA |
영어(미국) | en-US | GA |
프랑스어(프랑스) | fr-FR | GA |
독일어(독일) | de-DE | GA |
힌디어(인도) | hi-IN | GA |
인도네시아어(인도네시아) | id-ID | GA |
이탈리아어(이탈리아) | it-IT | GA |
일본어(일본) | ja-JP | GA |
한국어(대한민국) | ko-KR | GA |
마라티어(인도) | mr-IN | GA |
폴란드어(폴란드) | pl-PL | GA |
포르투갈어(브라질) | pt-BR | GA |
루마니아어(루마니아) | ro-RO | GA |
러시아어(러시아) | ru-RU | GA |
스페인어(스페인) | es-ES | GA |
타밀어(인도) | ta-IN | GA |
텔루구어(인도) | te-IN | GA |
태국어(태국) | th-TH | GA |
터키어(터키) | tr-TR | GA |
우크라이나어(우크라이나) | uk-UA | GA |
베트남어(베트남) | vi-VN | GA |
아프리칸스어(남아프리카 공화국) | af-ZA | 미리보기 |
알바니아어(알바니아) | sq-AL | 미리보기 |
암하라어(에티오피아) | am-ET | 미리보기 |
아랍어 (전 세계) | ar-001 | 미리보기 |
아르메니아어(아르메니아) | hy-AM | 미리보기 |
아제르바이잔어(아제르바이잔) | az-AZ | 미리보기 |
벵골어(방글라데시) | bn-bd | 미리보기 |
바스크어(스페인) | eu-ES | 미리보기 |
벨라루스어(벨라루스) | be-BY | 미리보기 |
불가리아어(불가리아) | bg-BG | 미리보기 |
버마어(미얀마) | my-MM | 미리보기 |
카탈로니아어(스페인) | ca-ES | 미리보기 |
세부아노어(필리핀) | ceb-PH | 미리보기 |
중국어 (북경어, 중국) | cmn-cn | 미리보기 |
중국어, 북경어 (대만) | cmn-tw | 미리보기 |
크로아티아어(크로아티아) | hr-HR | 미리보기 |
체코어(체코) | cs-CZ | 미리보기 |
덴마크어(덴마크) | da-DK | 미리보기 |
영어(호주) | en-AU | 미리보기 |
영어(영국) | en-GB | 미리보기 |
에스토니아어(에스토니아) | et-EE | 미리보기 |
필리핀어(필리핀) | fil-PH | 미리보기 |
핀란드어(핀란드) | fi-FI | 미리보기 |
프랑스어(캐나다) | fr-CA | 미리보기 |
갈리시아어(스페인) | gl-ES | 미리보기 |
조지아어(조지아) | ka-GE | 미리보기 |
그리스어(그리스) | el-GR | 미리보기 |
구자라트어(인도) | gu-IN | 미리보기 |
아이티 크리올어 (아이티) | ht-HT | 미리보기 |
히브리어(이스라엘) | he-IL | 미리보기 |
헝가리어(헝가리) | hu-HU | 미리보기 |
아이슬란드어(아이슬란드) | is-IS | 미리보기 |
자바어 (Java) | jv-JV | 미리보기 |
칸나다어(인도) | kn-IN | 미리보기 |
콘칸어 (인도) | kok-in | 미리보기 |
라오스어(라오스) | lo-LA | 미리보기 |
라틴어 (바티칸 시국) | la-VA | 미리보기 |
라트비아어(라트비아) | lv-LV | 미리보기 |
리투아니아어(리투아니아) | lt-IT | 미리보기 |
룩셈부르크어(룩셈부르크) | lb-LU | 미리보기 |
마케도니아어(북마케도니아) | mk-MK | 미리보기 |
마이틸리어(인도) | mai-IN | 미리보기 |
마다가스카르어 (마다가스카르) | mg-MG | 미리보기 |
말레이어(말레이시아) | ms-MY | 미리보기 |
말라얄람어(인도) | ml-IN | 미리보기 |
몽골어(몽골) | mn-MN | 미리보기 |
네팔어(네팔) | ne-NP | 미리보기 |
노르웨이어(보크말)(노르웨이) | nb-NO | 미리보기 |
노르웨이어(뉘노르스크)(노르웨이) | nn-NO | 미리보기 |
오리야어(인도) | or-IN | 미리보기 |
파슈토어 (아프가니스탄) | ps-AF | 미리보기 |
페르시아어(이란) | fa-IR | 미리보기 |
포르투갈어(포르투갈) | pt-PT | 미리보기 |
펀자브어(인도) | pa-IN | 미리보기 |
세르비아어(세르비아) | sr-RS | 미리보기 |
신디어(인도) | sd-IN | 미리보기 |
싱할라어(스리랑카) | si-LK | 미리보기 |
슬로바키아어(슬로바키아) | sk-SK | 미리보기 |
슬로베니아어(슬로베니아) | sl-SI | 미리보기 |
스페인어(라틴 아메리카) | es-419 | 미리보기 |
스페인어(멕시코) | es-MX | 미리보기 |
스와힐리어(케냐) | sw-KE | 미리보기 |
스웨덴어(스웨덴) | sv-SE | 미리보기 |
우르두어(파키스탄) | ur-PK | 미리보기 |
사용 가능한 리전
Gemini-TTS 모델은 다음 Google Cloud 리전에서 각각 사용할 수 있습니다.
Google Cloud 리전 | 출시 준비 |
---|---|
global |
GA |
지원되는 출력 형식
기본 응답 형식은 LINEAR16
입니다. 지원되는 기타 형식은 다음과 같습니다.
API 메서드 | 형식 |
---|---|
batch |
ALAW, MULAW, MP3, OGG_OPUS, PCM |
streaming |
지원되지 않음 |
Gemini-TTS 사용
Gemini-TTS 모델을 사용하여 단일 화자 및 다중 화자 음성을 합성하는 방법을 알아봅니다.
시작하기 전에
Text-to-Speech를 사용하려면 다음 단계에 따라Google Cloud 콘솔에서 API를 사용 설정해야 합니다.
- 프로젝트에서 Text-to-Speech 사용 설정하기
- Text-to-Speech에 결제가 사용 설정되었는지 확인하기
- 개발 환경에 인증을 설정합니다.
Google Cloud 프로젝트 설정
-
기존 프로젝트를 선택하거나 새 프로젝트를 만들 수 있습니다. 프로젝트 만들기에 대한 자세한 내용은 Google Cloud 문서를 참고하세요.
새 프로젝트를 만들면 결제 계정을 연결하라는 메시지가 표시됩니다. 기존 프로젝트를 사용하는 경우 결제를 사용 설정해야 합니다.
프로젝트를 선택하고 결제 계정에 연결하면 Text-to-Speech API를 사용 설정할 수 있습니다. 페이지 상단의 제품 및 리소스 검색 표시줄로 이동하여 'speech'를 입력합니다. 결과 목록에서 Cloud Text-to-Speech API를 선택합니다.
API를 프로젝트에 연결하지 않고 Text-to-Speech를 사용해 보려면 이 API 사용해 보기 옵션을 선택합니다. 프로젝트에서 사용할 Text-to-Speech API를 사용 설정하려면 사용 설정을 클릭합니다.
개발 환경에 인증을 설정합니다. 자세한 내용은 Text-to-Speech 인증 설정을 참고하세요.
동기 단일 화자 합성 수행
Python
# google-cloud-texttospeech minimum version 2.29.0 is required.
import os
from google.cloud import texttospeech
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
def synthesize(prompt: str, text: str, output_filepath: str = "output.mp3"):
"""Synthesizes speech from the input text and saves it to an MP3 file.
Args:
prompt: Styling instructions on how to synthesize the content in
the text field.
text: The text to synthesize.
output_filepath: The path to save the generated audio file.
Defaults to "output.mp3".
"""
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(text=text, prompt=prompt)
# Select the voice you want to use.
voice = texttospeech.VoiceSelectionParams(
language_code="en-US",
name="Charon", # Example voice, adjust as needed
model_name="gemini-2.5-pro-tts"
)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.MP3
)
# Perform the text-to-speech request on the text input with the selected
# voice parameters and audio file type.
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config
)
# The response's audio_content is binary.
with open(output_filepath, "wb") as out:
out.write(response.audio_content)
print(f"Audio content written to file: {output_filepath}")
CURL
# Make sure to install gcloud cli, and sign in to your project.
# Make sure to use your PROJECT_ID value.
# The available models are gemini-2.5-flash-tts and gemini-2.5-pro-tts.
# To parse the JSON output and use it directly see the last line of the command.
# Requires JQ and ffplay library to be installed.
PROJECT_ID=YOUR_PROJECT_ID
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "x-goog-user-project: $PROJECT_ID" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "Say the following in a curious way",
"text": "OK, so... tell me about this [uhm] AI thing."
},
"voice": {
"languageCode": "en-us",
"name": "Kore",
"model_name": "gemini-2.5-flash-tts"
},
"audioConfig": {
"audioEncoding": "LINEAR16"
}
}' \
"https://texttospeech.googleapis.com/v1/text:synthesize" \
| jq -r '.audioContent' | base64 -d | ffplay - -autoexit
자유 형식 텍스트 입력으로 동기 다중 화자 합성 실행
Python
# google-cloud-texttospeech minimum version 2.31.0 is required.
import os
from google.cloud import texttospeech
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
def synthesize_multispeaker_freeform(
prompt: str,
text: str,
output_filepath: str = "output_non_turn_based.wav",
):
"""Synthesizes speech from non-turn-based input and saves it to a WAV file.
Args:
prompt: Styling instructions on how to synthesize the content in the
text field.
text: The text to synthesize, containing speaker aliases to indicate
different speakers. Example: "Sam: Hi Bob!\nBob: Hi Sam!"
output_filepath: The path to save the generated audio file. Defaults to
"output_non_turn_based.wav".
"""
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(text=text, prompt=prompt)
multi_speaker_voice_config = texttospeech.MultiSpeakerVoiceConfig(
speaker_voice_configs=[
texttospeech.MultispeakerPrebuiltVoice(
speaker_alias="Speaker1",
speaker_id="Kore",
),
texttospeech.MultispeakerPrebuiltVoice(
speaker_alias="Speaker2",
speaker_id="Charon",
),
]
)
voice = texttospeech.VoiceSelectionParams(
language_code="en-US",
model_name="gemini-2.5-pro-tts",
multi_speaker_voice_config=multi_speaker_voice_config,
)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.LINEAR16,
sample_rate_hertz=24000,
)
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config
)
with open(output_filepath, "wb") as out:
out.write(response.audio_content)
print(f"Audio content written to file: {output_filepath}")
CURL
# Make sure to install gcloud cli, and sign in to your project.
# Make sure to use your PROJECT_ID value.
# The available models are gemini-2.5-flash-tts and gemini-2.5-pro-tts
# To parse the JSON output and use it directly see the last line of the command.
# Requires JQ and ffplay library to be installed.
# google-cloud-texttospeech minimum version 2.31.0 is required.
PROJECT_ID=YOUR_PROJECT_ID
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "x-goog-user-project: $PROJECT_ID" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "Say the following as a conversation between friends.",
"text": "Sam: Hi Bob, how are you?\\nBob: I am doing well, and you?"
},
"voice": {
"languageCode": "en-us",
"modelName": "gemini-2.5-flash-tts",
"multiSpeakerVoiceConfig": {
"speakerVoiceConfigs": [
{
"speakerAlias": "Sam",
"speakerId": "Kore"
},
{
"speakerAlias": "Bob",
"speakerId": "Charon"
}
]
}
},
"audioConfig": {
"audioEncoding": "LINEAR16",
"sampleRateHertz": 24000
}
}' \
"https://texttospeech.googleapis.com/v1/text:synthesize" \
| jq -r '.audioContent' | base64 -d | ffplay - -autoexit
구조화된 텍스트 입력으로 동기 다중 화자 합성 실행
구조화된 텍스트 입력이 포함된 다중 화자를 사용하면 사람과 유사한 방식으로 텍스트를 지능적으로 표현할 수 있습니다. 예를 들어 이러한 종류의 입력은 주소와 날짜에 유용합니다. 자유 형식 텍스트 입력은 텍스트를 작성된 그대로 말합니다.
Python
# google-cloud-texttospeech minimum version 2.31.0 is required.
import os
from google.cloud import texttospeech
PROJECT_ID = os.getenv("GOOGLE_CLOUD_PROJECT")
def synthesize_multispeaker_structured(
prompt: str,
turns: list[texttospeech.MultiSpeakerMarkup.Turn],
output_filepath: str = "output_turn_based.wav",
):
"""Synthesizes speech from turn-based input and saves it to a WAV file.
Args:
prompt: Styling instructions on how to synthesize the content in the
text field.
turns: A list of texttospeech.MultiSpeakerMarkup.Turn objects representing
the dialogue turns.
output_filepath: The path to save the generated audio file. Defaults to
"output_turn_based.wav".
"""
client = texttospeech.TextToSpeechClient()
synthesis_input = texttospeech.SynthesisInput(
multi_speaker_markup=texttospeech.MultiSpeakerMarkup(turns=turns),
prompt=prompt,
)
multi_speaker_voice_config = texttospeech.MultiSpeakerVoiceConfig(
speaker_voice_configs=[
texttospeech.MultispeakerPrebuiltVoice(
speaker_alias="Speaker1",
speaker_id="Kore",
),
texttospeech.MultispeakerPrebuiltVoice(
speaker_alias="Speaker2",
speaker_id="Charon",
),
]
)
voice = texttospeech.VoiceSelectionParams(
language_code="en-US",
model_name="gemini-2.5-pro-tts",
multi_speaker_voice_config=multi_speaker_voice_config,
)
audio_config = texttospeech.AudioConfig(
audio_encoding=texttospeech.AudioEncoding.LINEAR16,
sample_rate_hertz=24000,
)
response = client.synthesize_speech(
input=synthesis_input, voice=voice, audio_config=audio_config
)
with open(output_filepath, "wb") as out:
out.write(response.audio_content)
print(f"Audio content written to file: {output_filepath}")
CURL
# Make sure to install gcloud cli, and sign in to your project.
# Make sure to use your PROJECT_ID value.
# The available models are gemini-2.5-flash-tts and gemini-2.5-pro-tts.
# To parse the JSON output and use it directly see the last line of the command.
# Requires JQ and ffplay library to be installed.
# google-cloud-texttospeech minimum version 2.31.0 is required.
PROJECT_ID=YOUR_PROJECT_ID
curl -X POST \
-H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \
-H "x-goog-user-project: $PROJECT_ID" \
-H "Content-Type: application/json" \
-d '{
"input": {
"prompt": "Say the following as a conversation between friends.",
"multiSpeakerMarkup": {
"turns": [
{
"speaker": "Sam",
"text": "Hi Bob, how are you?"
},
{
"speaker": "Bob",
"text": "I am doing well, and you?"
}
]
}
},
"voice": {
"languageCode": "en-us",
"modelName": "gemini-2.5-flash-tts",
"multiSpeakerVoiceConfig": {
"speakerVoiceConfigs": [
{
"speakerAlias": "Sam",
"speakerId": "Kore"
},
{
"speakerAlias": "Bob",
"speakerId": "Charon"
}
]
}
},
"audioConfig": {
"audioEncoding": "LINEAR16",
"sampleRateHertz": 24000
}
}' \
"https://texttospeech.googleapis.com/v1/text:synthesize" \
| jq -r '.audioContent' | base64 -d | ffplay - -autoexit
미디어 스튜디오에서 음성 합성 수행
Google Google Cloud 콘솔의 미디어 스튜디오를 사용하여 텍스트 음성 변환 모델을 실험할 수 있습니다. 이를 통해 합성된 오디오를 빠르게 생성하고, 듣고, 다양한 스타일 지침과 파라미터를 실험할 수 있는 사용자 인터페이스가 제공됩니다.
Google Google Cloud 콘솔에서 Vertex AI Studio > Media Studio 페이지로 이동합니다.
미디어 드롭다운에서 음성을 선택합니다.
텍스트 필드에 음성으로 합성할 텍스트를 입력합니다.
설정 창에서 다음 설정을 구성합니다.
- 모델: 사용하려는 텍스트 음성 변환(TTS) 모델(예:
Gemini 2.5 Pro TTS
)을 선택합니다. 사용 가능한 모델에 대한 자세한 내용은 텍스트 음성 변환 모델을 참고하세요. - 스타일 지침: 선택사항: 선택한 말하기 스타일, 어조, 감정 전달을 설명하는 텍스트 프롬프트를 입력합니다. 이를 통해 기본 내레이션 이상의 모델 성능을 유도할 수 있습니다. 예: "다큐멘터리에 어울리는 차분하고 전문적인 어조로 내레이션을 해 줘."
- 언어: 입력 텍스트의 언어와 지역을 선택합니다. 모델이 선택한 언어와 억양으로 음성을 생성합니다. 예를 들어 영어 (미국)입니다.
- 음성: 내레이션에 사용할 사전 정의된 음성을 선택합니다. 목록에는 선택한 모델 및 언어에 사용할 수 있는 음성(예: Acherner(여성))이 포함됩니다.
- 모델: 사용하려는 텍스트 음성 변환(TTS) 모델(예:
(선택사항) 고급 옵션 섹션을 펼쳐 기술 오디오 설정을 구성합니다.
- 오디오 인코딩: 출력 오디오 파일의 인코딩을 선택합니다.
LINEAR16
는 고품질 오디오 처리에 적합한 무손실 비압축 형식입니다.MULAW
는 압축 오디오 출력에도 사용할 수 있습니다. - 오디오 샘플링 레이트: 샘플링 레이트 (Hz)를 선택합니다. 오디오 품질을 결정합니다. 44,100Hz와 같은 값이 높을수록 CD 품질에 해당하는 고음질 오디오를 나타냅니다.
- 속도: 슬라이더를 움직이거나 값을 입력하여 말하기 속도를 조정합니다. 1 미만의 값은 음성 속도를 늦추고 1 초과의 값은 음성 속도를 높입니다. 기본값은 1입니다.
- 볼륨 게인 (dB): 출력 오디오의 볼륨을 데시벨 (dB) 단위로 조정합니다. 양수 값은 볼륨을 늘리고 음수 값은 볼륨을 줄입니다. 기본값은 0입니다.
- 오디오 인코딩: 출력 오디오 파일의 인코딩을 선택합니다.
텍스트 상자 오른쪽에 있는 전송 아이콘을 클릭하여 오디오를 생성합니다.
생성된 오디오가 미디어 플레이어에 표시됩니다. 재생 버튼을 클릭하여 출력을 듣습니다. 계속해서 설정을 조정하고 필요에 따라 새 버전을 생성할 수 있습니다.
프롬프트 작성 팁
텍스트에서 몰입되고 자연스러운 오디오를 만들려면 음성 언어의 뉘앙스를 이해하고 이를 스크립트 형식으로 변환해야 합니다. 다음 팁은 선택한 어조를 잘 살리고 진정성 있게 들리는 스크립트를 작성하는 데 도움이 됩니다.
음성 제어의 세 가지 레버
가장 예측 가능하고 미묘한 결과를 얻으려면 다음 세 가지 구성요소가 모두 원하는 출력과 일치해야 합니다.
스타일 프롬프트 전반적인 감정적 어조와 전달의 주요 동인입니다. 프롬프트는 전체 음성 세그먼트의 컨텍스트를 설정합니다.
예:
You are an AI assistant speaking in a friendly and helpful tone.
예:
Narrate this in the calm, authoritative tone of a nature documentary narrator.
텍스트 콘텐츠 합성할 단어의 의미입니다. 스타일 프롬프트와 감정적으로 일치하는 연상적인 문구를 사용하면 중립적인 텍스트보다 훨씬 더 신뢰할 수 있는 결과를 얻을 수 있습니다.
좋은 예: 겁에 질린 어조를 나타내는 프롬프트는
I think someone is in the house.
와 같은 텍스트와 함께 사용할 때 가장 효과적입니다.효과가 떨어지는 예: 겁에 질린 어조를 요구하는 프롬프트에
The meeting is at 4 PM.
와 같은 텍스트를 사용하면 모호한 결과가 생성됩니다.
마크업 태그
[sigh]
와 같은 괄호로 묶인 태그는 전반적인 어조를 설정하는 데 사용하기보다는 특정 현지화된 작업이나 스타일 수정사항을 삽입하는 데 사용하는 것이 좋습니다. 스타일 프롬프트 및 텍스트 콘텐츠와 함께 작동합니다.
마크업 태그 가이드
Google의 연구에 따르면 괄호로 묶인 마크업 태그는 세 가지 모드 중 하나로 작동합니다. 태그의 모드를 이해하는 것은 태그를 효과적으로 사용하는 데 중요합니다.
모드 1: 비언어적 소리
마크업이 들을 수 있는 음성이 아닌 발화 (예: 한숨, 웃음)로 대체됩니다. 태그 자체는 말하지 않습니다. 이러한 기능은 현실적이고 인간과 유사한 망설임과 반응을 추가하는 데 유용합니다.
태그 | 동작 | 안정성 | 안내 |
---|---|---|---|
[sigh] |
한숨 소리를 삽입합니다. | 높음 | 한숨의 감정적 품질은 프롬프트의 영향을 받습니다. |
[laughing] |
웃음을 삽입합니다. | 높음 | 최상의 결과를 얻으려면 구체적인 프롬프트를 사용하세요. 예를 들어 일반적인 프롬프트는 충격적인 웃음을 유발할 수 있지만 '재미있는 웃음으로 반응해'는 재미있는 웃음을 유발합니다. |
[uhm] |
망설임 소리를 삽입합니다. | 높음 | 더 자연스러운 대화형 느낌을 만드는 데 유용합니다. |
모드 2: 스타일 수정자
마크업은 음성으로 출력되지 않지만 후속 음성의 전달을 수정합니다. 수정의 범위와 기간은 다를 수 있습니다.
태그 | 동작 | 안정성 | 안내 |
---|---|---|---|
[sarcasm] |
다음 문구에 비꼬는 어조를 부여합니다. | 높음 | 이 태그는 강력한 수정자입니다. 추상적인 개념이 모델의 제공을 성공적으로 이끌 수 있음을 보여줍니다. |
[robotic] |
후속 음성이 로봇처럼 들립니다. | 높음 | 효과는 전체 문구에 적용될 수 있습니다. 지원 스타일 프롬프트 (예: '로봇처럼 말해줘')를 사용하는 것이 좋습니다. |
[shouting] |
후속 음성의 볼륨을 높입니다. | 높음 | 스타일이 일치하는 프롬프트 (예: '다음 부분을 외쳐') 및 소리를 지르는 것을 암시하는 텍스트 |
[whispering] |
후속 음성의 볼륨을 줄입니다. | 높음 | 스타일 프롬프트도 명시적인 경우 (예: '이 부분을 최대한 조용히 속삭여 줘'). |
[extremely fast] |
후속 음성의 속도를 높입니다. | 높음 | 면책 조항이나 빠른 속도의 대화에 적합합니다. 프롬프트 지원이 최소한으로 필요합니다. |
모드 3: 발음된 마크업 (형용사)
마크업 태그 자체는 단어로 말해지며 전체 문장의 어조에도 영향을 미칩니다. 이 동작은 일반적으로 감정 형용사에 적용됩니다.
경고: 태그 자체가 음성으로 제공되므로 이 모드는 대부분의 사용 사례에서 원치 않는 부작용일 수 있습니다. 대신 스타일 프롬프트를 사용하여 이러한 감정적 톤을 설정하는 것이 좋습니다.
태그 | 동작 | 안정성 | 안내 |
---|---|---|---|
[scared] |
'무서워'라는 단어가 말해지고 문장이 무서운 어조를 취합니다. | 높음 | 성능은 텍스트 콘텐츠에 크게 좌우됩니다. '창문 깨지는 소리가 들렸어'라고 말하면 정말로 무서운 결과가 나옵니다. 중립적인 문구를 사용하면 '으스스'하지만 덜 사실적인 결과가 생성됩니다. |
[curious] |
'궁금해'라는 단어가 말해지고 문장이 궁금한 어조를 취합니다. | 높음 | 태그의 의도를 뒷받침하는 질문형 문구를 사용하세요. |
[bored] |
'지루해'라는 단어가 말해지고 문장이 지루한 단조로운 어조로 전달됩니다. | 높음 | 일상적이거나 반복적인 텍스트와 함께 사용하면 효과가 극대화됩니다. |
모드 4: 속도 조절 및 일시중지
이러한 태그는 생성된 오디오에 무음을 삽입하여 리듬, 타이밍, 페이스를 세부적으로 제어할 수 있습니다. 표준 구두점 (쉼표, 마침표, 세미콜론)도 자연스러운 일시중지를 만들지만 이러한 태그는 더 명시적인 제어를 제공합니다.
태그 | 동작 | 안정성 | 안내 |
---|---|---|---|
[short pause] |
쉼표와 유사한 짧은 일시중지 (~250ms)를 삽입합니다. | 높음 | 명확성을 높이기 위해 절이나 목록 항목을 구분하는 데 사용합니다. |
[medium pause] |
문장 끊김과 유사한 표준 일시중지 (~500ms)를 삽입합니다. | 높음 | 명확한 문장이나 생각을 구분하는 데 효과적입니다. |
[long pause] |
극적인 효과를 위해 상당한 일시중지를 삽입합니다 (~1000ms 이상). | 높음 | 극적인 타이밍에 사용합니다. 예: '답변은... [long pause] ...아니요.' 부자연스럽게 들릴 수 있으므로 과도하게 사용하지 마세요. |
신뢰할 수 있는 결과를 위한 핵심 전략
세 가지 레버 모두 정렬 예측 가능성을 극대화하려면 스타일 프롬프트, 텍스트 콘텐츠, 마크업 태그가 모두 의미상 일관되고 동일한 목표를 향해 작동하는지 확인하세요.
감성적인 텍스트 사용 프롬프트와 태그에만 의존하지 마세요. 모델이 사용할 수 있는 풍부하고 설명적인 텍스트를 제공하세요. 이는 특히 비꼬는 감정, 두려움, 흥분과 같은 미묘한 감정에 중요합니다.
구체적이고 자세한 프롬프트 작성 스타일 프롬프트가 구체적일수록 결과가 더 신뢰할 수 있습니다. '재미있는 웃음으로 반응해'가
[laughing]
보다 낫습니다. '1940년대 라디오 뉴스 앵커처럼 말해 줘'가 '옛날 방식으로 말해 줘'보다 좋습니다.새 태그 테스트 및 확인 새 태그 또는 테스트되지 않은 태그의 동작은 항상 예측할 수 있는 것은 아닙니다. 스타일 수정자라고 생각하는 태그가 음성으로 표현될 수 있습니다. 프로덕션에 배포하기 전에 항상 새 태그 또는 프롬프트 조합을 테스트하여 동작을 확인하세요.