使用三项托管服务,快速构建语音聊天机器人

人工智能
Amazon Polly
Amazon Transcribe
生成式人工智能
Amazon Bedrock
0
0
### **前言** 当前,人工智能技术的快速发展正在推动语音交互界面向智能化和人性化方向迈进。依托于[大语言模型](https://aws.amazon.com/cn/what-is/large-language-model/?trk=cndc-detail)和语音识别技术的突破,语音交互聊天机器人应用开始兴起,为用户提供了全新的人机交互体验。 **[大语言模型](https://aws.amazon.com/cn/what-is/large-language-model/?trk=cndc-detail)具有强大的自然语言理解和生成能力**。通过对话语境分析,大语言模型能够精准捕捉用户的语义意图,结合相关知识并生成合理的回复内容。同时,语音识别技术实现了对人类语音的高准确率识别转录,语音合成技术则可以将文本内容转化为流畅自然的语音输出。有了这些人工智能技术的支持,语音交互聊天机器人打破了传统文字输入的界面限制,极大拓展了人机交互的形式和维度。**用户只需自然发话,就能与语音助手进行无障碍的语音对话,获取所需信息或办理相关事务,彷佛在与真人进行交谈。** 类似的大模型+语音交互方案已逐步应用到生活的多个领域。例如智能音箱可通过语音指令控制家电,智能玩偶以寓教于乐的方式进行孩童陪伴,智能车载系统支持语音导航和信息查询,智能手机则集成了各类语音助手,方便用户随时随地进行语音交互。这种全新的交互模式有望改变人们的工作和生活习惯,提供高效、自然、无障碍的人机交互体验。 **本文将基于亚马逊云科技的 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)、[Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) 和 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 三项托管人工智能与[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)服务和其他基础服务,实现一个大语言模型的语音交互方案。** ### **亚马逊云科技人工智能与机器学习相关服务介绍** #### **Amazon Bedrock** **[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 是一项完全托管的服务,它通过统一的 API 将来自领先的 AI 初创公司和 Amazon 的高性能基础模型(FM)供您使用**。您可以从各种基础模型中进行选择,以找到最适合您的用例的模型。[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 还提供一系列广泛的功能,用于构建具有安全性、隐私性和负责任 AI 的生成式 AI 应用程序。 使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail),您可以**轻松地试验和评估**适用于您使用场景的基础模型,使用微调和检索增强生成(RAG)等技术或是使用您的数据进行微调,并构建使用您的企业系统和数据源执行任务的个性化应用。 借助 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)体验,**您可以快速入门**,使用自己的数据自定义基础模型或直接调用预置的基础模型,并使用 SDK 等工具轻松安全地将其集成和部署到您的应用程序中,而无需管理任何基础设施。 >**[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)** > > https\://aws.amazon.com/cn/bedrock/?trk=cndc-detail #### **Amazon Polly** **[Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) 是一项文字转语音(Text to speech, TTS)服务,可将文本转换为逼真的语音**。您可以使用 [Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) 开发可提高参与度和可访问性的应用程序。[Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) **支持多种语言**,并包含各种栩栩如生的声音。借助 [Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail),您可以构建支持语音的应用程序,这些应用程序可在多个位置运行,并为您的客户提供理想的语音。此外,您**只需为合成的文本付费**。您还可以缓存和重播 [Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) 生成的语音,无需额外费用。 [Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) 提供了**许多语音选项**,包括生成式、长格式、神经和标准文本转语音(TTS)选项。这些语音使用新的[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)技术在语音质量方面实现了突破性的改进,以提供极其自然、真实的文本转语音。神经 TTS 技术还支持新闻播音员的演讲风格,专为新闻叙述用例量身定制。 > **[Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail)** > > https\://aws.amazon.com/cn/polly/?trk=cndc-detail #### **Amazon Transcribe** **[Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 是一项自动语音识别(Automatic speech recognition,ASR)服务,它使用[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)模型将音频转换为文本**。您可以将 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 用作独立的转录服务,也可以将语音转文本功能添加到任何应用程序。 通过 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail),您可以**实时转录媒体**(流式传输),也可以转录位于 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 存储桶(批处理)中的媒体文件。**[Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 支持数十种语言**,包括但不限于英语、中文、法语、西班牙语、日语等。您可以查阅 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 文档,了解所有的支持语言。 > **[Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail)** > > https\://aws.amazon.com/cn/transcribe/?trk=cndc-detail ### **整体架构** ![image.png](https://dev-media.amazoncloud.cn/05b45027943f48be945a3f04175efc00_image.png "image.png") 本方案整体架构如上图: 1. 用户上传语音文件或实时录音到前端页面; 2. 语音上传到 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail),转为文字,同时利用 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 的毒性检测功能,实现对音频数据的内容审核; 3. 转换后文字输入到 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail),调用 LLM,生成对应的文字回复; 4. 文字回复输入到 [Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail),转换成语音; 5. 转换后语音返回到前端,向用户播放; 6. 输入和输出到语音文件保存到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)中存档,对话日志保存到 [Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail) 供历史查询使用; 7. 使用 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail) 监控全流程中各项服务的使用情况。 ### **实验步骤** 本次实验以 US East(N. Virginia) us-east-1 区域为例。 #### **申请模型访问权限** [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 用户需要先请求访问模型,然后才能使用模型。如果您想要添加用于文本、聊天和图像生成的其他模型,您需要请求访问 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 中的模型。**请注意,只有具有所需 Amazon IAM 权限的用户才能管理此帐户的模型访问权限。** 1.登录您的亚马逊云科技账户,进入管理控制台,在控制台右上角选择您方案部署的区域。这里选择 us-west-2 进行实验演示。 ![image.png](https://dev-media.amazoncloud.cn/fd0c7c205b37460b97f14e8db089b4d7_image.png "image.png") 2.点击控制台的查找框,搜索 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail),进入 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的控制台界面,找到下图所示的 “Model access”,点击 “**Manage model access**”。 ![image.png](https://dev-media.amazoncloud.cn/add98d97f8824bb981a342a799c48c17_image.png "image.png") 3.此处可以看到 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 提供的模型,勾选需要的模型,并点击 “**Save changes**”。设置好请求访问模型后,模型即刻便可访问。本次实验主要会用到 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 中的大语言模型,但是 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 按需计费,仅根据您实际使用情况计费,不使用不会收费,为方便后续测试其他模型能力,在这里勾选了全部模型。 ![image.png](https://dev-media.amazoncloud.cn/d55c207b43ed41698abf8cac40ab4b87_image.png "image.png") #### **部署实验环境** 首先登录进您的亚马逊云科技控制台,然后点击**快速部署链接**,会跳转到以下界面。选中复选框,点击 Create Stack。 ![image.png](https://dev-media.amazoncloud.cn/26e15ba1c26c4e91b6cd7ec807a81c8b_image.png "image.png") 等待 Stack 部署完成后,**点击 Resources 标签**,点击 MyEC2Instance 的 Physical ID,跳转到 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)控制台。 ![image.png](https://dev-media.amazoncloud.cn/02d883c60bd14429ba1d5cbc697ea15c_image.png "image.png") 选中此实例,点击右上角 Connect,**选择 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)Instance Connect** 连接到实例。 ![image.png](https://dev-media.amazoncloud.cn/3647f0c2d37a44f8b1c4d2307e12061f_image.png "image.png") 登录进实例后,执行以下命令: ``` cd SmartMultiModeChatBotchmod +x *.sh./webui.sh ``` 执行后,复制 https\://xxxxx.gradio.live?trk=cndc-detail 的地址到浏览器新的标签页,进入前端页面。请勿在实验过程中关闭此终端,否则前端页面可能会停止运行。 ![image.png](https://dev-media.amazoncloud.cn/3c1c1c54a6974a3bb598e01ea93e4c17_image.png "image.png") ### **测试结果** 部署好实验环境后,打开前端页面,对此方案进行功能测试。 #### **语音识别** 语音识别模块使用到了 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 服务,能够将输入的语音转换成文字。 ![image.png](https://dev-media.amazoncloud.cn/1825f82498dc49739db2a08b4cd4ce49_image.png "image.png") 首先选择聊天的语言,**目前集成了中文、英语、日语三种语音识别功能**,[Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 支持的更多语言可查阅文档。以英语为例,选择英语作为聊天语言后,点击 Record 按钮开始录音。 ![image.png](https://dev-media.amazoncloud.cn/56724ffff14d4d69bd9c1676adf5e95c_image.png "image.png") 录音结束后,**点击 Submit Voice 按钮**,录音会发送到 [Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 进行识别,并将识别的结果显示在 ASR–Automatic Speech Recognition 中。 此外,**[Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 目前支持对英文音频的毒性检测**,对于不安全的内容会给出毒性标签以及对应的置信度,更多多模态内容审核方案,请参阅下方链接。 ![image.png](https://dev-media.amazoncloud.cn/12b005f8c8dd4409ae9acf44ab6254de_image.png "image.png") > https\://aws.amazon.com/cn/blogs/china/multi-modal-intelligent-content-review-based-on-aws-ai-services/?trk=cndc-detail #### **大模型交互** 滑动页面到底部,**点击 Chat by Speech**,即可将语音识别后的文字发送到 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 中的大模型进行交互。生成后的文字会显示在 Chat by Speech 中。 ![image.png](https://dev-media.amazoncloud.cn/42fdc2f95d744e8494a90d9706f7588a_image.png "image.png") #### **语音输入** **点击 Speech Chat2**,即可将文字输出发送到 [Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail) 服务,生成回复的语音。语音显示在 Text to Speech from LLM – using Speech 中,点击即可播放。 ![image.png](https://dev-media.amazoncloud.cn/11f1991a55e24a67a01826620d15249f_image.png "image.png") #### **文本聊天** 您也可以通过输入文字的方式,体验 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 上托管的大语言模型的生成能力。在 Input Text 框中,输入聊天的文字语言,**点击 Chat by Text**,即可通过文字方式和大模型交互。 ![image.png](https://dev-media.amazoncloud.cn/ca73bd2ab01549dca1b4207427c0a695_image.png "image.png") #### **查询历史会话音频** **方案中所有音频数据可存储至 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 存储桶**,可在控制台搜索并导航到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail),搜索前缀名为 “smart-chatbot” 的存储桶,您将看到 “smart-audio-chatbot” 文件夹中存储的所有历史音频数据。此外,您可以将音频的元数据存储至 [Amazon DynamoDB](https://aws.amazon.com/cn/dynamodb/?trk=cndc-detail) 用于后续的数据处理与分析。 ![image.png](https://dev-media.amazoncloud.cn/e69c4a2de1844a99adf37692479da6e4_image.png "image.png") #### **检索日志** 方案使用 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail) 监控全流程中各项服务的使用情况。可在控制台搜索并导航到 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail),搜索名为 “/Amazon Web Services/smartMultiChatbot” 的日志组,点击名为 “smartMultiChatBotStream” 的日志流,您将看到所有服务运行的日志。 ![image.png](https://dev-media.amazoncloud.cn/d2b4832e02574d1ab391e8cdf081c3ef_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/1acc09ffecf249e59377e947e3c63835_image.png "image.png") ### **总结** 此方案验证了使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)、[Amazon Polly](https://aws.amazon.com/cn/polly/?trk=cndc-detail)、[Amazon Transcribe](https://aws.amazon.com/cn/transcribe/?trk=cndc-detail) 构建语音交互聊天机器人的可行性。通过使用托管的亚马逊云科技人工智能服务,您可以快速构建语音聊天机器人而无需管理相关基础设施,且根据您业务规模实现弹性扩展,仅根据您实际的使用量收费,助您探索更多业务可能。 ### **资源清理** 在实验结束后,**您需要手动清除 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 桶中的文件和删除部署的 Amazon CloudFormation 模板,以避免其他费用。** #### **清除 Amazon S3 桶中文件** 导航到 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 控制台,选择以 smart-chatbot 开头的存储桶,点击 Empty,根据指引清空桶内文件。此操作将会删除所有保存在 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 中的语音输入和输出文件。 ![image.png](https://dev-media.amazoncloud.cn/a2ad92cc69224c99b8181552ab4cba06_image.png "image.png") #### **清除 Amazon CloudWatch 中的日志** 导航到 [Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail) 控制台,搜索名为 “/Amazon Web Services/smartMultiChatbot” 的日志组,点击删除日志组即可。 ![image.png](https://dev-media.amazoncloud.cn/d17d9802ecbf4e30a532440f64c54a11_image.png "image.png") #### **删除 Amazon CloudFormation 模板** 导航到 Amazon CloudFormation 控制台,选择 SmartChatbot 堆栈,点击删除。此操作将会删除部署的 [Amazon EC2 ](https://aws.amazon.com/cn/ec2/?trk=cndc-detail)资源和 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 存储桶。 ![image.png](https://dev-media.amazoncloud.cn/f2a7f029018745b8a9e2c490388f955a_image.png "image.png") 至此,资源清理完毕。 ![image.png](https://dev-media.amazoncloud.cn/f6bc73883e4f4fecbf0307c1088f16fd_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/37a751574a7e4b6e98823d2cd26a16c8_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/0fd88a2e89204adfa4215d9a445f6f52_image.png "image.png") ![image.png](https://dev-media.amazoncloud.cn/bf93b2d04ea340bc8da7945aaf31a788_image.png "image.png")
0
目录
关闭