FastRTC: 用于 Python 的实时通信库

Hugging Face 推出了 FastRTC,这是一个 Python 库,使开发者能够在不需要深入了解 WebRTC 或 WebSocket 协议的情况下构建实时音视频 AI 应用。该库抽象了复杂的通信层,使 ML 工程师能够专注于应用逻辑和模型集成。

核心功能和特性

FastRTC 提供了一套工具,以简化从原型到生产的实时 AI 流的过渡:

  • 自动语音检测和轮流处理: ReplyOnPause 功能管理语音活动检测和轮流逻辑,消除了开发者手动实现这些机制的需要。
  • 用于原型开发的集成 UI: FastRTC 包含一个内置的 WebRTC 启用的 Gradio UI,使开发者能够通过 stream.ui.launch() 立即测试流。
  • 生产部署: 可以使用 stream.mount(app) 将流挂载到任何 FastAPI 应用程序,从而实现自定义 UI 的使用以及超出 Gradio 环境的部署。
  • 电话集成: 通过 fastphone() 方法,开发者可以获取一个免费电话号码(需要 Hugging Face 令牌),以将传统电话呼叫直接连接到音频流中。
  • 协议支持: 该库原生支持 WebRTC 和 WebSockets。
  • 开发工具: FastRTC 包含内置的语音转文本(STT)、文本转语音(TTS)和停用词检测工具,以加速开发过程。

技术实现

FastRTC 的设计旨在保持灵活性,使开发者能够使用他们偏好的模型和 API。它处理通信层,而开发者提供响应逻辑。

实时音频回声

对于基本实现,FastRTC 使用 Stream 类和一个 ReplyOnPause 包装器。一个返回音频作为元组 (sample_rate, audio_data) 的生成器函数被传递给流,然后该流处理将该音频实时传回用户的逻辑。

LLM 语音聊天集成

FastRTC 通过提供从 Hugging Face Hub 获取优化模型的辅助函数,简化了语音到语音 AI 的管道:

  • STT: get_stt_model() 获取 Moonshine Base,针对设备端 CPU 推理进行了优化。
  • TTS: get_tts_model() 获取 Kokoro-82M,同样针对设备端 CPU 推理进行了优化。

这些工具可以与任何 LLM API(如 SambaNova、OpenAI 或 Gemini)结合,创建完整的语音聊天循环:STT 模型将用户音频转换为文本,LLM 生成文本响应,TTS 模型将音频响应流式传回用户。

背景和市场定位

FastRTC 的发布填补了 AI 生态系统中的一个空白:高性能实时语音模型(如 OpenAI 的实时多模态 API、Google 的 Gemini、Kyutai 的 Moshi、Alibaba 的 Qwen2-Audio 和 Fixie.ai 的 Ultravox)已经大量涌现,但用于在基于 Python 的实时应用中部署它们的工具仍然很难。FastRTC 旨在降低 ML 工程师的入门门槛,这些工程师可能缺乏实时音视频流特定网络需求的经验。

Sources