构建AI驱动的自动化会议摘要系统

解决方案概述

我们的音频处理系统结合了强大的AWS服务,为从音频内容中提取洞察提供了端到端的解决方案。架构包含两个主要组件:处理用户交互和文件上传的前端界面,以及将原始音频转换为有价值结构化信息的后端处理管道。

前端工作流程

  1. 用户通过基于React的前端上传音频文件,前端通过Amazon CloudFront全球分发
  2. Amazon Cognito提供安全的用户认证和授权
  3. 应用通过AWS AppSync GraphQL API检索会议摘要和统计数据

处理流程

  1. 音频文件存储在Amazon S3桶中
  2. 当音频文件上传到S3的audio/{user_id}/前缀时,S3事件通知会向Amazon SQS队列发送消息
  3. SQS队列触发Lambda函数,启动处理工作流
  4. AWS Step Functions协调整个转录和摘要工作流,包含内置的错误处理和重试机制
  5. Amazon Transcribe将语音转换为高精度文本
  6. 使用基础模型(特别是Anthropic的Claude)生成全面的结构化摘要
  7. 结果同时存储在Amazon S3(原始数据)和Amazon DynamoDB(结构化数据)中

项目结构

项目采用前后端分离的结构:

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/ # 部署和实用脚本

基础设施设置

使用Terraform定义和配置AWS基础设施:

# 计算模块 - 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工作流,协调音频文件的处理过程,包括语言检测、转录、摘要生成和通知。

Amazon Bedrock摘要生成

摘要组件由Amazon Bedrock提供支持,它提供了访问最先进的基础模型的能力。我们的解决方案使用Anthropic的Claude 3.7 Sonnet版本1来生成全面的会议摘要:

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: 客户的主要关注点/请求 讨论的解决方案 验证的重要信息 做出的决定
DISCUSSED KEY POINTS (如果适用,详细说明每个点): 列出所有重要主题和问题 提到的重要细节或数字 解释的任何政策或程序 特殊请求或例外
ACTION ITEMS & NEXT STEPS (如果适用,详细说明每个点): 客户需要做什么:立即需要的行动 未来需要采取的步骤 重要日期或截止日期 公司将要做什么(如果适用,详细说明每个点): 处理或处理步骤 承诺的后续行动 完成时间表
ADDITIONAL NOTES (如果适用,详细说明每个点): 任何值得注意的问题或关注点 后续建议 重要提醒
TECHNICAL REQUIREMENTS & RESOURCES (如果适用,详细说明每个点): 讨论/需要的系统或工具 提到的技术规格 所需的访问或权限 资源分配详情

前端实现

前端使用React构建,提供以下功能:

  • 使用Amazon Cognito的用户认证和授权
  • 带有进度指示器的音频文件上传界面
  • 带格式化部分(利益相关者、关键点、行动项)的摘要查看功能
  • 跨会议摘要的搜索功能
  • 会议统计可视化

安全考虑

我们通过以下措施解决安全问题:

  • 用户认证由Amazon Cognito处理
  • API访问通过Amazon Cognito用户池保护
  • S3桶访问仅限于认证用户
  • IAM角色遵循最小权限原则
  • 数据在传输和静态时都加密
  • Step Functions提供安全的编排和适当的错误处理

使用Amazon Bedrock的优势

Amazon Bedrock为我们的会议摘要系统提供了几个关键优势:

  • 访问最先进的模型
  • 完全托管的集成
  • 成本效益
  • 安全性和合规性
  • 可定制的提示
  • 多语言支持
  • 减少开发时间
  • 持续改进

部署步骤

  1. 克隆包含Terraform代码的仓库
  2. 配置AWS凭证
  3. 安装前端依赖
  4. 创建配置文件
  5. 初始化和应用Terraform
  6. 部署解决方案
  7. 验证部署

成本考虑

实现此解决方案时,了解每个组件的成本影响很重要。基于以下假设分析成本:

  • 每月处理50小时音频
  • 平均会议时长30分钟
  • 100个活跃用户
  • 每月500万次API查询

大多数成本来自Amazon Transcribe(约占总成本的73%,72美元),AWS AppSync是第二大成本组件(约20%,20美元)。尽管提供了核心AI功能,Amazon Bedrock成本约占总成本的3%(3美元),DynamoDB、CloudFront、Lambda、Step Functions、Amazon SQS和Amazon S3构成剩余的4%。

总结

我们的会议音频摘要器结合了AWS无服务器技术和生成式AI,解决了一个关键的生产力挑战。它自动转录和总结会议,为组织节省数千小时,同时确保洞察和行动项被系统地捕获并与利益相关者共享。

无服务器架构可以轻松应对波动的会议量,平均每次会议仅需0.98美元,并最大限度地减少基础设施管理和维护开销。Amazon Bedrock提供企业级AI功能,无需专门的机器学习专业知识或大量开发资源,基于Terraform的基础设施即代码支持跨环境的快速部署、定制以满足特定组织需求,以及与现有CI/CD管道的无缝集成。

更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)

公众号二维码

使用Amazon Bedrock和Amazon Transcribe构建AI驱动的自动化会议摘要系统的更多相关文章

  1. Amazon SageMaker和NVIDIA NGC加速AI和ML工作流

    Amazon SageMaker和NVIDIA NGC加速AI和ML工作流 从自动驾驶汽车到药物发现,人工智能正成为主流,并迅速渗透到每个行业.但是,开发和部署AI应用程序是一项具有挑战性的工作.该过 ...

  2. 破局人工智能:构建AI,与腾讯云一起探索语音应用场景

    本文来自腾讯云技术沙龙,本次沙龙主题为AI平台及智能语音应用解析 近年来,人工智能技术快速发展,与其他行业的结合也成为业界不断探索的方向.在人工智能基础和工具方面,AI平台已成为降低人工智能门槛的关键 ...

  3. 二手车价格预测 | 构建AI模型并部署Web应用 ⛵

    作者:韩信子@ShowMeAI 数据分析实战系列:https://www.showmeai.tech/tutorials/40 机器学习实战系列:https://www.showmeai.tech/t ...

  4. 【转发】构建高可伸缩性的WEB交互式系统(下)

    原文转自:http://kb.cnblogs.com/page/504518/ 本文是<构建高可伸缩性的WEB交互式系统>系列文章的第三篇,以网易的NEJ框架为例,对模块的可伸缩性进行分析 ...

  5. 【转发】构建高可伸缩性的WEB交互式系统(中)

    原文转自:http://kb.cnblogs.com/page/503953/ 在<构建高可伸缩性的WEB交互式系统>的第一篇,我们介绍了Web交互式系统中平台的可伸缩性.本文将描述模块的 ...

  6. NPC AI驱动最基本过程

    NPC AI驱动最基本过程 NPCmgr中比较重要的是加载NPC和一个NPCAI的一个指针 他利用map那个线程的定时到底做了啥呢 void NPCmgr::npcAITimer() { time_t ...

  7. 使用 Spring Cloud Stream 构建消息驱动微服务

    相关源码: spring cloud demo 微服务的目的: 松耦合 事件驱动的优势:高度解耦 Spring Cloud Stream 的几个概念 Spring Cloud Stream is a ...

  8. AI,大数据,复杂系统 最精 40本大书单

    AI,大数据,复杂系统 最精 40本大书单 原创 2017-10-30 Peter 混沌巡洋舰 如果这篇文的题目变成最全书单,那么这篇文会变得又臭又长,这个年代,关于人工智能和大数据的书,没有一万本也 ...

  9. Spring Cloud Alibaba学习笔记(12) - 使用Spring Cloud Stream 构建消息驱动微服务

    什么是Spring Cloud Stream 一个用于构建消息驱动的微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互, ...

  10. 微软发布云端基因服务:推动AI驱动的精准医疗

    微软发布云端基因服务:推动AI驱动的精准医疗 2018年03月07日 00:00:00 微软研究院AI头条 阅读数:117    版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...

随机推荐

  1. CTP报单业务介绍

    程序化登录信息 客户如果需要调用API介入柜台进行程序化交易,登录时需要一些基本信息,如下: 1.BrokerID 简称期货编码,是在该期货公司在CTP系统上的编码,为四位数,例如海通期货是8000 ...

  2. C#之Bitmap

    SetPixel和GetPixel private void btnC_Click(object sender, RoutedEventArgs e) { OpenFileDialog dia = n ...

  3. 记录一下 nas 当本地网络存储,玩大型游戏再也不用担心硬盘不够用了

    最近由于家里的PC 在玩steam的游戏,原来1T的固态,安装了几个大型的3A游戏,一个黑神话悟空就用了200多G,硬盘就不够用了 查看了京东的2T的固态,还是很贵,要大几百块钱.去年配了一台极空间的 ...

  4. 【公众号搬运】React-Native开发鸿蒙NEXT(3)

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  5. odoo14的qweb打印单样式丢失问题

    问题:在开发odoo14的打印单过程中:Wkhtmltopdf打印插件已安装的情况下,发现样式丢失了,如下图 问题的原因: 1.可能是外网与内网服务转换时候造成的样式丢失,有时候是端口不一致导致的某些 ...

  6. Swag - 将Go注释转换为Swagger文档的强大工具

    项目标题与描述 Swag是一个强大的Go语言工具,能够将代码中的注释自动转换为符合Swagger 2.0规范的API文档.项目支持多种主流Go Web框架,包括Gin.Echo等,通过简单的代码注释即 ...

  7. Aug. 2023 普及组模拟赛 3

    题面 T1 最大生成树 Meaning 给定一个完全图,两点之间的边权为这两个点点权之差的绝对值,求这个图的最大生成树. Solution 对于最小生成树,我们可以考虑 Kruskal 算法. Kru ...

  8. Server-sent-events与 WebSocket的区别是什么?

    SSE 与 WebSocket 作用相似,都是建立浏览器与服务器之间的通信渠道,然后服务器向浏览器推送信息.总体来说,WebSocket更强大和灵活.因为它是全双工通道,可以双向通信:SSE是单向通道 ...

  9. MySQL的三大日志

    前言 飞机失事靠黑匣子还原真相,MySQL崩溃靠三大日志保障数据安全. 作为一个工作多年的程序员,我见过太多因日志配置不当引发的灾难:数据丢失.主从同步中断.事务回滚失败... 今天,我将用最通俗的方 ...

  10. HEXO部署博客内容到github报错

    今天在更新部署博客内容时出现了如下报错: @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE H ...