亚马逊 AWS Polly:TTS 确切持续时间

问题描述

在亚马逊 AWS Polly 中,有一个 SSML 标签 <prosody amazon:max-duration="time duration"> 用于设置语音的最长持续时间 (https://docs.aws.amazon.com/polly/latest/dg/supportedtags.html#maxduration-tag)。这样我就可以加快演讲速度。 是否还可以设置最小持续时间(并在没有讲话的情况下填充休息时间 - 不拉伸讲话),以便最大持续时间和最小持续时间的组合是精确的持续时间?

我的用例是这个

系统应该以固定的间隔读取段落,以便匹配视频序列。让我们每 10 秒说一个句子。

可能的解决方法 A

首先,我可以为文本(例如 "<speak>Hello World! How are you?</speak>"生成一个语音标记文件,没有任何中断。这可能会导致这样的事情:

{"time":0,"type":"sentence","value":"Hello World!"}
{"time":840,"value":"How are you?"}
{"time":1265,"type":"viseme","value":"sil"}

然后我可以计算并添加一些中断,以便句子时间填满间隔(在这种情况下为 10 秒减去 840 毫秒 = 9160 毫秒):"<speak>Hello World!<break time="9160ms"/>How are you?<break time="9575ms"/></speak>" 这应该导致这样的事情:

{"time":0,"value":"Hello World!"}
{"time":10000,"value":"How are you?"}
{"time":20000,"value":"sil"}

这种方法的问题在于它使用了两个请求,因此需要双倍的费用。

可能的解决方法 B

我可以为每个句子生成一个 ogg 文件,并使用外部工具将所有 ogg 文件组合成一个完整的音频文件(我还不知道 - 也许 ffmpeg 有一些功能?)。

这种方法的问题在于发音不同,因为 Polly 不知道有一个完整的句子。示例:同一 Polly 请求中的 Hello world,how are you? 听起来可能与两个单独请求中的 Hello worldHow are you? 不同。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)