Chirp 3:HD 語音

Text-to-Speech Chirp 3:HD 語音代表最新一代的 Text-to-Speech 技術。這些語音採用最先進的 LLM 技術,可提供無與倫比的真實感和情感共鳴。

試用 Colab 筆記本 在 GitHub 中查看筆記本

語音選項

系統提供多種聲音選項,各有不同特色:

名稱 性別 示範
Aoede 女性
球餅 男性
冥衛一 男性
Kore 女性
芬里爾 男性
Leda 女性
Orus 男性
Zephyr 女性
Achird 男性
Algenib 男性
Algieba 男性
Alnilam 男性
Autonoe 女性
Callirrhoe 女性
Despina 女性
安塞拉杜斯 男性
Erinome 女性
Gacrux 女性
埃爾皮塔斯 男性
拉奧美狄亞 女性
Pulcherrima 女性
Rasalgethi 男性
Sadachbia 男性
Sadaltager 男性
Schedar 男性
Sulafat 女性
Umbriel 男性
Vindemiatrix 女性
北冕座β星 男性
Achernar 女性

支援的語言

Chirp 3:支援下列語言的 HD 語音:

語言 BCP-47 代碼
英文 (美國) en-US
英文 (澳洲) en-AU
英文 (英國) en-GB
英文 (印度) en-IN
西班牙文 (美國) es-US
德文 (德國) de-DE
法文 (法國) 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-BE
荷蘭文 (荷蘭) nl-NL
韓文 (南韓) ko-KR
中文 (中國) cmn-CN
波蘭文 (波蘭) pl-PL
俄文 (俄羅斯) ru-RU
斯瓦希里文 (肯亞) sw-KE
泰文 (泰國) th-TH
烏都文 (印度) ur-IN
烏克蘭文 (烏克蘭) uk-UA

地區可用性

Chirp 3:HD 語音適用於下列 Google Cloud 區域:

Google Cloud 區域 發布準備完成度
global 正式發布版
us 正式發布版
eu 正式發布版
asia-southeast1 正式發布版

支援的輸出格式

預設回應格式為 LINEAR16,但其他支援的格式包括:

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

使用 Chirp 3:HD 語音

瞭解如何使用 Chirp 3:HD 語音合成語音。

執行串流語音合成要求

Python

如要瞭解如何安裝及使用 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 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"')

指令碼和提示訣竅

如要從文字建立自然流暢的語音,必須先瞭解口語的細微差異,然後轉換成腳本。請參考下列提示,撰寫出真實自然的腳本,並掌握所選語氣。

目標:自然語音

主要目標是盡可能讓合成語音聽起來像自然的人聲。這類行為包括:

  • 模仿自然語速:說話速度快慢。
  • 打造流暢的流程:確保句子和片語之間能順暢轉換。
  • 加入真實的停頓點:加入停頓點,強調特定字詞或區分不同場景。
  • 捕捉對話語氣:讓音訊聽起來像真實對話。

自然語音的關鍵技術

  • 標點符號可控制語氣和流暢度

    • 句號 (.):表示句點和較長的暫停。用來分隔完整想法,清楚劃分句子界線。
    • 逗號 (,):表示句子中較短的停頓。用來分隔子句、列出項目,或短暫停頓以利呼吸。
    • 省略號 (...):代表較長且經過深思熟慮的停頓。可能表示想法未完、猶豫或戲劇性的停頓。
      • 例如:「And then... it happened.」(然後...就發生了。)
    • 連字號 (-):可用來表示短暫停頓或突然中斷思緒。
      • 例如:「我想說,但說不出口。」
  • 加入停頓和口語障礙

    • 策略性停頓:使用省略號、逗號或連字號,在人類說話者自然會停頓換氣或強調語氣的地方加入停頓。
    • 語塞 (嗯和呃):雖然部分文字轉語音模型會自動處理語塞,但瞭解語塞的角色至關重要。讓語音聽起來更自然,不會像機器人。 即使模型會加入這些內容,瞭解這些內容在人類語音中自然出現的位置,有助於掌握腳本的整體流程。
  • 實驗與疊代

    • 重新合成:請放心使用相同語音多次重新合成同一則訊息。標點符號、間距或用字稍有不同,最終音訊的呈現效果就會大相逕庭。
    • 仔細聆聽:密切注意合成音訊的節奏、流暢度和整體語氣。找出不自然的語調,並據此調整腳本。
    • 語音變化:如果系統允許,請嘗試使用不同語音,找出最適合腳本和所選語氣的語音。
  • 實用腳本編寫訣竅

    • 朗讀:合成前先朗讀腳本。這有助於找出不自然的措辭、停頓和需要調整的部分。
    • 以對話方式撰寫:使用縮寫 (例如 「it's」、「we're」) 和非正式用語,讓腳本聽起來更自然。
    • 考慮情境:腳本的語氣和節奏應與音訊情境相符。正式簡報與輕鬆對話的準備方式不同。
    • 拆解複雜的句子:文字轉語音引擎可能難以處理冗長複雜的句子。將長句拆成較短且易於管理的句子。
  • 指令碼範例改善項目

    • 原始腳本 (機器人):「The product is now available. 我們推出了新功能。這非常令人興奮。」

    • 改良版腳本 (自然):「這項產品現已推出,並新增了幾項令人期待的新功能。這真的很令人興奮。」

    • 原始腳本 (機器人):「這是自動傳送的確認訊息。預訂已處理完畢。以下是您即將入住的詳細資訊。預訂號碼為 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」使用縮寫,語氣更口語化。
      • 「這,嗯,這非常令人興奮」這句話加入少許不流暢感,並強調重點。
      • 「好嗎?」友善提醒可緩和語氣。

    只要遵循這些指引,就能建立聽起來自然、引人入勝且像真人的文字轉語音腳本。請記住,練習和實驗是掌握這項技能的關鍵。

Chirp 3:HD 語音控制

語音控制功能專為 HD 語音合成設計,請注意,Chirp 3:HD 語音不支援 SSML,但您仍可透過 Chirp 3:HD 語音控制選項管理語速控制、暫停控制和自訂發音。

配速控制

你可以使用配速參數調整生成的音訊速度。你可以使用 pace 參數調慢或調快語音速度,值介於 0.25 倍 (非常慢) 到 2 倍 (非常快) 之間。如要設定速度,請在要求中使用 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

暫停控制

如要將暫停插入 AI 生成的語音,請使用 markup 輸入欄位,直接在文字中嵌入特殊標記。請注意,暫停代碼只會顯示在 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.",
}

暫停控制音訊樣本:

標記輸入 輸出
「我看看,嗯,我看到了。」
「讓我看看,[長暫停] 是的,我看到了。」

自訂發音

您可以為輸入文字中的字詞指定 IPA 或 X-SAMPA 語音表示法,自訂發音。請務必使用適合語言的音素,確保正確呈現。如要進一步瞭解音素覆寫,請參閱音素說明文件

使用自訂發音的範例 SynthesizeSpeechRequest:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "There is a dog in the boat",
    "custom_pronunciations": {
      "phrase": "dog",
      "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
      "pronunciation": "\"k{t",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}

使用自訂發音的 StreamingSynthesizeConfig 範例:

{
  "streaming_audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
  "custom_pronunciations": {
    "phrase": "dog",
    "phonetic_encoding": "PHONETIC_ENCODING_X_SAMPA",
    "pronunciation": "\"k{t",
  }
}

自訂發音音訊樣本:

已套用自訂發音 輸出
「dog」的發音為「"k{t"

覆寫的片語可以採用任何格式,包括使用符號。舉例來說,如果詞組比對可能因語境而產生歧義 (這在中文和日文等語言中很常見),或是句子中某個字有多種發音方式,可以透過格式化詞組來消除歧義。舉例來說,為避免覆寫輸入內容中其他「read」字詞的例項,輸入文字和覆寫的詞組都可以將「"read"」格式化為「"read1"」、「"[read]"」或「"(read)"」。

請參閱以下範例,瞭解如何為句子中的「read」套用自訂發音,讓系統以兩種不同方式發音:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "text": "I read1 a book, and I will now read2 it to you.",
    "custom_pronunciations": {
      "phrase": "read1",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "rɛd",
    }
    "custom_pronunciations": {
      "phrase": "read2",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
已套用自訂發音 輸出
以兩種方式覆寫「read」

此外,自訂發音可搭配標記輸入內容使用,因此也能使用暫停標記:

{
  "audio_config": {
    "audio_encoding": "LINEAR16",
  },
  "input": {
    "markup": "Did you [pause long] read this book?",
    "custom_pronunciations": {
      "phrase": "read",
      "phonetic_encoding": "PHONETIC_ENCODING_IPA",
      "pronunciation": "riːd",
    }
  },
  "voice": {
    "language_code": "en-US",
    "name": "en-us-Chirp3-HD-Leda",
  }
}
使用的自訂發音 輸出
使用暫停標記覆寫發音

語音控制功能支援的語言

  • 所有地區皆可使用步調控制功能。

  • 暫停控制項適用於所有語言代碼。

  • 自訂發音功能適用於所有語言代碼,但 bn-in、gu-in、nl-be、sw-ke、th-th、uk-ua、ur-in 和 vi-vn 除外。

常見問題

常見問題與解答:

如何控制語速和語調,提升語音輸出品質?

您可以參考提示和撰寫指南,改善文字提示,提升語音輸出品質。

如何使用支援語言的語音?

語音名稱採用特定格式,因此只要指定專屬語音,就能在支援的語言中使用。格式為 \<locale\>-\<model\>-\<voice\>。舉例來說,如要使用 Chirp 3:HD 語音模型,以 Kore 語音合成英文 (美國) 語音,請指定 en-US-Chirp3-HD-Kore

Chirp 3:HD 語音是否支援 SSML?

雖然 Chirp 3:HD 語音不支援 SSML,但你仍可透過 Chirp 3:HD 語音控制選項管理語速控制、暫停控制和自訂發音。