
构建实时语音代理的终极指南:使用ten框架提升交互体验与开发效率
我观看新闻的那一天
我观看关于开放AI的实时API的新闻那天,我对自己说:“这个新的语音代理真的很酷;它将改变人工智能社区以及他们与聊天机器人的互动方式。”
不久前,我开发了一个语音助手,但体验实际上并不好。主要有两个原因:第一个原因是人工智能的理解能力(这一部分在大型语言模型发布后有了很大改善),第二个问题是延迟。
语音助手通常经历三个步骤:
- 将用户的语音转换为文本。
- 使用人工智能处理文本并生成回复。
- 将文本回复转换为语音并在设备上播放。
我面临的一个大问题是延迟(超低延迟),这导致用户体验不佳。当人际互动的延迟可以控制在几百毫秒甚至几十毫秒以内时,糟糕的体验将消失,取而代之的是更好的用户体验和产品价值。
随着实时API的发展,我认为语音助手将迎来新的曙光,更不用说将所有这些技术无缝集成以创造类人互动体验真的需要“脑力劳动”。
TEN(变革扩展网络)
有了TEN,开发者再也不必_绞尽脑汁_!TEN是一个用于创建对话式人工智能代理的实时语音代理框架。它不仅减少了开发痛点,还使得与TEN代理中断对话变得容易,并可以从零开始无缝构建下一代人工智能应用程序。
所以,让我给你快速演示一个实时聊天机器人的示例,来展示我的意思。
我访问了Ten Agent的GitHub页面并点击链接探索聊天机器人演示。我选择了一个代理演示,其中包括像语音代理双子星这样的选项,这是一个带有Dify(自定义语音转文本/文本转语音)的语音代理,以及一个带有图像生成器的语音讲故事者。在选择演示后,我默认选择了英语作为对话语言。即使在选择了默认的“语言”后,TEN仍然可以理解其他语言。然后,我点击一个小图标来配置问候消息和提示,以创建人工智能辅导助手。最后,我点击“连接”开始对话。
使用本地部署构建自己的语音代理
当我开始与代理聊天时,语音代理使用自动语音检测来确定我何时说完,确保互动感觉自然。然后,代理将音频转换为文本,以实现高质量的语义理解和更快的实时性能。接下来,代理使用大型语言模型来理解用户的意图并生成自然的答案文本。
在这个过程中,代理规划了推理步骤以分解问题。最后,代理将输出转换为自然语音。
在这个视频中,我将快速浏览文档,以便你对Ten Agent是什么、它的特点、如何工作以及我们将在屏幕上安装的应用程序有100%的了解,你可以复制、粘贴并根据你的需求进行调整。
在我们开始之前!
什么是TEN-Agent:
TEN框架是一个开源工具,帮助开发者快速创建实时多模态代理。这些代理可以处理语音、视频、数据流、图像和文本。它使开发者能够轻松尝试想法,使用大型语言模型,并构建可以重用的功能。
使用TEN,您可以创建语音聊天机器人、用于会议记录的人工智能工具、语言学习应用程序等。
TEN为您提供各种人工智能工具和功能,以设计、测试和启动能够实时思考、倾听、观察和互动的高级人工智能代理。
主要特性
-
多模态交互:
- 支持语音、文本和图像的交互,提供更自然的人机沟通。
- 适用于智能客服、实时语音助手等多种场景。
-
实时通信:
- 集成RTC技术,实现低延迟的语音和视频交互,确保用户体验流畅。
- 高性能的实时通信可以在无需额外配置的情况下实现。
-
广泛的功能支持:
- 天气查询: 可以快速获取当前或未来的天气信息。
- 网页搜索: 帮助用户快速找到所需的信息。
- 视觉识别: 处理和分析图像内容的能力。
-
动态响应和状态管理:
- 提供实时代理状态管理,使人工智能代理能够动态响应用户交互。
-
边缘计算和云支持:
- 支持边缘计算和云部署,以满足不同应用场景的需求。
-
预构建的STT、LLM和TTS模块:
- 预构建的语音转文本(STT)、**大型语言模型(LLM)和文本转语音(TTS)**模块实现快速迭代。
- 如下图所示,支持许多现成的扩展,更多功能正在开发中。
- 开发者可以轻松自定义这些模块以满足特定需求。
工作原理:
“十个代理”架构有四个扩展:ASR扩展、LLM扩展、TTS扩展和RTC扩展。TEN框架基于扩展,可以用不同的编程语言构建并组合以创建应用程序。
TEN框架中的图形显示了数据在扩展之间的流动。它控制数据流并定义连接。例如,它可以将语音转文本(STT)输出发送到大型语言模型(LLM)进行进一步处理。
目录路径: (所有图形):link
当你开始与代理进行对话时,可以在实时通信(RTC)网络中使用音频、视频或截图。RTC网络就像一条高速公路,承载数据到后端服务器。实时消息(RTM)是一个SDK,允许你发送即时信令消息。
目录路径: link
当你开始说话时,代理需要知道你何时结束。它使用语音自动检测(interrupt_detector)来识别音频何时结束。一旦检测到音频,系统会收集消息并使用Deepgram将其转换为文本。
目录路径: link
然后将文本传递给大型语言模型进行处理并生成输出。响应使用ElevenLabs(TTS)转换回语音。
目录路径: link
最后,当代理完成任务时,响应通过RTC网络返回到用户的应用程序。
所有这些都由TEN管理器管理,它处理上传、共享和安装扩展等任务。它自动管理依赖关系及其环境。这使得安装和发布扩展变得简单,帮助开发者在TEN框架中更高效地工作。
逐步过程:
在我们开始之前,让我们一起运行TEN代理。确保您已安装Docker和Docker Compose,获取Agora应用程序ID和应用程序证书(如果在Agora控制台中启用了证书),并获取OpenAI API密钥,以及Deepgram ASR和FishAudio TTS的API密钥。
AGORA_APP_ID=
AGORA_APP_CERTIFICATE=
DEEPGRAM_API_KEY=
FISH_AUDIO_TTS_KEY=
OPEN_API_KEY=
准备好所有API后,我们打开终端并克隆TEN代理代码库。
git clone https://github.com/TEN-framework/TEN-Agent.git
在项目根目录中,使用命令创建.env
文件。
打开.env
文件并填写所需的API密钥和配置。
启动容器
在项目根目录中运行命令docker compose up
以启动容器。
或者使用命令docker compose up -d
以分离模式启动容器。
之后,我们在同一环境中打开另一个窗口,进入容器并构建代理。
docker exec -it ten_agent_dev bash
成功运行docker后,您将在终端中看到应用程序以开始构建应用程序。我们使用。
构建完成后,在端口8080上运行服务器。
在浏览器中打开http://localhost:3000/以开始使用TEN代理。
浏览器打开后,我们将选择一个图形。可用的类型有不同的:voice_assistant、voice assistant real-time和storyteller。吸引我注意的是Storyteller,这是一个供希望快速构建具有语音交互的讲故事者的开发者使用的用例。他们可以直接使用并进行自定义。
我们的路线图上还有更多用例,例如computer use、virtual beings with avatars和PSTN for phones。
首先,我们自定义我们的扩展模块。在这个视频中,我们将使用Deepgram进行语音转文本,并使用大型语言模型来处理我们的数据。并且,我们有一个函数调用,在其中我们使用像必应搜索或视觉工具这样的工具。最后,我们将使用ElevenLabs进行文本转语音。但请随意根据您的偏好进行自定义。
保存更改后,让我们连接代理并测试我们的聊天机器人。
但让我告诉您,当我玩TEN代理时让我感到惊讶的事情。我认为我们中的许多人都会喜欢它,因为它有一个很酷的功能,您可以与自定义的虚拟形象进行对话。如果您和我一样好奇,请给我几秒钟的时间来向您展示我的意思。
在这个演示中,您将看到TEN代理团队的一个成员与一个虚拟形象进行对话,要求她跳舞,甚至更改音乐和背景。不仅如此,他们还制作了另一个不同狗虚拟形象的演示,他要求虚拟形象改变他的口音。我让您听听这段对话。
但这里有个关键点:TEN的图形设计器是一个出色的工具,用于使用拖放界面设计对话流程。它连接到后端的property.json和manifest.json文件,在那里我们使用解复用器、复用器和FFmpeg来管理和处理视频和音频文件。
解复用器:如果您只想从视频文件中提取音频,则需要解复用器。
复用器:如果您编辑视频并添加新的音频,则使用复用器将它们打包在一起。
我们还使用FFmpeg提取音频(解复用)、组合流(复用),甚至将文件转换为不同的格式。此功能将在不久后推出。
这个项目真是太棒了!我一直在考虑创建这样的东西,但当我找到TEN代理时,它帮助了我很多,并节省了我的时间。
我可以模仿这个项目并将其调整为我们的用例。绝对值得给它一个GitHub星星,以支持开源和有用的内容。实际上,在短暂的体验之后,我真的想大喊:
“所有代理都需要TEN代理实时。”
结论
TEN-Agent不仅是一个强大的多模态人工智能代理框架,还为开发者提供了强大的工具来构建高效的实时交互应用程序。其丰富的功能和灵活的应用场景使其成为企业和个人开发者构建下一代语音人工智能应用的理想选择。