GPT-4o实时语音方案提供商Livekit开源voice agent:轻松处理音视频流
AI魔法学院
2024-07-22
分享海报

项目简介

代理框架设计用于构建在服务器上运行的实时、可编程参与者。轻松访问 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_URL

·        

LIVEKIT_API_KEY

·        

LIVEKIT_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 <my-room>

我运行代理时会发生什么?

当您按照上述步骤运行代理时,将启动一个工作线程,该工作线程将打开与 LiveKit 服务器实例(由 your LIVEKIT_URL 定义并使用访问令牌进行身份验证)的经过身份验证的 WebSocket 连接。

此时实际上没有代理在运行。相反,工作线程正在等待 LiveKit 服务器为其分配作业。

创建聊天室时,服务器会通知其中一个已注册的工作人员有关新作业的信息。被通知的工人可以决定是否接受它。如果工作人员接受作业,工作人员将把你的代理实例化为参与者,并让它加入房间,在那里它可以开始订阅轨道。一个工作线程可以同时管理多个代理实例。

如果通知的工作人员在预定的超时期限内拒绝作业或未接受作业,则服务器会将作业请求路由到另一个可用的工作人员。


当我 SIGTERM 工人时会发生什么?

编排系统专为生产用例而设计。与典型的 Web 服务器不同,代理是一个有状态程序,因此在管理任何活动代理时不能终止工作线程非常重要。

在工作线程上调用 SIGTERM 时,工作线程将向 LiveKit 服务器发出信号,表明它不再需要额外的作业。它还将自动拒绝在收到服务器信号之前通过的任何新作业请求。工作线程在管理连接到房间的任何代理时将保持活动状态。

下载模型文件

某些插件需要先下载模型文件才能使用。若要下载代理的所有必要模型,请执行以下命令:

·        

python my_agent.py download-files

如果您正在开发自定义插件,则可以通过在插件类中实现方法 download_files 来集成此功能:

·        

1.class MyPlugin(Plugin):
2.def __init__(self):
3.super().__init__(__name__, __version__)
4.
5. def download_files(self): 
6._ = torch.hub.load(
7.repo_or_dir="my-repo",
8.model="my-model", 
9.)

项目链接

https://github.com/livekit/agents

出自:https://mp.weixin.qq.com/s/cGdmd-0Mn6TMsQ9pAbpQzw

© THE END

转载请联系本网站获得授权

投稿或版权问题请加微信:skillupvip