我的想法是使用AWS Polly
从RSS
Feed中大声朗读一些新闻。根据{{3}},我理解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转换长文本字符串而不必将它们分成几百万个不同的部分?
任何有正确方向的小贴士都会受到赞赏,
由于
答案 0 :(得分:2)
输入文字的大小最多可为1500个结算字符(总共3000个字符)。 SSML标记不计入结算字符。
pricing examples似乎是为了让人们了解发表大型作品的成本相对较低,但这项工作实际上需要分成几组句子并提交给API,即只有接口 - SDK和CLI调用相同的SynthesizeSpeech
API。
答案 1 :(得分:1)
我没有特别的提示,没有分解文本,但我写了一篇文章,在NodeJS中做到这一点。如果您没有其他选择,请随时查看并发表评论!
How to handle more than 1500 characters with AWS Polly text-to-speech
答案 2 :(得分:1)
我相信你已经找到了答案,或者现在已经开始了。 但是我想在将来帮助这个问题。
我使用AWS Polly时遇到了同样的问题,不让我一次发送超过1500个字符。所以我写了一些javascript来帮助将文本分成230个字块,然后一个接一个地发送到API然后将所有mp3文件拼接在一起,然后我将它缓冲并播放。
这是我的Github: https://github.com/Aaronbest94/Polly-Character-Limitations
它不是最优雅的Javascript它可以工作,我希望它将帮助任何人在将来阅读这篇文章。
答案 3 :(得分:0)
如何创建长音频文件已在文档中创建: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-bucket用于(临时)存储。