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

使用boto3调用AWS Transcribe生成字幕时Subtitles参数报错如何解决?

问题原因

报错是因为本地使用的boto3版本过旧,旧版本内置的AWS Transcribe接口定义未包含Subtitles参数,因此会被识别为非法参数。

解决步骤
  • 第一步:升级boto3及依赖库botocore到最新版本,执行命令:
    pip install --upgrade boto3 botocore
    升级完成后可以执行pip show boto3验证版本,只要boto3版本≥1.24.0即可支持字幕输出参数。
  • 第二步:修正代码中3处问题:
    1. 原代码Media参数后缺少等于号,需修正为Media={'MediaFileUri':job_uri}
    2. 如需输出SRT格式字幕,将Subtitles参数中Formats列表的值改为['srt'],也可以同时传入srt和vtt同时生成两种格式字幕
    3. 原循环逻辑中break语句位置错误,会导致状态打印和等待逻辑永远不会执行,需调整缩进顺序
修正后代码示例
import time
import boto3

# 替换为自身的密钥和区域配置
ACCESS_KEY = "你的AWS访问密钥"
SECRET_KEY = "你的AWS私有密钥"
region_name = "你使用的AWS区域,例如us-east-1"

s3 = boto3.client('s3', aws_access_key_id=ACCESS_KEY,aws_secret_access_key=SECRET_KEY)
transcribe = boto3.client('transcribe',aws_access_key_id=ACCESS_KEY, 
aws_secret_access_key=SECRET_KEY, region_name=region_name)
job_name = "kateri1234"
job_uri = "s3://transcribe-upload12/english.mp4"
transcribe.start_transcription_job(
    TranscriptionJobName=job_name,
    Media={'MediaFileUri':job_uri},
    MediaFormat='mp4',
    LanguageCode='en-US', 
    Subtitles={'Formats': ['srt']},
    OutputBucketName = "transcribe-output12"
)
while True:
    status = transcribe.get_transcription_job(TranscriptionJobName=job_name)
    job_status = status['TranscriptionJob']['TranscriptionJobStatus']
    if job_status in ['COMPLETED', 'FAILED']:
        print(f"任务最终状态:{job_status}")
        print(status)
        break
    print("Not ready yet...")
    time.sleep(5)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 05:57:03