使用自定义提示进行语音合成
“示范调音”功能是测试版功能,仅支持美式英语定制车型和语音。
要在语音合成请求中使用自定义提示,只需在请求文本中包含简单的 <ibm:prompt>
元素即可。 该元素是SSML的 IBM 专用扩展。 该元素有一个属性,即 id
,它是一个字符串,用于标识预定义的提示:
<ibm:prompt id="{prompt_id}"/>
除了 创建自定义提示的规则 外,在语音合成请求中使用提示时还必须遵守以下限制:
- 合成请求中只能使用一个提示。 您不能在同一请求中包含两个提示。
- 在综合请求中,只能出现一个提示。 您不能在提示中添加其他文本。
- 提示只能包含固定文本,而不能包含可变数据,因为提示在不同用途下可能会发生变化。 例如,“您的账户余额为500美元”包含可变数据:“500美元” 账户余额是可变数据,根据特定用户的账户而变化。 提示信息需要显示“您的账户余额为”,第二个综合请求需要显示余额。
自定义提示的使用示例
以下示例显示了 在创建自定义提示时 创建的 goodbye
提示的语音合成请求。 示例使用 en-US_AllisonV3Voice
来播放提示音,并接受 audio/ogg;codecs=opus
音频格式的音频。 在生产应用中使用这些提示之前,您可以使用相同的呼叫来评估提示。
将 customization_id
替换为包含提示的自定义模型的GUID。 请注意,只有在创建提示时,而不是在合成请求中包含提示时,才会指定发言者ID。
以下示例使用 HTTP 界面 来合成提示:
-
这个示例调用 HTTP
POST /v1/synthesize
方法来合成提示:IBM Cloud
curl -X POST -u "apikey:{apikey}" \ --header "Content-Type: application/json" \ --header "Accept: audio/ogg;codecs=opus" \ --data "{\"text\":\"<ibm:prompt id='goodbye'/>\"}" \ "{url}/v1/synthesize?customization_id={customization_id}&voice=en-US_AllisonV3Voice"
IBM Cloud Pak for Data IBM Software Hub
curl -X POST \ --header "Authorization: Bearer {token}" \ --header "Content-Type: application/json" \ --header "Accept: audio/ogg;codecs=opus" \ --data "{\"text\":\"<ibm:prompt id='goodbye'/>\"}" \ "{url}/v1/synthesize?customization_id={customization_id}&voice=en-US_AllisonV3Voice"
-
这个示例调用
GET /v1/synthesize
方法来合成提示,提示必须经过 URL 编码:IBM Cloud
curl -X GET -u apikey:{apikey } \ --header "Accept: audio/ogg;codecs=opus" \ "{url}/v1/synthesize?customization_id={customization_id}&voice=en-US_AllisonV3Voice&text=%3Cibm%3Aprompt%20id%3D%22goodbye%22%2F%3E"
IBM Cloud Pak for Data IBM Software Hub
curl -X GET \ --header "Authorization: Bearer {token}" \ --header "Accept: audio/ogg;codecs=opus" \ "{url}/v1/synthesize?customization_id={customization_id}&voice=en-US_AllisonV3Voice&text=%3Cibm%3Aprompt%20id%3D%22goodbye%22%2F%3E"
以下 JavaScript 代码片段使用 WebSocket 界面 来合成提示:
var access_token = '{access_token}';
var wsURI = '{ws_url}/v1/synthesize'
+ '?access_token=' + access_token
+ '&customization_id={customization_id}'
+ '&voice=en-US_AllisonV3Voice';
var websocket = new WebSocket(wsURI);
function onOpen(evt) {
var message = {
text: '<ibm:prompt id="goodbye"/>',
accept: 'audio/ogg;codecs=opus'
};
websocket.send(JSON.stringify(message));
}
. . .