GPT-4o实时语音方案Livekit开源voiceagent:轻松...

智能科技扫地僧 2024-06-15 12:55:13
项目简介 代理框架设计用于构建在服务器上运行的实时、可编程参与者。轻松访问 LiveKit WebRTC 会话并处理或生成音频、视频和数据流。 该框架包括用于常见工作流程的插件,例如语音活动检测和语音转文本。 代理与 LiveKit 服务器无缝集成,将作业排队和调度责任卸载给它。这样就不需要额外的排队基础设施了。在本地计算机上开发的代理代码在部署到生产中的服务器时,可以扩展以支持数千个并发会话。 此 SDK 当前处于开发者预览模式,尚未准备好用于生产。在此期间,将会出现错误,API 可能会发生变化。 安装要安装核心代理库,请执行以下操作: pip install livekit-agents代理包括一组预构建的插件,可以更轻松地将代理组合在一起。这些插件涵盖了常见任务,例如将语音转换为文本,反之亦然,以及在生成式 AI 模型上运行推理。您可以按如下方式安装插件: pip install livekit-plugins-deepgram 以下插件现已推出: Plugin Features livekit-plugins-deepgram STT livekit-plugins-elevenlabs TTS livekit-plugins-google STT livekit-plugins-nltk Utilities for working with text用于处理文本的实用程序 livekit-plugins-openai Dalle 3, STT, TTS从 3, STT, TTS livekit-plugins-silero VAD 概念代理:定义可编程服务器端参与者的工作流的函数。这是您的应用程序代码。Worker:负责管理 LiveKit 服务器作业队列的容器进程。每个工作线程能够同时运行多个代理。插件:一个库类,用于执行来自特定提供程序的特定任务,例如语音转文本。代理可以将多个插件组合在一起以执行更复杂的任务。 运行代理该框架公开一个 CLI 接口来运行代理。若要开始,需要设置以下环境变量: LIVEKIT_URLLIVEKIT_API_KEYLIVEKIT_API_SECRET 运行工作线程这将启动工作线程并等待用户连接到您的 LiveKit 服务器: python my_agent.py start将 Playground 用于代理 UI为了简化构建和测试代理的过程,我们开发了一个名为“playground”的多功能 Web 前端。您可以使用或修改此应用程序以满足您的特定要求。它还可以作为完全自定义代理应用程序的起点。 Hosted playground 托管游乐场Source code 源代码Playground docs Playground 文档 加入特定聊天室要加入已处于活动状态的 LiveKit 聊天室,您可以使用以下 simulate-job 命令: python my_agent.py simulate-job --room-name 我运行代理时会发生什么?当您按照上述步骤运行代理时,将启动一个工作线程,该工作线程将打开与 LiveKit 服务器实例(由 your LIVEKIT_URL 定义并使用访问令牌进行身份验证)的经过身份验证的 WebSocket 连接。 此时实际上没有代理在运行。相反,工作线程正在等待 LiveKit 服务器为其分配作业。 创建聊天室时,服务器会通知其中一个已注册的工作人员有关新作业的信息。被通知的工人可以决定是否接受它。如果工作人员接受作业,工作人员将把你的代理实例化为参与者,并让它加入房间,在那里它可以开始订阅轨道。一个工作线程可以同时管理多个代理实例。 如果通知的工作人员在预定的超时期限内拒绝作业或未接受作业,则服务器会将作业请求路由到另一个可用的工作人员。 当我 SIGTERM 工人时会发生什么?编排系统专为生产用例而设计。与典型的 Web 服务器不同,代理是一个有状态程序,因此在管理任何活动代理时不能终止工作线程非常重要。 在工作线程上调用 SIGTERM 时,工作线程将向 LiveKit 服务器发出信号,表明它不再需要额外的作业。它还将自动拒绝在收到服务器信号之前通过的任何新作业请求。工作线程在管理连接到房间的任何代理时将保持活动状态。 下载模型文件某些插件需要先下载模型文件才能使用。若要下载代理的所有必要模型,请执行以下命令: python my_agent.py download-files如果您正在开发自定义插件,则可以通过在插件类中实现方法 download_files 来集成此功能: class MyPlugin(Plugin): def __init__(self): super().__init__(__name__, __version__) def download_files(self): _ = torch.hub.load( repo_or_dir="my-repo", model="my-model", ) 项目链接 https://github.com/livekit/agents
0 阅读:0

智能科技扫地僧

简介:感谢大家的关注