如何修改语音合成
IBM Watson® Text to Speech 服务提供的表达性神经声音提供了一些其他功能,这些功能不可用于其他类型的声音: 使用说话样式,强调插词和 强调单词。 HTTP 和 WebSocket 界面均提供这些功能。
这些功能涉及使用语音合成标记语言 (SSML) 的元素。 这些功能部件的描述提供了有关它们如何与相关 SSML 元素和属性进行交互的信息。
使用演讲样式
表现力神经声音从其单词和短语的上下文中决定文本的情绪。 他们所产生的讲话,除了具有非常对话式的风格外,还反映了文本的意境。 表达的声音在默认情况下自然会表达感恩,感恩,幸福,同情,困惑以及其他情感,没有显性的额外标记。
但是,您可以使用具有必需 style
属性的 <express-as>
元素来修饰声音的自然倾向,以指示所有或部分文本都要强调特定特征。 这些特征被称为说话风格:
cheerful
-表示快乐和好消息。 风格乐观,欢迎,传达积极的信息。empathetic
-表示同情和同情。 这种风格有同情的底色,但并不过分悲伤。neutral
-表示客观性和均衡性。 风格力求少一些情感,反而传达出更均衡,更有指导性的语气。uncertain
-表示不确定和混淆。 风格传达的是不放心或有疑问的感觉。
在很多情况下,风格的效果是非常微妙的。 在这种情况下,这些差异可能无法从默认的表达语气中轻易辨别出来。 但有些情况下,这种风格可以有声地增强声音内在的检测和表达情感的能力。 这些差异通常只能在某些单词和短语上检测到。
使用 SSML 表达发言样式
以下 HTTP 请求使用 <express-as>
元素和 style
的 cheerful
来修改整个输入文本的说话风格。 此示例使用 en-US_EmmaExpressive
语音。
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output full-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news! I am very happy for you!</express-as>\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output full-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news! I am very happy for you!</express-as>\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
以下示例 HTTP 请求仅对请求的第一句使用了 cheerful
样式。 第二句是用默认的语音说话。 此示例再次使用 en-US_EmmaExpressive
语音。
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output partial-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news!</express-as> Do you need any further help?\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output partial-cheerful-style.wav \
--data "{\"text\":\"<express-as style='cheerful'>Oh, that's good news!</express-as> Do you need any further help?\"}" \
"{url}/v1/synthesize?voice=en-US_EmmaExpressive"
强调拒绝
当您使用表现力神经声音时,服务会根据上下文自动检测许多常见的猜想。 在产生的音频中,它给他们提供了人类在正常对话中使用的自然强调。 表现力声音支持基于语言的一组不同的猜想。 请参阅特定于语言的页面,以获取有关支持这些拒绝的更多详细信息。
使用 SSML 启用或禁用拒绝
该服务始终按预期解释和声明大多数插句。 但是,存在一些可以在不同上下文中使用的推测。 在此类情况下,缺省情况下,服务的缺省行为是禁用此类拒绝。 您可以使用 SSML 来启用或禁用此类拒绝。 SSML <say-as>
元素的 interpret-as
属性接受附加值 interjection
。 将 interpret-as
属性与 interjection
值配合使用时,将包含值为 true
或 false
的附加 enabled
属性,以指示是否将该词作为注入发音。 每种语言都有不同的插话子集,可以通过 SSML 来启用/禁用这些插话。 请参阅特定于语言的页面,以获取有关可使用 SSML 启用/禁用哪些拒绝的更多详细信息。
以下示例 HTTP 请求指示服务不要将 oh
和 aha
作为感叹词发音。 此示例使用 en-US_AllisonExpressive
语音。
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output disabled-interjections.wav \
--data "{\"text\":\"<say-as interpret-as='interjection' enabled='false'>Oh</say-as>, in addition, the <say-as interpret-as='interjection' enabled='false'>aha</say-as> wasp is endemic to Australia.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonExpesssive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output disabled-interjections.wav \
--data "{\"text\":\"<say-as interpret-as='interjection' enabled='false'>Oh</say-as>, in addition, the <say-as interpret-as='interjection' enabled='false'>aha</say-as> wasp is endemic to Australia.\"}" \
"{url}/v1/synthesize?voice=en-US_AllisonExpesssive"
强调词语
所有表达的声音都使用对话式风格,从上下文中自然地应用正确的调音。 但是,您可以使用 SSML <emphasis>
元素来指示要在合成音频中对一个或多个词进行更多或更少的强调。 应力的变化可以通过音高,定时,音量或其他声学属性的增加或减少来指示。
<emphasis>
元素支持接受下列其中一个值的可选 level
属性:
none
-阻止服务强调可能被强调的文本。moderate
-提供明显的文本强调。 如果省略level
属性,那么此值是缺省值。strong
-提供比moderate
级别提供的更重要的文本强调。reduced
-通过倾向于降低文本在音频中的显着性来取消强调文本。 这个层次与强调文本是相反的。
表 3 提供了 emphasis
元素的每个可用 level
的示例。 样本使用 en-US_MichaelExpressive
语音。 如果指定的级别不是其中一个受支持的值,那么使用 emphasis
元素的请求将失败。
强调程度 | 示例语句 | 音频样本 |
---|---|---|
不强调 | "I am going to give her the book." |
|
none |
"I am going to give her the <emphasis level='none'>book</emphasis>." |
|
moderate |
"I am going to <emphasis level='moderate'>give</emphasis> her the book." |
|
strong |
"I am going to <emphasis level='strong'>give</emphasis> her the book." |
|
reduced |
"I <emphasis level='reduced'>am going to give</emphasis> her the book." |
使用 SSML 强调一个词
以下示例 HTTP 请求使用 <emphasis>
元素和 level
的 moderate
(默认值)来强调句子中的 give
一词。 此示例使用 en-US_MichaelExpressive
语音。
IBM Cloud
curl -X POST -u "apikey:{apikey}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output strong-emphasis.wav \
--data "{\"text\":\"I am going to <emphasis level='moderate'>give</emphasis> her the book.\"}" \
"{url}/v1/synthesize?voice=en-US_MichaelExpesssive"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \
--header "Authorization: Bearer {token}" \
--header "Content-Type: application/json" \
--header "Accept: audio/wav" \
--output strong-emphasis.wav \
--data "{\"text\":\"I am going to <emphasis level='moderate'>give</emphasis> her the book.\"}" \
"{url}/v1/synthesize?voice=en-US_MichaelExpesssive"