用於 TTS 的 SSML

Cloud TTS Hub支援使用語音合成標記語言 (SSML)。 SSML 是一種基於 XML 的標記語言,可讓您控制文字合成為語音的方式。 您可以用它來微調發音、語速、音調、音量等等。

SSML 提供標準標記語言,但提供程式可能以不同的方式實現它。 您需要使用 TTS 提供程式支援的標記在您的 TTS 腳本中。 其他 TTS 標記可能無法使用。 請參閱 TTS 服務提供者提供的文件:

要在Studio文稿中使用 SSML,文字輸入必須:

  • 有效的 XML。
  • 有效的 SSML。
  • 包含在 <speak> </speak> 標記中。
  • 每個標記一個屬性(包括 <speak> 標記)。 SSML 中的屬性允許您指定文字的閱讀方式,例如以數位或特定語音的形式讀取。
  • 指派給指令碼中動態資料物件或SNIPPET 動作中的變數。 您為標記的文字指派到的物件或變數必須稍後在指令碼中的適當位置使用,以便傳遞給 TTS 服務提供者。 請參閱本節後面的範例。 在代碼段中使用 SSML 時:
    • 您可以將 SSML 文字分配給動態資料物件或常規變數
    • 您可以將消息作為單個文字塊分配給變數,也可以將其分解為多個變數
    • 分配給變數的 SSML 必須少於 300 個字元。 如果文字長度超過此長度,則可以使用將其分配給多個變數或動態資料物件的屬性。

    • 在指令碼的Sequence 屬性中使用您指派 SSML 的變數,在PLAY動作中。 您可以在中了解有關使用 TTS 提示序列Studio的更多資訊。

    • 將 XML 命名空間參數添加到代碼段時,請從 SSML 標記中刪除這些參數。 例如,必須刪除等參數。
    • 在代碼段的變數或動態資料物件分配中,必須刪除 XML 中出現的雙引號。 例如,在 snippet 變數賦值中設置 XML 格式,如下所示:<ASSIGN playSSML = "<speak xml:lang=en-US><voice name=en-US-JennyNeural> Good morning Chris! </voice></speak>"。 這是範例中使用的原始 XML:

      <speak xml:lang="en-US">
       <voice name="en-US-JennyNeural"> Good morning Chris! </voice>
      </speak>

您可以將以下操作新增到需要 TTS 和 SSML 的任何指令碼中。 執行此操作時,應遵循以下範例:

使用 SSML 的 TTS 指令碼的圖像,其中 BEGIN、CLOUD TTS、SNIPPET 和 PLAY 動作連結在一起。

在此範例中,CLOUD TTS動作定義了Cloud TTS Hub TTS 提供程式和語音。 SNIPPET 操作包含標記的 SSML 文字。 它可以位於CLOUD TTS之前或之後,但必須在PLAY之前。 SSML 被分配給一個變數,該變數作為提示序列傳遞給PLAY動作。 對於虛擬客服關閉 代替真人客服專員處理客戶互動的軟體應用程式。腳本,請使用VOICEBOT EXCHANGE操作而不是PLAY

SSML 中每個標籤一個屬性的範例

此示例顯示了每個標籤一個屬性的 SSML 標記。 原始 XML 為:

 <speak xml:lang="en-US"> 
 <voice name="en-US-JennyNeural"> Good morning Chris! </voice> 
 <voice name="en-US-ChristopherNeural"> Good morning to you too, Jenny! </voice> 
 </speak> 
        

要在指令碼的 SNIPPET 動作中使用此範例,請將其賦值給變數並刪除雙引號:

 ASSIGN playSSML = "<speak xml:lang=en-US><voice name=en-US-JennyNeural>Good morning Chris!</voice>
<voice name=en-US-ChristopherNeural>Good morning to you too, Jenny!</voice></speak>"

SSML 中具有不同標記的多個句子的範例

這個範例顯示了<speak>..之間的多個句子 </speak>標記。 這是原始 XML 版本:

 <speak xml:lang="en-US">Here are <say-as interpret-as="characters">SSML</say-as> samples. I can pause <break time="3s"/>.I can say cardinal numbers like <say-as interpret-as="cardinal">1135</say-as>. I can say numbers as digits like <say-as interpret-as="characters">1135</say-as>.</speak>

這是您將在SNIPPET動作中使用的變數賦值:

 ASSIGN playSSML = "<speak xml:lang=en-US>Here are <say-as interpret-as=characters>SSML</say-as> samples. I can pause <break time=3s/>. I can say cardinal numbers like <say-as interpret-as=cardinal>1135</say-as> I can say numbers as digits like <say-as interpret-as=characters>1135</say-as>. </speak>"

程式碼片段代碼中帶有標記文字的動態資料物件範例

此範例演示如何將標記文字分配給動態資料物件

 DYNAMIC promptSSML
ASSIGN promptSSML.prompt[1].textToSpeech = "<speak>The SSML should be read in the TTS voice selected in the CLOUD TTS action.\<speak\>";
ASSIGN promptSSMLJSON = "{promptSSML.asjson()}";

SNIPPET 代碼中一條訊息分佈在多個變數的範例

此示例演示如何對長度超過 300 個字元的文字使用多個變數。

myText2 的值包括myText的文字。 myText3 的文字包括 myText2 的值,其中包括 myText 的值,依此類推。

ASSIGN myTime = "2:30pm"
ASSIGN myText = "<speak> Here are some examples of what CXone Mpower can do with SSML and cloud TTS.  CXone can include a break <break time=3s/> in a spoken sentence as well as read back numbers in different ways."
ASSIGN myText2 = "{myText} For example, saying the number <say-as interpret-as=verbatim>12345</say-as> as individual digits or reading it as a cardinal number like this. <say-as interpret-as=cardinal>12345</say-as> ."
ASSIGN myText3 = "{myText2} CXone can also read back words as words or as individual characters <say-as interpret-as=characters>like this</say-as> ."
ASSIGN myText4 = "{myText3} CXone can also use SSML to slow down spoken sentences. <prosody rate=70%> to help people better understand something that's being said </prosody> "
ASSIGN myText5 = "{myText4} or speed them up <prosody rate=170%> where, for example, the fine print of an agreement can be read back in a short amount of time. </prosody> " 
ASSIGN myText6 = "{myText5} Combining SSML and cloud TTS, CXone can also be used for many other things, like reading back time correctly like this.  Currently, it's<say-as interpret-as=time format=hms24 detail=2>{myTime}</say-as></speak>"

若要將整個文本作為提示閱讀,請使用包含所有文本的變數在Sequence屬性中的PLAY動作中。 按照前面的示例,您將使用配置Sequence“%{myText6}”。 您可以在中了解有關使用 TTS 提示序列Studio的更多資訊。