【问题标题】:Synthesize more than 1500 characters using AWS Polly?使用 AWS Polly 合成超过 1500 个字符?
【发布时间】:2016-12-25 01:01:50
【问题描述】:

我的想法是使用AWS Polly 来朗读来自RSS 提要的一些新闻。根据this link,我知道Polly 在要转换的字符方面非常灵活,例如"Adventures of Huckelberry Finn" by Mark Twain ~600k characters 问题是当我尝试将我的文章转换为语音时,我收到以下错误:

An error occurred (TextLengthExceededException) when calling the SynthesizeSpeech operation: Maximum text length has been exceeded

我尝试转换的文本大约有 5000 个字符。

有没有什么方法(使用或不使用 API)可以使用 Polly 转换长文本字符串,而不必将它们切割成数百万个不同的片段?

任何正确方向的提示将不胜感激,

谢谢

【问题讨论】:

    标签: amazon-web-services amazon-polly


    【解决方案1】:

    输入文本的大小最多为 1500 个计费字符(总共 3000 个字符)。 SSML 标签不计入计费字符。

    http://docs.aws.amazon.com/polly/latest/dg/limits.html

    pricing examples 似乎是为了给大型作品配音成本相对较低的感觉,但实际上需要将作品分成几组句子并提交给 API,这是唯一的接口-- SDK 和 CLI 调用相同的SynthesizeSpeech API。

    【讨论】:

    • 您能否说明如何提交多个组(并最终得到一个连续的音频流)?如果我提交多个组并返回多个字节数组,我认为它们不能简单地组合。
    • @Howiecamp,我并不打算暗示它们一定可以简单地连接起来。理想情况下,您会使用库来处理您选择的格式的音频文件,以便元数据正确。至少,对于 mp3,它可能会比您预期的效果更好。
    • 明白了,谢谢。猜猜为什么字数限制这么低?
    • 我只能推测,但我认为这是因为它(显然)是为/针对谈话应用程序和交互式语音响应 (IVR) 系统而设计的(如对 μ-law 编解码器的支持所证明的那样),其中通常需要快速响应。超出某个限制,就不可能实现适当快速的周转。
    • 我刚刚发现,您实际上可以将多个 MP3 文件附加在一起(首先读取、读取第二个等,然后将所有文件写入一个新文件),并且完全保留了音频。建议进行一些标签清理,但音频确实有效。
    【解决方案2】:

    文档中描述了如何创建长音频文件:https://docs.aws.amazon.com/polly/latest/dg/longer-cli.html

    aws-CLI 调用可能如下所示:

    aws polly start-speech-synthesis-task \
    --region eu-central-1 \
    --endpoint-url "https://polly.eu-central-1.amazonaws.com/" \
    --output-format mp3 \
    --output-s3-bucket-name your-bucket-name \
    --output-s3-key-prefix optional/prefix/path/file \
    --voice-id Hans \
    --text-type ssml \
    --text file://output.xml \
    --speech-mark-types='["sentence", "word", "ssml"]' \
    

    如您所见,您将需要一个 S3 存储桶用于(临时)存储。

    【讨论】:

    • 这允许您处理具有相同功能的“最多 100,000 个计费字符(或总共 200,000 个字符)”的文本,但请求可能需要更长时间,因为处理是异步的。处理“一旦系统资源可用”就完成[docs.aws.amazon.com/polly/latest/dg/asynchronous.html]
    【解决方案3】:

    如果不将文本分成几段,我没有什么特别的提示,但是我写了一篇文章,介绍了在 NodeJS 中实现它的方法。如果您没有其他选择,请随时查看和评论!

    How to handle more than 1500 characters with AWS Polly text-to-speech

    【讨论】:

      【解决方案4】:

      我相信您现在已经找到了答案或继续前进。 但我想在未来帮助任何人解决这个问题。

      我在使用 AWS Polly 时遇到了同样的问题,不允许我一次发送超过 1500 个字符。所以我写了一些 javascript 来帮助将文本分成 230 个单词的块,然后一个接一个地发送到 API,然后在缓冲并播放之前将所有 mp3 文件拼接在一起。

      这是我的 Github: https://github.com/Aaronbest94/Polly-Character-Limitations

      它不是最优雅的 Javascript,但它确实可以工作,我希望它对以后阅读本文的人有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多