IBM Cloud Docs
使用語音合成

使用語音合成

HTTP POSTGET /v1/synthesize 方法以及 WebSocket /v1/synthesize 方法都接受選用的 voice 查詢參數。 您可以使用 voice 參數來指出要用於語音合成的語音及語言。 服務會根據指定語音的語言來瞭解輸入文字的語言。

請務必指定與輸入文字之語言相符的語音。 例如,如果您指定法文語音 fr-FR_ReneeV3Voice,則服務預期會收到以法文撰寫的輸入文字。 如果您傳遞的文字不是以語音的語言撰寫(例如,英文文字配上法文語音),則服務可能無法產生有意義的結果。

指定語音範例

下列 HTTP POST 要求範例使用語音 en-US_AllisonV3Voice 進行語音合成:

IBM Cloud

curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--data "{\"text\":\"hello world\"}" \
--output hello_world.wav \
"{url}/v1/synthesize?voice=en-US_AllisonV3Voice"

IBM Cloud Pak for Data

curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--data "{\"text\":\"hello world\"}" \
--output hello_world.wav \
"{url}/v1/synthesize?voice=en-US_AllisonV3Voice"

下列範例顯示語音合成的對等 HTTP GET 要求:

IBM Cloud

curl -X GET -u "apikey:{apikey}" \
--output hello_world.wav \
"{url}/v1/synthesize?accept=audio%2Fwav&text=hello%20world&voice=en-US_AllisonV3Voice"

IBM Cloud Pak for Data

curl -X POST \
--header "Authorization: Bearer {token}" \
--output hello_world.wav \
"{url}/v1/synthesize?accept=audio%2Fwav&text=hello%20world&voice=en-US_AllisonV3Voice"

使用預設語音

如果您在要求中省略 voice 參數,依預設,服務會使用美式英文 en-US_MichaelV3Voice 。 此預設值適用於所有語音合成要求及 GET /v1/pronunciation 方法。

IBM Cloud Pak for Data 如果您未安裝 en-US_MichaelV3Voice,則它無法作為預設語音。 在此情況下,您必須

  • 使用 voice 參數來傳遞要與每一個要求搭配使用的語音。
  • 使用 Speech 服務自訂資源中的 defaultTTSVoice 內容,為 IBM Cloud Pak for Data 的 Text to Speech 安裝指定新的預設語音。 如需相關資訊,請參閱 安裝 Watson Text to Speech

多語言語音合成

服務目前不支援多語言語音合成。 所有合成都是以 voice 參數指定的語音語言為基礎。 視語言及相關單字而定,您可能可以使用自訂作業,以與要求語音不同的語言來近似單字的發音。 如需相關資訊,請參閱建立自訂模型

如果您決定使用自訂作業來模擬不同語言的發音,請使用 HTTP GET /v1/pronunciation 方法來查看其他語言的字組發音。 此方法會傳回服務用來以該語言對單字進行發音的語音。 如需相關資訊,請參閱 Phonetic translation

您可以調整方法傳回的音素,以儘可能符合您語言中可用的音素。 然後,您可以建立自訂模型,其中包含具有該翻譯的自訂字組,並搭配使用該模型與您的合成要求。 因為兩種不同的語言可能不支援相同的語音,可能無法完全符合一種語言的語音和發音與另一種語言的音標。

「語音合成標記語言 (SSML)」 <speak> 元素包括 xml:lang 元素,但該元素適用於整個要求,且服務不支援使用它作為指定語音合成的不同語言的方法。