1. 前言
随着互联网内容形态的多样化发展,用户生成内容(UGC)呈现爆发式增长。社交平台、直播、短视频、语聊房等应用场景中,海量的音视频内容需要进行实时审核,以维护平台安全与用户体验。
然而,企业在构建审核系统时通常面临以下挑战:
- 审核准确性:需要精准识别多种媒介中的违规内容,减少误判率
- 实时性要求:在直播等场景要求尽可能快地获取结果
- 成本压力:审核成本高昂,自建审核平台投入大
- 规则定制:不同场景下的审核标准各异,需要灵活配置
- 系统稳定性:需要支持高并发且保证服务可用性
基于此,我们将介绍如何利用开源项目,以及亚马逊云科技的服务,包括 Amazon Bedrock、Amazon Rekognition、Amazon SageMaker 等,构建一个性价比高、支持多模态内容审核、响应延迟低、规则可配置的直播、存量音视频审核解决方案。
2.直播审核简介
2.1 直播审核整体架构图
本方案支持基于实时视频流的审核,仅需提供播放链接,即可进行审核。
2.2 直播审核亚马逊云科技架构图
服务简介:
- Amazon Lambda:是一项无服务器计算服务,可执行您的代码,可快速帮助您将想法转化为应用程序。
- Amazon SQS:适用于微服务、分布式系统和无服务器应用程序的完全托管的消息队列。
- Amazon DynamoDB:无服务器、NoSQL、完全托管的数据库,在任何规模下均具有个位数毫秒级的性能。
- Amazon ECS:是一项完全托管式容器编排服务,可帮助您更高效地部署、管理和扩展容器化的应用程序。
- Amazon Fargate:是一种无服务器的计算引擎,可让您专注于构建应用程序,而无需管理服务器。
- Amazon Rekognition:利用机器学习技术自动执行图像识别和视频分析并降低成本,支持内容审核、人脸识别、面孔比较、名人识别等诸多功能。
- Amazon Sagemaker:是一站式机器学习平台,支持大规模构建、训练和部署机器学习模型。我们可以在 Amazon SageMaker 中部署 ASR 模型(如 Whipser)。
- Amazon Bedrock: 是一项完全托管的服务,通过 API 即可轻松调用 Amazon Nova、Anthropic Claude、Meta Llama、Stable Diffusion 等前沿的高性能基础模型。我们可以通过 Amazon Bedrock 调用 Amazon Bedrock Marketplace 中的 ASR 模型(如 Whisper)。
架构简介:
A. 通过 ApiGateway 发送审核请求到 CreateTask Lambda。
B. CreateTask Lambda 创建 ECS Fargate 任务用于处理直播流(为降低延迟 ECS 中可预置部分 Fargate)。
C. CreateTask Lambda 将审核任务信息(播放链接、用户信息等)存入 ModerationTaskSQS 以及 DynamoDB。
D. ECS 中的 Fargate 服务从 ModerationTaskSQS 获取消息,并处理直播流。
E. ECS 从直播流中截取图片/视频(直播视频的视觉审核,可通过截取直播视频中的图片或者短视频进行审核)、音频文件存入 S3,并将音频/图片/视频审核信息存入 SQS。
F. 图片/视频审核的 SQS 触发 Image/Video ModerationLambda,调用 Bedrock 中的模型/Rekogniton 进行审核。
G. 音频审核的 SQS 触发 Audio ModerationLambda,首先调用 SageMaker 中的 Whisper 进行语音识别,然后调用 Bedrock 中的模型进行审核。
H. 音频/图片/视频审核审核完成后,会将信息存入 Dynamodb,将违规素材存入 S3,同时将信息存入 MessagePush SQS。SQS 会调用 MessagePush Lambda 给用户的回调服务器推送消息。
方案费用:
本方案采用无服务器架构,只需为用量付费,并可享受部分免费套餐。其中部分费用如下:
- Amazon Nova Micro:进行文本审核,每 1000token 仅需 $0.000035。
- Amazon Nova Lite:进行图片/视频审核,每 1000token 仅需 $0.00006。
- Amazon DynamoDB:免费提供 25GB 的存储量以及每月最多 2 亿次读/写请求(永久)。
- Amazon SQS:每月免费提供 100 万的请求(永久)。
- Amazon Api Gateway:每月接收 100 万次 API 调用(12 个月内)。
- Amazon Lambda:每月免费提供 100 万个请求(永久)。
- Amazon Rekognition:每月可以免费使用 Rekognition 分析 1000 张图像(12 个月内)。
直播审核涉及的技术点主要有直播流处理、音频审核、文本审核、图像审核。
2.3 直播流处理
我们可以通过 FFmpeg 处理直播流。针对直播中的声音,可以通过 FFmpeg 截取音频。针对直播中的图像,可以通过 FFmpeg 截取图片或视频(无声)。
FFmpeg 是一个强大的多媒体处理工具,常用于音视频转码、剪辑、格式转换等。在 AWS 上,除传统虚拟机外,还支持通过 Lambda 或 Fargate 等 Serverless 服务来部署 FFmpeg。通过 Lambda 和 Fargate 部署 FFmpeg 的区别如下:
- Amazon Lambda 部署 FFmpeg:适用于短时、低频的处理任务,按使用量计费,无需管理服务器,支持高并发。但受 15 分钟执行时间限制,适用于短音视频处理。
- Amazon Fargate 部署 FFmpeg:适用于长时间、高性能处理任务,自动扩展计算资源。无需管理容器。相比 Lambda,适合复杂和大规模需求的处理。
通过 FFmpeg 从直播流中截取音频的代码如下:
#音频截帧时长
audio_segment_duration=10
audio_dir ="audio"
media_url="lee.mp4"
stream = ffmpeg.input(media_url,)
audio_output_pattern = os.path.join(audio_dir, '%06d.wav')
audio_output = ffmpeg.output(stream['a:0'], audio_output_pattern,
acodec='pcm_s16le',
ar=16000,
ac=1,
f='segment',
segment_time=audio_segment_duration,
reset_timestamps=1
)
通过 FFmpeg 从直播流中截取图片的代码如下:
#图片截帧频率
snapshot_interval=1
img_dir = "image"
stream = ffmpeg.input(media_url,)
image_output_pattern = os.path.join(img_dir, '%06d.jpg')
image_output = ffmpeg.output(stream['v'], image_output_pattern,
vf=f'fps=1/{snapshot_interval}',
start_number=0
)
通过 FFmpeg 从直播流中截取无声视频的示例代码如下:
#### 小标题
video_output = ffmpeg.output(stream.video, output_pattern,
c='copy',
f='segment',
segment_time=segment_duration,
reset_timestamps=1
)
下一步我们需要分别对音频及图像(图片或无声视频)进行审核。
2.4 音频审核
音频审核通常需要先将语音转换为文本,再利用文本审核技术识别违规内容。
在本方案中我们在 Audio Moderation Lambda 中调用 SageMaker 中的 Whipser 进行语音识别获取文本。然后调用 Bedrock 中的 Nova/Claude 对文本进行审核。
在亚马逊云科技有多种方式均可实现语音识别,我们以 SageMaker 部署自定义 ASR 模型(如 Whisper)为例。首先在 SageMaker 中创建笔记本实例。
然后在 SageMaker Notebook 中运行以下代码即可部署 Whipser 推理端点。
import sagemaker
import boto3
from sagemaker.huggingface import HuggingFaceModel
try:
role = sagemaker.get_execution_role()
except ValueError:
iam = boto3.client('iam')
role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']
hub = {
'HF_MODEL_ID':'openai/whisper-large-v3-turbo',
'HF_TASK':'automatic-speech-recognition'
}
huggingface_model = HuggingFaceModel(
transformers_version='4.37.0',
pytorch_version='2.1.0',
py_version='py310',
env=hub,
role=role
)
my_endpoint_name="content-moderation-endpoint-whisper"
predictor = huggingface_model.deploy(
initial_instance_count=1,
instance_type='ml.g4dn.xlarge' ,
endpoint_name=my_endpoint_name
)
在审核项目中使用以下代码即可以调用 SageMaker Endpoint 中的 Whisper 将音频转为文本。
with open(local_file, 'rb') as audio_file:
audio_data = audio_file.read()
sagemaker_runtime = boto3.client('sagemaker-runtime', REGION_NAME)
response = sagemaker_runtime.invoke_endpoint(
EndpointName=WHISPER_ENDPOINT_NAME,
ContentType='audio/x-audio',
Body=audio_data
)
print(json.loads(response['Body'].read().decode()))
为了提高 Whisper 转录的效率以及提高 Whisper 的准确率,可以在调用 Whisper 之前将音频使用 VAD 进行预处理,从音频中提取人声,然后再将音频文件交给 Whisper 进行识别。
除在 SageMaker 中部署 ASR 模型的方式外,亚马逊云科技还提供多种语音识别(ASR)相关的服务,助力高效音频审核:
- Amazon Transcribe:完全托管的语音识别服务,基于强大语音模型,为流式或录制音频提供高精度转录,适用于大规模、高实时性场景。
- Amazon Bedrock:支持通过 API 访问领先的模型,无需管理基础设施,即可调用模型(如 Whisper)。
2.5 文本审核
通过语音识别获取到音频文本后,可以通过 Amazon Bedrock 调用 Nova/Claude 等大语言模型对文本审核。
通过大语言模型进行文本审核的示例提示词如下:
你是一个论坛的审核员,需要维护网络环境,请对下面用户提供的内容进行文本审核,判断是否涉及色情、仇恨、赌博、辱骂等违规内容。我们会根据你反馈的内容,选择是否封禁这段内容。
用户提供的内容为:
xxxxxxxxxxxxxxx
通过 Amazon Bedrock 进行文本审核的优势在于高效性、准确性和可扩展性。
- 它能快速处理海量文本,识别敏感信息、违规内容及潜在风险。
- LLM 具备上下文理解能力,能更精准地判断语境,减少误判率。
- LLM 支持多语言,适应性强
- LLM 能根据规则通过修改提示词的方式自定义优化审核标准。
此外,使用 Amazon Bedrock 进行审核,极具性价比。使用 Nova Micro 进行文本审核,每 1000token 仅需 $0.000035。
*许多基础模型在 API 调用中会重复使用提示词的某些部分。通过提示缓存,可允许在请求中缓存这些重复的提示前缀。该缓存允许模型跳过重新计算匹配前缀的步骤。对于支持的模型,Amazon Bedrock 中的提示缓存可将成本降低多达 90%,并将延迟减少高达 85%。
2.6 图像审核
在亚马逊云科技上我们有两种技术路线可以用来进行图像审核:Amazon Bedrock 中的多模态 LLM 或 Amazon Rekognition 服务,他们的大致特点如下:
Amazon Rekognition:
- 利用机器学习技术自动执行图像识别和视频分析并降低成本,支持内容审核、人脸识别、面孔比较、名人识别等诸多功能。
- Rekognition 默认支持 31 个类别的图片审核,并支持用户自定义标签。
- Rekognition 根据用量每张图审核的价格为 001$-0.00025$。
Amazon Bedrock:
- Bedrock 中的 Nova/Claude 模型支持对图片进行批量审核。
message_list = [
{
"role": "user",
"content": [
{
"text": "下方图片为image 1"
},
{
"image": {
"format": "png",
"source": {
"bytes": "base64_string"
}
}
},
{
"text": "下方图片为image 2"
},
{
"image": {
"format": "png",
"source": {
"bytes": "base64_string"
}
}
},
{
"text": "请对图片进行审核."
}
]
}
]
- Bedrock 中的 Nova Lite/Pro 模型支持视频(无声)进行审核。
#方式1:直接上传视频进行审核
message_list = [
{
"role": "user",
"content": [
{
"video": {
"format": "mp4",
"source": {"bytes": base64_string},
}
},
{
"text": "请对该视频进行审核."
},
],
}
]
#方式2:支持直接审核S3中的视频
{
"video": {
"format": "mp4",
"source": {
"s3Location": {
"uri": "s3://my_bucket/my_video.mp4"
}
}
}
}
LLM 审核支持自定义提示词,对审核的规则进行调整。
- Amazon Nova Lite 每 1000 token $0.00006。
- Amazon Nova Pro 每 1000 token $0.0008。
*通过 Nova 进行视频审核,极具性价比。下表列出了每个视频长度的帧采样和令牌使用率的一些近似值:
3. 存量音视频审核简介
本方案除直播审核外,同样支持存量音视频的审核。
3.1 长视频/音频审核
如果音视频时长大于 15 分钟,建议使用 ECS 进行对音视频进行截取。
A. 将文件存入 S3,S3 通过事件触发 ModerationTaskSQS。
B. ModerationTaskSQS 触发 CreateTask Lambda。
C. CreateTask Lambda 创建 ECS 任务用于处理音视频文件。
D. AudioVideo ProcessECS 将截取后的音视频文件存入 S3,并将审核信息存入 DynamoDB,同时将审核任务信息存入图像/视频/音频审核的 SQS。
E. 音频/图片/视频审核审核完成后,会将信息存入 DynamoDB。
3.2 短视频/短音频审核
如果音视频时长小于等于 15 分钟,建议使用 Lambda 进行对音视频进行审核。
A. 将文件存入 S3,S3 通过事件触发图像/视频/音频审核的 SQS,然后调用 Lambda 进行审核。
B. 音频/图片/视频审核审核完成后,会将信息存入 DynamoDB。
4. 部署与测试
本方案支持通过 CDK 进行部署。
4.1 直播审核测试
4.1.1 准备直播流
1、在 IVS 控制台创建直播通道
2、在直播通道详情页面,获取推流地址、流密钥与播放地址
3、在 OBS 等推流软件,配置推流密钥/推流地址
*Amazon IVS :互动视频服务,采用与全球知名直播流媒体平台 Twitch 相同的技术,只需几分钟即可构建流媒体互动直播。
4.1.2 直播审核
1、在 OBS 软件点击开启直播
2、调用直播审核接口即可进行直播审核
curl --location 'https://xxxxxx/api/submit_moderation' \
--header 'user_id: [YOUR_USER_ID]' \
--header 'token: [YOUR_TOKEN]' \
--header 'Content-Type: application/json' \
--data '{
"url":"https://xxxxxx/xxx/xxx.m3u8"
}'
4.2 存量音视频审核测试
在 S3 存储桶中创建 s3_audio_moderation、s3_video_moderation 文件夹。将音视频文件放入对应的目录即可实现审核。
5. 总结
本文介绍了一种基于亚马逊云服务、ffmpeg 的音视频审核方案。该方案为音视频审核提供了完整的端到端解决方案和参考实现。基于 AWS Serverless 服务,在确保高可用的同时,用户只需为实际用量进行付费。基于 Amazon Bedrock 等服务,可以实现高效的审核,有效帮助用户实现降本增效。
希望本文能够为大家进行音视频审核时提供灵感。如果你对该项目感兴趣,欢迎关注、试用并提出宝贵建议,共同推动审核技术的发展!
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。
参考链接
内容审核项目地址:https://github.com/aws-samples/sample-for-content-moderation
Amazon Bedrock:https://aws.amazon.com/cn/bedrock
Amazon Nova:https://aws.amazon.com/cn/ai/generative-ai/Nova
Amazon Rekogniton:https://aws.amazon.com/cn/rekognition
Amazon Sagemaker:https://aws.amazon.com/cn/sagemaker
Amazon IVS:https://aws.amazon.com/cn/ivs
Prompt Caching:https://aws.amazon.com/cn/bedrock/prompt-caching
本篇作者
本期最新实验《多模一站通 —— Amazon Bedrock 上的基础模型初体验》
✨ 精心设计,旨在引导您深入探索Amazon Bedrock的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式AI模型能力。
⏩️[点击进入实验] 即刻开启 AI 开发之旅
构建无限, 探索启程!
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。