IBM Cloud Docs
使用自定义提示进行语音合成

使用自定义提示进行语音合成

“示范调音”功能是测试版功能,仅支持美式英语定制车型和语音。

要在语音合成请求中使用自定义提示,只需在请求文本中包含简单的 <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));
}

. . .