微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决亚马逊 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 举报,一经查实,本站将立刻删除。