Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 使用AWS Polly合成1500多个字符?_Amazon Web Services_Amazon Polly - Fatal编程技术网

Amazon web services 使用AWS Polly合成1500多个字符?

Amazon web services 使用AWS Polly合成1500多个字符?,amazon-web-services,amazon-polly,Amazon Web Services,Amazon Polly,我的想法是使用AWS Polly从RSS订阅源中大声朗读一些新闻。据我所知,Polly在字符转换方面非常灵活,其中一个例子是马克·吐温的《哈克贝利·费恩历险记》~600k字符 问题是,当我尝试将文章转换为语音时,我会遇到以下错误: An error occurred (TextLengthExceededException) when calling the SynthesizeSpeech operation: Maximum text length has been exceeded 我试

我的想法是使用AWS Polly从RSS订阅源中大声朗读一些新闻。据我所知,Polly在字符转换方面非常灵活,其中一个例子是马克·吐温的《哈克贝利·费恩历险记》~600k字符 问题是,当我尝试将文章转换为语音时,我会遇到以下错误:

An error occurred (TextLengthExceededException) when calling the SynthesizeSpeech operation: Maximum text length has been exceeded
我试图转换的文本大约有5000个字符

有没有任何方法(无论有没有API)可以使用Polly转换长字符串而不必将它们切割成数百万个不同的片段

任何方向正确的提示都将受到欢迎

谢谢

输入文本的大小最多可达1500个计费字符(总共3000个字符)。SSML标记不算作计费字符


这似乎是为了让人感觉到发表一部大型作品的成本相对较低,但这部作品实际上需要分成几组句子并提交给API,而API是唯一的接口——SDK和CLI调用同一个API。

我没有特别的技巧,可以不将文本分成几部分,但我写了一篇文章,介绍了如何在NodeJS中实现这一点。如果你没有其他选择,请随意评论


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

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

以下是我的Github:


这并不是最优雅的Javascript,因为它确实可以工作,我希望它能帮助将来阅读这篇文章的人

如何创建长音频文件在文档中创建:

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存储桶(临时)存储

您能否澄清一下,您将如何提交多个组(并最终获得一个连续的音频流)?如果我提交多个组并得到多个字节数组,我不认为它们可以简单地组合起来。@Howiecamp,我并不想暗示它们一定可以简单地连接起来。理想情况下,您应该使用一个库来处理所选格式的音频文件,以便元数据是正确的。至少有了mp3,它可能会比你预期的更好。明白了,谢谢。有人猜测为什么字符限制如此之低吗?我只能猜测,但我认为这是因为(显然)它是为有声应用程序和交互式语音应答(IVR)系统设计的,在这些系统中通常需要快速响应。超出某些限制,适当快速的转变是不可能的。我刚刚发现,你可以直接将多个MP3文件附加在一起(先读、后读等,然后将所有内容写入一个新文件),音频完全保留下来。建议做一些标记清理,但音频肯定能工作。