构建基于AI的自动化摘要系统
从非结构化数据中提取有意义的见解对许多组织来说存在重大挑战。会议录音、客户互动和访谈包含宝贵的商业智能,但由于手动审查的时间和经济成本过高,这些信息大多无法被有效利用。组织经常难以从这些互动中高效捕获和使用关键信息,这不仅导致生产力差距,还错失了利用关键决策信息的机会。
本文介绍了一种无服务器会议摘要系统,利用某中心Bedrock和某中心Transcribe的先进功能,将音频录音转换为简洁、结构化和可操作的摘要。通过自动化这一过程,组织可以节省大量时间,同时确保关键见解、行动项目和决策被系统化捕获并可供利益相关者访问。
解决方案概述
该综合音频处理系统结合了强大的云服务,为从音频内容中提取见解创建了无缝的端到端解决方案。架构包含两个主要组件:处理用户交互和文件上传的用户友好型前端界面,以及将原始音频转换为有价值结构化信息的后端处理管道。这种无服务器架构促进了可扩展性、可靠性和成本效益,同时提供有洞察力的AI驱动分析能力,无需专业的基础设施管理。
前端工作流程
- 用户通过基于React的前端上传音频文件,使用某中心CloudFront进行全球分发
- 某中心Cognito提供安全的用户认证和授权
- 应用程序通过某中心AppSync GraphQL API检索会议摘要和统计信息,该API调用某中心Lambda函数进行查询
处理流程
- 音频文件存储在某中心S3存储桶中
- 当音频文件上传到S3的audio/{user_id}/前缀时,S3事件通知向某中心SQS队列发送消息
- SQS队列触发Lambda函数,启动处理工作流程
- 某中心Step Functions以内置错误处理和重试机制协调整个转录和摘要工作流程
- 某中心Transcribe将语音高精度转换为文本
- 使用基础模型(特别是Anthropic的Claude)生成全面的结构化摘要
- 结果同时存储在某中心S3(原始数据)和某中心DynamoDB(结构化数据)中,以实现持久性和快速检索
项目结构
会议音频摘要项目遵循包含前端和后端组件的结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
sample-meeting-audio-summarizer-in-terraform/
├── backend/
│ ├── functions/ # Lambda函数代码
│ │ ├── audio-processing/ # 音频处理函数
│ │ ├── authentication/ # 认证函数
│ │ ├── data-access/ # 数据访问函数
│ │ ├── queue-processing/ # SQS队列处理函数
│ │ ├── summarization/ # 摘要生成函数
│ │ ├── transcription/ # 转录函数
│ │ └── zipped/ # 用于部署的压缩Lambda函数
│ └── terraform/ # 基础设施即代码
│ ├── modules/ # Terraform模块
│ │ ├── api/ # AppSync GraphQL API
│ │ ├── auth/ # Cognito认证
│ │ ├── compute/ # Lambda函数
│ │ ├── messaging/ # SQS队列和S3通知
│ │ ├── network/ # CloudFront和S3网站
│ │ ├── orchestration/ # Step Functions
│ │ ├── queue-processor/ # 队列处理Lambda
│ │ └── storage/ # S3和DynamoDB
│ ├── main.tf # 主Terraform配置
│ ├── outputs.tf # 输出值
│ ├── variables.tf # 输入变量
│ └── terraform.tfvars # 变量值
├── docs/ # 文档和架构图
├── frontend/ # React Web应用程序
│ ├── public/ # 公共资源
│ └── src/ # React应用源代码
│ ├── components/ # React组件
│ ├── graphql/ # GraphQL查询和变更
│ ├── pages/ # 页面组件
│ └── services/ # 服务集成
└── scripts/ # 部署和实用脚本
├── deploy.sh # 主部署脚本
└── zip-lambdas.sh # 压缩所有后端lambda的脚本
|
解决方案使用Terraform以一致和可重复的方式定义和配置云基础设施。主Terraform配置协调各个模块:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
# 计算模块 - Lambda函数
module "compute" {
source = "./modules/compute"
aws_region = var.aws_region
aws_account = data.aws_caller_identity.current.account_id
meeting_statistics_table_name = var.meeting_statistics_table_name
meeting_summaries_table_name = var.meeting_summaries_table_name
cognito_user_pool_id = module.auth.cognito_user_pool_id
iam_roles = module.auth.iam_roles
storage_bucket = module.storage.storage_bucket
model_id = var.model_id
inference_profile_prefix = var.inference_profile_prefix
}
# 编排模块 - Step Functions
module "orchestration" {
source = "./modules/orchestration"
aws_region = var.aws_region
aws_account = data.aws_caller_identity.current.account_id
storage_bucket = module.storage.storage_bucket
iam_roles = module.auth.iam_roles
lambda_functions = module.compute.lambda_functions
}
# 队列处理器模块 - ProcessTranscriptionQueueFunction Lambda
module "queue_processor" {
source = "./modules/queue-processor"
storage_bucket = module.storage.storage_bucket
state_machine_arn = module.orchestration.state_machine_arn
lambda_function_transcription_role = module.auth.iam_roles.lambda_function_transcription_role
depends_on = [
module.storage,
module.orchestration
]
}
|
音频处理工作流程
解决方案的核心是一个Step Functions工作流程,以具有适当错误处理的弹性方式协调音频文件的处理。工作流程处理语言检测、转录、摘要生成和通知。
某中心Bedrock用于摘要生成
摘要组件由某中心Bedrock提供支持,该服务提供对最先进基础模型的访问。解决方案使用Anthropic的Claude 3.7 Sonnet版本1生成全面的会议摘要:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
prompt = f"""即使这是会议讨论的原始转录稿,缺乏清晰的结构和上下文,包含多个发言者、不完整的句子和离题的话题,请尽可能详细地提供清晰彻底的分析。不要遗漏任何信息。尽可能捕获更多信息。在摘要中使用项目符号而不是破折号。重要:对于所有部分标题,使用纯文本,无markdown格式(无#、##、**或*符号)。每个部分标题应全部大写后跟冒号。例如:"TITLE:"而不是"# TITLE"或"## TITLE"。
关键指令:不要在响应中使用任何markdown格式符号,如#、##、**或*,特别是TITLE部分。TITLE部分必须以"TITLE:"开头,而不是"# TITLE:"或任何带有markdown符号的变体。
严格按照以下格式格式化响应:
TITLE: 给会议一个简短的标题,2或3个词,与会议的整体上下文相关,找到一个独特的名称,如公司名称或利益相关者,并将其包含在标题中
TYPE: 根据会议的上下文、对话、主题和讨论,始终为此摘要分配会议类型。允许的会议类型有:客户会议、团队会议、技术会议、培训课程、状态更新、头脑风暴会议、评审会议、外部利益相关者会议、决策会议和问题解决会议。这很关键,不要忽略这一点。
STAKEHOLDERS: 提供会议参与者列表、他们的公司和相应角色。如果未提供名称或未理解,请用"未说明"替换名称。如果发言者没有自我介绍,则不要将其包含在STAKEHOLDERS部分中。
CONTEXT: 提供10-15句摘要或上下文,包含以下信息:主要联系原因、提供的解决方案、最终结果,考虑以上所有信息
MEETING OBJECTIVES: 提供会议的所有目标或目的。要彻底和详细。
CONVERSATION DETAILS: 客户的主要关注点/请求 讨论的解决方案 验证的重要信息 做出的决策
讨论的关键点(如适用,详细说明每个点):列出所有重要主题和问题 提到的重要细节或数字 解释的任何政策或程序 特殊请求或例外
行动项目和后续步骤(如适用,详细说明每个点):客户需要做什么:需要的立即行动 未来要采取的步骤 重要日期或截止日期 公司将做什么(如适用,详细说明每个点):处理或处理步骤 承诺的跟进行动 完成时间表
附加说明(如适用,详细说明每个点):任何显著问题或关注点 跟进建议 重要提醒
技术要求和资源(如适用,详细说明每个点):讨论/需要的系统或工具 提到的技术规格 所需的访问或权限 资源分配细节"""
|
前端实现
前端使用React构建,提供以下功能:
- 使用某中心Cognito进行用户认证和授权
- 带有进度指示器的音频文件上传界面
- 带有格式化部分(利益相关者、关键点、行动项目)的摘要查看
- 跨会议摘要的搜索功能
- 会议统计信息可视化
前端通过某中心AppSync GraphQL API与后端通信,该API为数据操作提供统一接口。
安全考虑
安全是解决方案的重中之重,通过以下措施解决:
- 用户认证由某中心Cognito处理
- API访问通过某中心Cognito用户池保护
- S3存储桶访问仅限于认证用户
- IAM角色遵循最小权限原则
- 数据在静态和传输过程中加密
- Step Functions提供具有适当错误处理的安全编排
使用某中心Bedrock的优势
某中心Bedrock为会议摘要系统提供了几个关键优势:
- 访问最先进的模型 - 提供对领先基础模型的访问,无需训练自定义模型即可提供高质量的摘要功能
- 完全托管的集成 - 与其他云服务无缝集成,实现完全无服务器的架构,可根据需求自动扩展
- 成本效益 - 按需定价意味着只需为实际处理时间付费,对于可变工作负载具有成本效益
- 安全性和合规性 - 保持数据隐私和安全,确保敏感的会议内容在云环境中受到保护
- 可定制的提示 - 制作详细提示的能力允许定制摘要,从会议中精确提取组织需要的信息
- 多语言支持 - 可以处理多种语言的内容,适用于全球组织
- 减少开发时间 - 预训练模型最小化了对广泛AI开发专业知识和基础设施的需求
- 持续改进 - 提供模型选择,用户可以通过单个字符串更改更新现有模型
成本考虑
实施此解决方案时,了解每个组件的成本影响非常重要。基于以下假设分析成本:
- 每月50小时音频处理
- 平均会议时长30分钟
- 100个活跃用户访问系统
- 每月500万次API查询
大部分成本来自某中心Transcribe(约占总成本的73%,72.00美元),某中心AppSync是第二大成本组件(约20%,20.00美元)。尽管提供了核心AI功能,某中心Bedrock成本约占总成本的3%(3.00美元),某中心DynamoDB、CloudFront、Lambda、Step Functions、某中心SQS和某中心S3构成剩余的4%。
服务 |
使用量 |
单位成本 |
月成本 |
某中心Bedrock |
500K输入token/100K输出token |
每百万token 3.00美元/15.00美元 |
3美元 |
某中心CloudFront |
5GB数据传输 |
每GB 0.085美元 |
0.43美元 |
某中心Cognito |
100月活跃用户 |
免费层 |
0美元 |
某中心DynamoDB |
5 RCU/WCU, ~1GB存储 |
每RCU/WCU 0.25美元 + 每GB 0.25美元 |
2.75美元 |
某中心SQS |
1,000条消息 |
每百万条0.40美元 |
0.01美元 |
某中心S3存储 |
3GB音频 + 12MB转录/摘要 |
每GB 0.023美元 |
0.07美元 |
某中心Step Functions |
1,000次状态转换 |
每千次0.025美元 |
0.03美元 |
某中心AppSync |
5M查询 |
每百万4.00美元 |
20美元 |
某中心Lambda |
300次调用,5秒平均运行时间,256MB |
多种 |
0.10美元 |
某中心Transcribe |
50小时音频 |
每小时1.44美元 |
72美元 |
总计 |
|
|
98.39美元 |
后续步骤
会议摘要解决方案的下一阶段将整合几种先进的AI技术,以提供更大的商业价值。改进的转录模型可以通过更好地处理多个发言者、口音和技术术语来提高转录准确性——解决拥有多元化团队的全球组织的一个关键痛点。同时,增强的分析功能可以通过实施自动会议分类、基于角色的摘要定制以及与公司知识库的集成来提供相关上下文,帮助组织提取否则会埋藏在对话中的可操作见解。
添加实时处理功能可以帮助团队在会议期间实时查看关键点、行动项目和决策,从而实现即时澄清并减少后续问题。增强的分析功能可以跟踪多个会议随时间推移的模式,让管理层了解沟通有效性、决策过程和项目进展。通过与现有生产力工具(如日历、每日议程、任务管理系统和通信服务)集成,此解决方案确保会议智能直接流入日常工作流程,最大限度地减少手动信息传输,并确保关键见解推动跨部门的有形业务成果。
结论
会议音频摘要器结合了无服务器技术与生成式AI,解决了一个关键的生产力挑战。它自动转录和总结会议,为组织节省数千小时,同时确保见解和行动项目被系统化捕获并与利益相关者共享。
无服务器架构可轻松应对波动的会议量进行扩展,平均每次会议仅需0.98美元,并最大限度地减少基础设施管理和维护开销。提供企业级AI功能,无需专业的机器学习专业知识或大量的开发资源,基于Terraform的基础设施即代码支持跨环境的快速部署、定制以满足特定的组织要求,以及与现有CI/CD管道的无缝集成。
随着生成式AI领域的不断发展和新的、性能更好的模型的出现,解决方案执行任务的能力将在性能和准确性方面自动改进,无需额外的开发工作,从而增强摘要质量、语言理解和上下文感知。这使得会议音频摘要器成为现代企业优化会议工作流程、增强知识共享和提高组织生产力的越来越有价值的资产。