AWS发布WhisperX深度学习容器,在SageMaker AI上实现带说话人标注的逐词转写
AWS博客介绍如何将WhisperX DLC部署到SageMaker AI实时和异步端点,提供逐词时间戳与说话人分离,并用约3分钟的空管录音做了演示。
AI解读:处理通话录音、会议、播客这类语音时,普通转写工具常有两个毛病:时间戳只精确到句子、误差好几秒;而且无法标注谁在说话。WhisperX在OpenAI Whisper基础上加了批处理推理、wav2vec2强制对齐和说话人分离,把这两个缺口补上。
AWS把Whisper、对齐模型和说话人分离权重打包成GPU就绪的WhisperX深度学习容器,部署到SageMaker AI时不用自己构建镜像。短交互音频走实时端点,长音频走高吞吐的异步端点。
真正用起来的关键限制是:实时端点受SageMaker AI 60秒响应上限约束,GPU变体必须手动指定AMI版本,否则端点会以零日志的CannotStartContainerError启动失败;容器一次只处理一个请求,扩容要靠加实例而不是加并发。
AWS机器学习博客发布了一篇实操文章,介绍如何把AWS WhisperX深度学习容器(DLC)部署到Amazon SageMaker AI的实时和异步端点,用于带逐词时间戳和说话人标注的语音转写。文章由Ayush Sharma撰写,属于AWS多模态DLC系列的一部分,该系列覆盖四个用例:vLLM-Omni的文本转语音、vLLM-Omni的图像与视频、WhisperX的语音转文本(即本篇),以及llama.cpp。
文章指出,通用语音转文本在真实工作负载上有两个短板:时间戳停留在话语级别、偏差可达数秒;以及没有可靠的“谁说了什么”。这会让转写稿难以搜索、加字幕、脱敏或大规模分析——缺少说话人标签会破坏合规审查,时间戳不精确会破坏字幕或脱敏。WhisperX用批处理推理、wav2vec2强制对齐实现逐词时间戳,并加入说话人分离来标注说话人。
WhisperX能做什么,AWS容器怎么打包
Whisper是OpenAI推出的开源自动语音识别模型家族,能把多种语言的语音准确转成文字,但时间戳只到短语或片段级别。WhisperX是在Whisper之上扩展的开源项目,为生产负载增加逐词时间戳、说话人标签和更快的转写速度,把原始音频变成结构化、可分析的转写稿。
AWS WhisperX DLC是一个持续维护的GPU就绪镜像,已经包含Whisper、对齐模型和说话人分离权重,不需要Hugging Face令牌。它遵循SageMaker AI标准服务契约:容器在8080端口提供服务,暴露POST /invocations用于推理、GET /ping用于健康检查。端点接收multipart/form-data请求,音频作为file部分,另可带language、diarize、response_format等字符串字段;SageMaker AI会把ContentType头(含multipart边界)原样传给容器。输出格式支持json、verbose_json、srt和vtt。
- 容器镜像:763104351884.dkr.ecr.<region>.amazonaws.com/whisperx:3.8.6-cu128-amzn2023-sagemaker(Python 3.12、CUDA 12.8、Amazon Linux 2023)
- 默认模型为large-v2;文章称无需构建自定义镜像即可部署。
实时还是异步:60秒上限与S3中转
SageMaker AI同时支持实时和异步端点,同一个WhisperX DLC可以走任一种模式,选择通常取决于音频长度和交互性。实时端点同步返回转写结果,适合能在SageMaker AI 60秒响应上限内完成的短交互音频;异步端点没有这个上限,输入输出通过Amazon S3中转,适合长音频和高吞吐批量任务。
文章用一段公共领域的空管通信录音做演示——2009年全美航空1549号班机“哈德逊河奇迹”迫降时的多方言无线电交换,带背景噪声、无线电压缩和快速呼号/频率朗读。约3分钟完整录音发给异步端点,40秒片段发给实时端点。
实时端点的调用链是:客户端组装multipart/form-data请求体调用InvokeEndpoint,SageMaker AI把请求转发到容器8080端口,容器内跑语音活动检测、批处理Whisper转写、wav2vec2强制对齐和说话人分离,然后把结果内联返回。异步端点则先由客户端把请求体上传到S3,再用对象位置调用InvokeEndpointAsync,立即拿到OutputLocation和FailureLocation,随后轮询输出路径、检查失败路径。容器同样是每个容器一次处理一个请求。
- 异步端点配置需加AsyncInferenceConfig,设置S3OutputPath和S3FailurePath,并把MaxConcurrentInvocationsPerInstance设为1,匹配容器的单worker限制。
- 异步推理的S3桶名需含“sagemaker”,因为默认的AmazonSageMakerFullAccess策略只授予这类桶的S3访问权限。
- 示例笔记本可在AWS Samples仓库获取,配合SageMaker AI Studio对自己的音频运行。
部署要点、成本与生产建议
文章强调在所有GPU变体上都必须设置InferenceAmiVersion=al2-ami-sagemaker-inference-gpu-3-1。缺少这个固定值,端点会以零日志的CannotStartContainerError启动失败,因为默认主机AMI的驱动无法启动这个CUDA 12.8镜像。权重是惰性加载的,所以要留足启动健康检查超时时间——实时端点示例设为900秒,异步端点示例设为1200秒。
推理被序列化为每容器一个请求,扩容应靠增加实例或容器,而不是提高并发。对于突发批量负载,可以在空闲时把异步端点缩容到零以降低成本,并用Amazon SNS完成通知代替密集轮询。GPU选型上,ml.g4dn.xlarge(T4)偏成本,ml.g5.2xlarge(A10G)留有余量;为避免容量不足错误,可在SageMaker AI实例池中列出最多五种实例类型,系统按优先级配置并在容量不足时自动回退。
- 清理:GPU端点会持续计费直到删除,用完需删除端点、端点配置和模型,并清理不再需要的S3输入输出产物。
- 安全:异步桶开启S3 Block Public Access、默认SSE-S3或SSE-KMS加密和BucketOwnerEnforced所有权;把执行角色限定到特定桶和键。
- 合规:通话和会议转写可能含个人身份信息(PII),需加密产物、限制访问,并利用逐词时间戳在下游做脱敏。
- 运维:用CloudWatch监控、对失败告警,并在冷启动行为前后重试;如需更深入的GPU和推理可见性,可开启SageMaker AI详细指标和Insights仪表板。