Chirp 3:HD 语音

文字转语音 Chirp 3:高清语音代表了最新一代的文字转语音技术。这些语音由我们尖端的 LLM 提供支持,可提供无与伦比的逼真度和情感共鸣。

试用 Colab 笔记本 在 GitHub 上查看笔记本

语音选项

我们提供了一系列语音选项,每种选项都有不同的特点:

名称 性别 演示
Aoede 女性
Puck 男性
Charon 男性
Kore 女性
Fenrir 男性
Leda 女性
Orus 男性
Zephyr 女性
Achird 男性
Algenib 男性
Algieba 男性
Alnilam 男性
Autonoe 女性
Callirrhoe 女性
Despina 女性
土卫二 男性
Erinome 女性
Gacrux 女性
土卫八 男性
Laomedeia 女性
Pulcherrima 女性
Rasalgethi 男性
Sadachbia 男性
Sadaltager 男性
Schedar 男性
Sulafat 女性
Umbriel 男性
Vindemiatrix 女性
Zubenelgenubi 男性
Achernar 女性

支持的语言

Chirp 3:高清语音支持以下语言:

语言 BCP-47 代码
德语(德国) de-DE
英语(澳大利亚) en-AU
英语(英国) en-GB
英语(印度) en-IN
西班牙语(美国) es-US
法语(法国) fr-FR
印地语(印度) hi-IN
葡萄牙语(巴西) pt-BR
阿拉伯语(通用) ar-XA
西班牙语(西班牙) es-ES
法语(加拿大) fr-CA
印度尼西亚语(印度尼西亚) id-ID
意大利语(意大利) it-IT
日语(日本) ja-JP
土耳其语(土耳其) tr-TR
越南语(越南) vi-VN
孟加拉语(印度) bn-IN
古吉拉特语(印度) gu-IN
卡纳达语(印度) kn-IN
马拉雅拉姆语(印度) ml-IN
马拉地语(印度) mr-IN
泰米尔语(印度) ta-IN
泰卢固语(印度) te-IN
荷兰语(荷兰) nl-NL
韩语(韩国) ko-KR
中文普通话(中国大陆) cmn-CN
波兰语(波兰) pl-PL
俄语(俄罗斯) ru-RU
斯瓦希里语(肯尼亚) sw-KE
泰语(泰国) th-TH
乌克兰语(乌克兰) uk-UA

区域可用性

Chirp 3:高清语音分别在以下 Google Cloud 区域提供:

Google Cloud 区域 发布就绪情况
global GA
us GA
eu GA
asia-southeast1 GA

支持的输出格式

默认响应格式为 LINEAR16,但支持的其他格式包括:

API 方法 格式
streaming ALAW、MULAW、OGG_OPUS 和 PCM
batch ALAW、MULAW、MP3、OGG_OPUS 和 PCM

使用 Chirp 3:高清语音

了解如何使用 Chirp 3:高清语音来合成语音。

执行流式语音合成请求

Python

如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。 如需了解详情,请参阅 Text-to-Speech Python API 参考文档

如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

"""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)}")

执行在线语音合成请求

Python

如需了解如何安装和使用 Text-to-Speech 客户端库,请参阅 Text-to-Speech 客户端库。 如需了解详情,请参阅 Text-to-Speech Python API 参考文档

如需向 Text-to-Speech 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证

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"')

脚本和提示技巧

若要根据文本创建富有吸引力且听起来自然的音频,需要了解口语的细微差别,并将其转换为脚本形式。以下提示可帮助您撰写听起来真实且能体现所选语气的脚本。

了解目标:自然语音

主要目标是让合成语音听起来尽可能接近自然的人类讲话者。这些行为包括:

  • 模仿自然节奏:说话的快慢。
  • 打造流畅的节奏:确保句子和短语之间顺畅过渡。
  • 添加逼真的停顿:加入停顿以强调和清晰地表达内容。
  • 捕获对话语气:让音频听起来像是真实对话。

自然语音的关键技术

  • 用于节奏和节奏的标点

    • 英文句号 (.):表示完全停止和更长时间的暂停。使用它们来分隔完整的想法,并明确句子边界。
    • 英文逗号 (,):表示句子中较短的停顿。用它们来分隔从句、列表项或引入短暂的休息时间。
    • 省略号 (...):表示更长、更有目的的暂停。它们可以表示后续想法、犹豫或戏剧性停顿。
      • 示例:“然后…就这样发生了。”
    • 连字符 (-):可用于表示短暂的停顿或突然的思维中断。
      • 示例:“我想说 - 但我说不出来。”
  • 加入停顿和口误

    • 有策略的停顿:在人类讲者自然会停顿呼吸或强调的地方,使用省略号、英文逗号或英文连字符来添加停顿。
    • 口误(嗯和呃):虽然某些文本转语音模型会自动处理口误,但了解它们的作用至关重要。这些音效可以增添真实感,让语音听起来不那么机械。即使模型添加了这些空白,了解它们在人类语音中自然出现的位置也有助于您了解脚本的整体流程。
  • 实验和迭代

    • 重新合成:请不要担心,可以多次使用同一声音重新合成同一消息。对标点、空格或用词进行细微调整可能会对最终音频产生重大影响。
    • 仔细聆听:仔细注意合成音频的节奏、流畅度和整体语气。找出听起来不自然的部分,并相应地调整脚本。
    • 声音变体:如果系统允许,请尝试使用不同的声音,看看哪种声音最适合您的脚本和所选语气。
  • 实用脚本编写提示

    • 大声朗读:在合成之前,请大声朗读您的脚本。这有助于您发现不当的措辞、不自然的停顿以及需要调整的方面。
    • 以对话方式撰写:使用缩写词(例如”和“我们”)以及非正式用语,使脚本听起来更自然。
    • 考虑情境:脚本的语气和节奏应与音频的情境相符。正式演示与随意对话所需的方法不同。
    • 拆解复杂句子:长而复杂的句子可能难以被 TTS 引擎处理。将其拆分成更短、更易于管理的句子。
  • 脚本改进示例

    • 原始脚本(机器人):“该商品现已发售。我们推出了新功能。这非常令人兴奋。”

    • 改进后的脚本(自然):“该产品现已推出... 我们还添加了一些令人兴奋的新功能。这很令人兴奋。”

    • 原始脚本(机器人):“这是一封由系统自动发送的确认邮件。您的预订已处理。以下详细信息与您即将入住的酒店有关。预订号为 12345。已注册的房客姓名是 Anthony Vasquez,入住日期是 3 月 14 日。出发日期为 3 月 16 日。客房类型为豪华套房。入住人数为 1 人。入住时间为下午 3 点。退房时间为上午 11 点。请注意,根据取消政策,您需要在入住前 48 小时通知我们。如果未在此时间范围内通知,我们将收取一晚的住宿费用。您的预订包含的其他设施和服务包括:免费 Wi-Fi、健身中心和免费早餐。如有任何疑问,请直接致电 855-555-6689 与酒店联系。感谢您选择我们酒店。”

    • 改进后的脚本(自然):“Anthony Vasquez,您好!很高兴确认您与我们预订的服务!您已顺利预订 3 月 14 日至 3 月 16 日入住我们美丽的豪华套房。这是 1 位旅客的价格。您的确认号码是 12345,请记下这个号码,以备日后参考。

      温馨提醒一下,入住时间为下午 3 点,退房时间为上午 11 点。

      现在,请注意我们的取消政策。如果您需要取消,请至少在入住前 48 小时通知我们,好吗?否则,您需要支付一晚的住宿费。

      为了让您的住宿体验更加愉快,我们还提供免费 Wi-Fi、健身中心和每天早上的免费美味早餐!

      如果您有任何疑问,请随时致电 855-555-6689 与我们联系。我们非常期待您入住我们的酒店!”

    • 变更说明

      • 省略号 (...) 用于营造强调效果的停顿。
      • “and we've”使用了缩写形式,以便采用更口语化的语气。
      • “It's, well, it's very exciting” 会略微增加口吃和强调。
      • “好的吗?”以友好提醒的语气来缓和语气。

    遵循以下准则,您可以创建听起来自然、富有吸引力且像真人一样的文字转语音脚本。请注意,要想掌握此技能,实践和实验是关键。

Chirp 3:高清语音控制

语音控制功能专门用于 HD Voice 合成。请注意,高清语音不支持 SSML,并且暂停和节奏控制可能会产生不一致的结果。

语音控制功能支持的语言

Chirp 3:高清语音控制功能目前仅支持美国英语。

配速控制

您可以使用 pace 参数调整生成的音频的速度。借助此参数,您可以放慢或加快语音速度,值介于 0.25 倍(非常慢)到 2 倍(非常快)之间,以 0.25 倍为增量。如需设置节奏,请在请求中使用“speaking_rate”参数,选择一个介于 0.25 到 2.0 之间的浮点值。值低于 1.0 会降低语速,而值高于 1.0 会加快语速。值为 1.0 表示未调整的节奏。

使用节奏控制的 SynthesizeSpeechRequest 示例:

{
  "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",
  }
}

使用节奏控制的 StreamingSynthesizeConfig 示例:

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

节奏控制音频示例:

语速 输出
0.5
1.0
2.0

暂停控件

您可以使用 markup 输入字段直接将特殊标记嵌入到文本中,从而在 AI 生成的语音中插入停顿。请注意,暂停标记仅适用于 markup 字段,而不适用于 text 字段。

这些标记会指示 AI 创建静音片段,但这些暂停的确切时长并不固定。AI 会根据上下文调整时长,就像自然人类语音因讲者、地理位置和句子结构而异一样。可用的暂停标记包括 [pause short][pause long][pause]。如需了解在不使用标记代码的情况下创建暂停的其他方法,请参阅我们的提示和创作指南

AI 模型有时可能会忽略暂停标记,尤其是当这些标记位于文本中不自然的位置时。您可以组合使用多个暂停标记来延长静音时间,但使用过多可能会导致问题。

使用暂停控制的 SynthesizeSpeechRequest 示例:

{
  "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",
  }
}

使用暂停控件的 StreamingSynthesisInput 示例:

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

暂停控制音频示例:

标记输入 输出
“让我看看,是的,我看到了。”
“让我看看,[长时间暂停] 是的,我看到了。”

常见问题解答

常见问题及其解答:

如何控制节奏和流程以改进语音输出?

您可以利用我们的提示和撰写指南,改进文本提示,从而改进语音输出。

如何使用支持的语言的语音?

语音名称遵循特定格式,通过指定独特的语音,可在支持的语言中使用。格式遵循 \<locale\>-\<model\>-\<voice\>。例如,如需使用 Chirp 3:高清语音模型的英语(美国)Kore 语音,您可以将其指定为 en-US-Chirp3-HD-Kore

Chirp 3:高清语音是否支持 SSML?

虽然 Chirp 3:高清语音不支持 SSML,但您仍然可以通过 HD 语音控制选项管理节奏和暂停控制。