语音实时合成服务在输出音频流的同时,可输出每个汉字/英文单词在音频中的时间位置,即时间戳,时间戳功能又叫字级别音素边界接口。该时间信息可用于驱动虚拟人口型、做视频配音字幕等。
注意
只有支持字级别音素边界接口的发音人才有此功能。
参数设置
在客户端设置请求参数enable_subtitle
为true
,开启时间戳功能。
以Java SDK为例,其设置⽅式如下。
// 是否开启字幕功能(返回对应文本的相应时间戳),默认不开启。
synthesizer.addCustomedParam("enable_subtitle", true);
服务端响应
服务端返回的带字幕信息的响应MetaInfo事件。
参数 | 类型 | 说明 |
---|---|---|
subtitles | List | 时间戳信息。 |
其中,SubtitleItem格式如下。
参数 | 类型 | 说明 |
---|---|---|
text | String | ⽂本信息。 |
begin_time | Integer | ⽂本对应tts语⾳开始时间戳,单位ms。 |
end_time | Integer | ⽂本对应tts语⾳结束时间戳,单位ms。 |
示例
{
"header": {
"message_id": "05450bf69c53413f8d88aed1ee60****",
"task_id": "640bc797bb684bd6960185651307****",
"namespace": "SpeechSynthesizer",
"name": "MetaInfo",
"status": 20000000,
"status_message": "GATEWAY|SUCCESS|Success."
},
"payload": {
"subtitles": [
{
"text": "xx",
"begin_time": 130,
"end_time": 260
},
{
"text": "xx",
"begin_time": 260,
"end_time": 370
}
]
}
}
注意事项
TTS服务返回的字幕是基于发音的,所以不能直接用于上屏,需要使用您的原始文本。
如果用于上屏,可以基于返回的结果,定位每个句子的句首和句尾时间戳。