使用 Amazon Bedrock 和 Amazon Transcribe 從語音輸入記錄機構知識 - AWS 方案指引

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 Amazon Bedrock 和 Amazon Transcribe 從語音輸入記錄機構知識

由 Praveen Kumar Jeyarajan (AWS)、Jundong Qiao ()AWS、Megan Wu (AWS) 和 Rajiv Upadhyay (AWS) 建立

程式碼儲存庫: genai-knowledge-capture

環境:PoC 或試行

技術:機器學習和 AI;業務生產力; CloudNative

AWS 服務:Amazon Bedrock;AWSCDK;AWSLambda;AmazonSNS;AWSStep Functions;Amazon Transcribe

Summary

擷取機構知識對於確保組織成功和恢復能力至關重要。機構知識代表員工隨著時間累積的集體智慧、洞察和體驗,通常在性質上隱含,並以非正式方式傳遞。這種豐富的資訊包含獨特的方法、最佳實務和解決方案,可解決可能未記錄在別處的問題。透過正式化和記錄這些知識,公司可以保留機構記憶體、促進創新、增強決策程序,並加速新員工的學習曲線。此外,它可促進協作、授權個人,並培養持續改善的文化。最終,利用機構知識可協助公司使用其最寶貴的資產,也就是其員工的集體智慧,在動態商業環境中應對挑戰、推動成長並維持競爭優勢。

此模式說明如何透過資深員工的語音錄音擷取機構知識。它使用 Amazon TranscribeAmazon Bedrock 進行系統性文件記錄和驗證。透過記錄此非正式知識,您可以保留並與後續的員工群組共用。此工作支援卓越營運,並透過整合透過直接體驗取得的實際知識來改善訓練計畫的有效性。

先決條件和限制

先決條件

  • 作用中AWS帳戶

  • Docker,已安裝

  • AWS 雲端開發套件 (AWS CDK) 2.114.1 版或更新版本,已安裝啟動us-east-1us-west-2AWS區域

  • AWS CDK 工具組 2.114.1 版或更新版本,已安裝

  • AWS 命令列介面 (AWS CLI),已安裝設定

  • Python 3.12 版或更新版本,已安裝

  • 建立 Amazon TranscribeAmazon Bedrock、Amazon Simple Storage Service (Amazon S3) 和 AWS Lambda 資源的許可

限制

  • 此解決方案已部署至單一 AWS 帳戶。

  • 此解決方案只能在 Amazon Bedrock 和 Amazon Transcribe 可用的AWS區域中部署。如需可用性的詳細資訊,請參閱 Amazon BedrockAmazon Transcribe的文件。

  • 音訊檔案必須是 Amazon Transcribe 支援的格式。如需支援的格式清單,請參閱轉錄文件中的媒體格式

產品版本

  • AWS SDK for Python (Boto3) 1.34.57 版或更新版本

  • LangChain 0.1.12 版或更新版本

架構

此架構代表 上的無伺服器工作流程AWS。AWS Step Functions 會協調 Lambda 函數以進行音訊處理、文字分析和文件產生。下圖顯示 Step Functions 工作流程,也稱為 狀態機器

產生文件的 Step Functions 狀態機器的架構圖

狀態機器中的每個步驟都由不同的 Lambda 函數處理。以下是文件產生程序中的步驟:

  1. preprocess Lambda 函數會驗證傳遞給 Step Functions 的輸入,並列出提供 Amazon S3 URI 資料夾路徑中存在的所有音訊檔案。工作流程中的下游 Lambda 函數會使用檔案清單來驗證、摘要和產生文件。

  2. transcribe Lambda 函數使用 Amazon Transcribe 將音訊檔案轉換為文字轉錄。此 Lambda 函數負責啟動轉錄程序,並準確將語音轉換為文字,然後存放以供後續處理。

  3. validate Lambda 函數會分析文字文字記錄,判斷回應與初始問題的關聯性。透過 Amazon Bedrock 使用大型語言模型 (LLM),它可以識別主題上的答案,並將其與主題外回應分開。

  4. summarize Lambda 函數使用 Amazon Bedrock 產生主題上答案的一致性和簡潔摘要。

  5. generate Lambda 函數會將摘要組合成結構良好的文件。它可以根據預先定義的範本格式化文件,並包含任何其他必要的內容或資料。

  6. 如果任何 Lambda 函數失敗,您會透過 Amazon Simple Notification Service (Amazon ) 收到電子郵件通知SNS。

在整個過程中,AWSStep Functions 會確保以正確的順序啟動每個 Lambda 函數。此狀態機器具有可平行處理的容量,可提升效率。Amazon S3 儲存貯體充當中央儲存儲存庫,透過管理涉及的各種媒體和文件格式來支援工作流程。

工具

AWS 服務

  • Amazon Bedrock 是一項完全受管的服務,它讓來自領導 AI 新創公司的高效能基礎模型 (FMs) 和 Amazon 可供您透過統一 使用API。

  • AWS Lambda 是一種運算服務,可協助您執行程式碼,而不需要佈建或管理伺服器。它只會在需要時執行程式碼並自動擴展,因此您只需支付您使用的運算時間。

  • Amazon Simple Notification Service (Amazon SNS) 可協助您協調和管理發佈者和用戶端之間的訊息交換,包括 Web 伺服器和電子郵件地址。

  • Amazon Simple Storage Service (Amazon S3) 是一種雲端型物件儲存服務,可協助您儲存、保護和擷取任何數量的資料。

  • AWS Step Functions 是一種無伺服器協調服務,可協助您結合 AWS Lambda 函數和其他AWS服務來建置業務關鍵型應用程式。 

  • Amazon Transcribe 是一種自動語音辨識服務,使用機器學習模型將音訊轉換為文字。

其他工具

  • LangChain 是用於開發由大型語言模型 () 驅動的應用程式的架構LLMs。

程式碼儲存庫

此模式的程式碼可在 儲存庫中使用 GitHub genai-knowledge-capture

程式碼儲存庫包含下列檔案和資料夾:

  • assets 資料夾 – 解決方案的靜態資產,例如架構圖表和公有資料集

  • code/lambdas 資料夾 – 所有 Lambda 函數的 Python 程式碼

    • code/lambdas/generate 資料夾 - 從 S3 儲存貯體中的摘要資料產生文件的 Python 程式碼

    • code/lambdas/preprocess 資料夾 - 處理 Step Functions 狀態機器輸入的 Python 程式碼

    • code/lambdas/summarize 資料夾 - 使用 Amazon Bedrock 服務摘要轉錄資料的 Python 程式碼

    • code/lambdas/transcribe 資料夾 - 使用 Amazon Transcribe 將語音資料 (音訊檔案) 轉換為文字的 Python 程式碼

    • code/lambdas/validate 資料夾 - 用來驗證所有答案是否與相同主題相關的 Python 程式碼

  • code/code_stack.py – AWS CDK 用於建立AWS資源的建構 Python 檔案

  • app.py – 用於在目標AWS帳戶中部署AWS資源AWSCDK的應用程式 Python 檔案

  • requirements.txt – 必須為 安裝的所有 Python 相依性清單 AWS CDK

  • cdk.json – 提供建立資源所需的值的輸入檔案

最佳實務

提供的 proof-of-concept程式碼範例僅供 (PoC ) 或試用用途。如果您想要將解決方案用於生產,請使用下列最佳實務:

史詩

任務描述所需的技能

匯出帳戶和AWS區域的變數。

若要AWSCDK使用環境變數為 提供AWS憑證,請執行下列命令。

export CDK_DEFAULT_ACCOUNT=<12-digit AWS account number> export CDK_DEFAULT_REGION=<Region>
AWS DevOps, DevOps engineer

設定AWSCLI具名設定檔。

若要設定 帳戶的AWSCLI具名設定檔,請遵循組態和憑證檔案設定 中的指示。

AWS DevOps, DevOps engineer
任務描述所需的技能

將儲存庫複製到本機工作站。

若要複製genai-knowledge-capture儲存庫,請在您的終端機中執行下列命令。

git clone https://github.com/aws-samples/genai-knowledge-capture
AWS DevOps, DevOps engineer

(選用) 取代音訊檔案。

若要自訂範例應用程式以整合您自己的資料,請執行下列動作:

  1. 導覽至複製儲存庫中的assets/audio_samples資料夾。

  2. 刪除包含範例音訊檔案的資料夾。

  3. 為您要分析的每個主題建立資料夾。

  4. 將音訊檔案傳輸到各自的資料夾。

AWS DevOps, DevOps engineer

設定 Python 虛擬環境。

若要設定 Python 虛擬環境,請執行下列命令。

cd genai-knowledge-capture python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
AWS DevOps, DevOps engineer

合成AWSCDK程式碼。

若要將程式碼轉換為AWS CloudFormation 堆疊組態,請執行下列命令。

cdk synth
AWS DevOps, DevOps engineer
任務描述所需的技能

佈建基礎模型存取權。

啟用您AWS帳戶的 Anthropic Claude 3 Sonnet 模型存取權。如需指示,請參閱 Bedrock 文件中的新增模型存取權

AWS DevOps

在 帳戶中部署 資源。

若要使用 部署AWS帳戶中的資源AWSCDK,請執行下列動作:

  1. (選用) 在複製的儲存庫根中,在 app.py 檔案中更新AWS CloudFormation 堆疊名稱。預設堆疊名稱為 genai-knowledge-capture-stack

  2. 若要部署資源,請執行命令 cdk deploy

    cdk deploy 命令使用 layer-3 建構來建立一組 Lambda 函數、S3 儲存貯體、Amazon SNS主題和 Step Functions 狀態機器。在部署期間,assets/audio_samples會將資料夾中的音訊檔案複製到 S3 儲存貯體。

  3. 登入 AWS 管理主控台,然後在 開啟 CloudFormation 主控台https://console.aws.amazon.com/cloudformation/

  4. 確認堆疊已成功部署。如需指示,請參閱在AWS CloudFormation 主控台上檢閱您的堆疊。

AWS DevOps, DevOps engineer

訂閱 Amazon SNS主題。

若要訂閱 Amazon SNS主題以進行通知,請執行下列動作:

  1. 在 CloudFormation 主控台的導覽窗格中,選擇堆疊

  2. 選擇genai-knowledge-capture-stack堆疊。

  3. 選擇 Output (輸出) 索引標籤。

  4. 使用 鍵尋找 Amazon SNS主題名稱SNSTopicName

  5. 按照訂閱電子郵件地址至 Amazon SNS主題 中的指示,設定電子郵件地址以接收通知。

一般 AWS
任務描述所需的技能

執行 狀態機器。

  1. 開啟 Step Functions 主控台

  2. 狀態機器頁面上,選擇 genai-knowledge-capture-stack-state-machine

  3. 選擇 Start execution (開始執行)

  4. (選用) 在名稱方塊中,輸入執行的名稱。

  5. 輸入區域中,透過取代預留位置文字輸入下列JSON物件,其中:

    • <Name> 是您想要命名文件的名稱。

    • <S3 bucket name> 是包含音訊檔案的 Amazon S3 儲存貯體名稱。

    • <Folder path> 是包含音訊檔案的目錄。

    {   "documentName": "<Name>",   "audioFileFolderUri": "s3://<S3 bucket name>/<Folder path>" }
  6. 選擇 Start Execution (開始執行)

  7. 在執行詳細資訊頁面上,檢閱結果並等待執行完成。

應用程式開發人員,一般 AWS
任務描述所需的技能

移除 AWS 資源。

測試解決方案後,請清除資源:

  1. 從 S3 儲存貯體中刪除所有物件,然後刪除儲存貯體。如需詳細資訊,請參閱刪除儲存貯體

  2. 從複製的儲存庫中,執行命令 cdk destroy

AWS DevOps, DevOps engineer

相關資源

AWS 文件

其他資源