You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用boto3调用Amazon Polly遇安全令牌无效错误,需AWS CLI吗?

问题解决指南:Amazon Polly TTS 安全令牌无效错误

核心结论

UnrecognizedClientException 本质是AWS无法验证你的身份凭证,你完全不需要强制安装AWS CLI,下面是具体排查和解决步骤:

一、凭证有效性排查

  • 确认aws_access_key_id和aws_secret_access_key无输入错误:检查是否包含空格、多余字符,密钥是否为当前有效状态(未被删除、过期,若为临时凭证需额外传入aws_session_token参数)
  • 验证IAM用户权限:登录AWS控制台,找到对应IAM用户,确认其权限策略包含AmazonPollyFullAccess或至少polly:SynthesizeSpeech操作权限

二、无需AWS CLI的凭证配置方式

除了代码硬编码(不推荐生产环境),可手动创建本地凭证文件:

  1. 在%USERPROFILE%目录下新建.aws文件夹
  2. 在.aws内创建credentials文件,格式如下:
[default]
aws_access_key_id=你的密钥ID
aws_secret_access_key=你的访问密钥
  1. 可选创建config文件指定默认区域:
[default]
region=eu-north-1

之后代码可简化为自动读取凭证:

import boto3

polly_client = boto3.client('polly')
response = polly_client.synthesize_speech(
    Text='Hello, this is a sample text.',
    OutputFormat='mp3',
    VoiceId='Joanna'
)

with open('output.mp3', 'wb') as file:
    file.write(response['AudioStream'].read())

三、添加SSML支持

要启用SSML,只需修改Text参数并指定TextType='ssml':

response = polly_client.synthesize_speech(
    Text='<speak>Hello, this is <emphasis level="strong">SSML-enabled</emphasis> speech.</speak>',
    TextType='ssml',
    OutputFormat='mp3',
    VoiceId='Joanna'
)

四、区域服务验证

确认AWS账户在eu-north-1区域已启用Polly服务:登录AWS控制台,切换至该区域,搜索Polly并确认能正常进入服务页面

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 20:09:57