标签: amazon-polly

如何使用JavaScript SDK在AWS Polly中播放AudioStream响应?

这是我的脚本:

<script src="https://sdk.amazonaws.com/js/aws-sdk-2.7.13.min.js"></script>
<script>
    AWS.config.region = 'eu-west-1';
    AWS.config.accessKeyId = 'FOO';
    AWS.config.secretAccessKey = 'BAR';

    var polly = new AWS.Polly({apiVersion: '2016-06-10'});

    var params = {
        OutputFormat: 'mp3', /* required */
        Text: 'Hello world', /* required */
        VoiceId: 'Joanna', /* required */
        SampleRate: '22050',
        TextType: 'text'
    };

    polly.synthesizeSpeech(params, function(err, data) {
        if (err) console.log(err, err.stack); // an error occurred
        else     console.log(data);           // successful response
    });
</script>
Run Code Online (Sandbox Code Playgroud)

请求成功,我得到了这样的回复:

在此输入图像描述

我该如何使用这种回复?我知道响应是反序列化的音频,但我如何实际播放它,比如说,在HTML5音频元素中?

此外,这个答案解释了为什么这种类型的阵列适合音频数据:https://stackoverflow.com/a/26320913/1325575

javascript audio html5 amazon-web-services amazon-polly

10
推荐指数
2
解决办法
5125
查看次数

AWS Polly Java客户端提供错误:无法从链中的任何提供程序加载区域信息

我正在使用AWS的JAVA SDK来创建Polly客户端.像这样:

BasicAWSCredentials awsCreds = new BasicAWSCredentials("<IAM access Key>", "IAM secret key>");

    AmazonPollyClient apClient = (AmazonPollyClient) AmazonPollyClientBuilder.standard()
            .withCredentials(new AWSStaticCredentialsProvider(awsCreds))
            .build();


    SynthesizeSpeechRequest tssRequest = new SynthesizeSpeechRequest();
    tssRequest.setText(<text>);
    tssRequest.setVoiceId(<voiceid>);
    tssRequest.setOutputFormat(OutputFormat.Mp3);
    SynthesizeSpeechResult tssResult = apClient.synthesizeSpeech(tssRequest);
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,我收到以下错误消息:

线程"main"中的异常com.amazonaws.SdkClientException:无法从com.amazonaws.regions.AwsRegionProviderChain.getRegion(AwsRegionProviderChain.java:56)链中的任何提供者加载com.amazonaws.client.builder.AwsClientBuilder的区域信息.setRegion(AwsClientBuilder.java:319)com.amazonaws.client.builder.AwsClientBuilder.configureMutableProperties(AwsClientBuilder.java:295)at com.amazonaws.client.builder.AwsSyncClientBuilder.build(AwsSyncClientBuilder.java:38)at com. eoffice.aws.speech.Polly.main(Polly.java:42)

我使用IAM策略模拟器检查了凭据.这工作正常,权限还可以.

在ClientBuilder中设置Region的方法对于AmazonPollyClientBuilder是不可见的,因此我没有(Java SDK)方式来指定区域.

更新: 当我问defaultAwsREgionProviderChain时,我收到相同的错误消息

DefaultAwsRegionProviderChain defaultAwsRegionProviderChain = new DefaultAwsRegionProviderChain();
System.out.println(defaultAwsRegionProviderChain.getRegion());
Run Code Online (Sandbox Code Playgroud)

更新2: 当我在de .aws文件夹中创建一个包含以下内容的配置文件时:

[默认] region = eu-west-1

它有效,但我需要一种方法来设置它而不依赖于文件系统.

java amazon-web-services amazon-iam amazon-polly

8
推荐指数
2
解决办法
8860
查看次数

亚马逊波利的样品或现场演示?

我正在考虑使用亚马逊波利的文字转语音(TTS),但想用任意的例子(不是由亚马逊营销人员精心策划的那些)来评估它听起来多么自然.

我发现的只是一个非常有限的YouTube视频(每种语言只需几秒钟)

text-to-speech amazon-polly

7
推荐指数
2
解决办法
1万
查看次数

类型错误:&lt;botocore.response.StreamingBody 对象位于 0x7f81898af438&gt; 不可 JSON 序列化

我正在尝试使用 Python 创建一个AWS Lambda函数,该函数应从某些 API 接收文本并返回包含AudioStream对象的 JSON。为此,我使用AWS Polly。目前我可以AudioStream在我的机器上从AWS获取它并且工作正常。

为了使用 AWS Polly,我创建了一个特殊用户并授予他AmazonPollyReadOnlyAccess访问AmazonPollyFullAccess权限。

import boto3,json

polly= boto3.client('polly')
text='<speak>hey there wassup </speak>'

spoken_text=polly.synthesize_speech(Text=text,OutputFormat='mp3',VoiceId='Aditi',TextType='ssml')

newdata=json.dumps(spoken_text)
# return newdata
print(type(spoken_text))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用此代码片段以 JSON 格式返回响应时,我收到错误。

/usr/bin/python3.5 /talker/aditi.py
Traceback (most recent call last):
  File "/talker/aditi.py", line 9, in <module>
    newdata=json.dumps(spoken_text)
  File "/usr/lib/python3.5/json/__init__.py", line 230, in dumps
    return _default_encoder.encode(obj)
  File "/usr/lib/python3.5/json/encoder.py", line 198, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/usr/lib/python3.5/json/encoder.py", line 256, in iterencode
    return _iterencode(o, …
Run Code Online (Sandbox Code Playgroud)

json amazon-web-services boto3 python-3.5 amazon-polly

7
推荐指数
2
解决办法
1万
查看次数

使用 AWS Polly 合成超过 1500 个字符?

我的想法是用来AWS Polly大声朗读RSS提要中的一些新闻。根据此链接,我了解 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

谢谢

amazon-web-services amazon-polly

6
推荐指数
1
解决办法
4202
查看次数

将AWS API与Python一起使用以使用Polly Services

由于我没有成功将boto3集成到Google App Engine,我正在尝试直接使用文档使用API​​:因为Polly(文本到语音API)使用签名版本4进程,我指的是:

http://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

这是给定的脚本:

#http://docs.aws.amazon.com/general/latest/gr/sigv4-signed-request-examples.html

# AWS Version 4 signing example

# EC2 API (DescribeRegions)

# See: http://docs.aws.amazon.com/general/latest/gr/sigv4_signing.html
# This version makes a GET request and passes the signature
# in the Authorization header.
import sys, os, base64, datetime, hashlib, hmac
sys.path.append('../')
import requests # pip install requests

# Read AWS access key from env. variables or configuration file. Best practice is NOT
# to embed credentials in code.
access_key = os.environ.get('AWS_ACCESS_KEY_ID')
secret_key = os.environ.get('AWS_SECRET_ACCESS_KEY')
if access_key is None …
Run Code Online (Sandbox Code Playgroud)

python amazon-web-services amazon-polly

6
推荐指数
2
解决办法
896
查看次数

Alexa Skill中的亚马逊波莉?

是否有可能在Alexa技能中使用亚马逊Polly在翻译或其他多语言环境中提供例如2种语言的回应?如果是,谁有从lambda函数使用此服务的经验?

alexa aws-lambda amazon-polly

6
推荐指数
1
解决办法
1030
查看次数

亚马逊波利的语音速度控制?

我已经实现了这个Java程序来与Polly一起做TTS:http://docs.aws.amazon.com/polly/latest/dg/examples-java.html

我正在使用荷兰男声,这是好的和自然的,但我发现它有点太快了.我在Polly文档中看到语音速度可以使用SSML中的类似控件进行控制,如本页所示:http: //docs.aws.amazon.com/polly/latest/dg/ssml-synthesize-speech-cli html的

aws polly synthesize-speech \
--text-type ssml \
--text '<speak><prosody rate="x-slow">Hello world</prosody></speak>' \
--output-format mp3 \
--voice-id Joanna \
speech.mp3
Run Code Online (Sandbox Code Playgroud)

但是如何将它合并到我的Java中呢?我试过这个(用于Windows的格式调整):

text = "\<speak><prosody rate='x-slow'>" + text + "</prosody></speak> ^";
PollyDemo helloWorld = new PollyDemo(Region.getRegion(Regions.US_EAST_1));
InputStream speechStream = helloWorld.synthesize(text, OutputFormat.Mp3);
Run Code Online (Sandbox Code Playgroud)

但我在黑暗中摸索.有人可以帮忙吗?谢谢.

java text-to-speech amazon-polly

6
推荐指数
0
解决办法
1342
查看次数

亚马逊波利 API

我正在尝试使用 Amazon Polly REST API。
有人可以帮我做到这一点吗?
我正在使用 Java 和 OkHttp3 并尝试了以下方法:

    String url = "https://polly.us-west-2.amazonaws.com/v1/speech";
    String postBody = "{\"OutputFormat\":\"mp3\",\"Text\":\"Some text to listen\",\"TextType\":\"text\",\"VoiceId\":\"Joanna\"}";

    MediaType mediaType = MediaType.parse("application/json; charset=utf-8");

    OkHttpClient client = new OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .build();



    Request request = new Request.Builder()
            .url(url)
            .addHeader("Authorization", "AWS <accessKey>:<secretKey>")
            .post(RequestBody.create(mediaType, postBody))
            .build();

    Response response = client.newCall(request).execute();
Run Code Online (Sandbox Code Playgroud)

并收到“403禁止”的答复。然后我尝试在此服务上在线执行此 POST 请求并收到以下消息: 在此输入图像描述 我究竟做错了什么?我应该解决什么问题?谢谢!

亚马逊文档:链接
请不要建议我使用 SDK!


我读了这个这个这个这个这个,但仍然一无所知。

  1. 我知道我的密钥是秘密的,我需要使用加密。
  2. 我需要像这里描述的那样进行请求,但我无法理解如何发出自己的请求...我的参数:,,,,,,,,,, .....method=POST …

java amazon-web-services okhttp amazon-polly

6
推荐指数
1
解决办法
2004
查看次数

AWS Polly v3:SynthesizeSpeech 'mp3',AudioStream 不是 instanceOf Buffer

我正在将Javascript(节点)中的AWS Polly代码从v2转换为v3

使用AWS Polly v3 synthesizeSpeech()时,如何将返回的值转换data.AudioStream为 的实例Buffer

以下 JavaScript 代码使用v2运行,返回的audio.AudioStream是 的实例Buffer

const { Polly } = require('aws-sdk');

// Create an Polly client
const polly = new Polly({
    signatureVersion: 'v4',
    region: process.env.AWS_DEFAULT_REGION
});

const params = {
    OutputFormat: 'mp3',
    VoiceId: voiceId,
    TextType: 'ssml',
    Text: '<speak><prosody rate="85%">Hello World</prosody></speak>'
};

// ***

return await polly
    .synthesizeSpeech(params)
    .promise()
    .then(data => {
         if (data.AudioStream instanceof Buffer) {
             return …
Run Code Online (Sandbox Code Playgroud)

node.js amazon-polly

6
推荐指数
1
解决办法
2344
查看次数