📰 正文

💡 背景:随着 OpenAI、Google 等公司发布 实时语音 AI 模型(如 ChatGPT 语音、Gemini 语音),以及 Moshi、Qwen2-Audio、Fixie.ai 等开源音频大模型的崛起,开发 流式音频 AI 应用 变得至关重要。然而,大多数机器学习工程师并不熟悉 WebRTC 等实时通信技术,因此 FastRTC 旨在让 Python 开发者能够轻松实现 AI 语音应用。

因此Hugging Face 推出了一个专门为 Python 开发者打造的实时通信(RTC)库:FastRTC ,专门用于构建 实时音频和视频 AI 应用。

该库大大降低了开发门槛,让你可以 快速构建 语音识别、语音合成和 AI 语音对话应用。而无需掌握复杂的 WebRTC、WebSockets 技术。

🔹 你可以用 FastRTC 轻松实现:

✅ 实时语音聊天(像 ChatGPT 语音模式一样) ✅ 语音 AI 机器人(自动语音助手、客服机器人) ✅ AI 语音播客(自动朗读文章并转换为播客) ✅ 语音翻译(实时多语言翻译) ✅ 电话接入 AI 语音(让用户拨打电话,AI 自动应答)

目前的 AI 语音开发痛点

❌ 传统 WebRTC 方案难以集成 → 需要掌握复杂的网络通信、音视频处理知识 ❌ 现有 Python 库支持有限 → 语音识别(STT)、语音合成(TTS)和 AI 互动需要多个 API 组合 ❌ AI 语音交互延迟高 → 语音输入后等待 AI 处理,响应速度慢,不适合实时应用

image

✅ FastRTC 解决了这些问题!

开箱即用:集成 语音识别(STT)、语音合成(TTS)、AI 对话,提供一站式解决方案

自动 UI:内置 WebRTC + Gradio 界面,随时测试和部署

低延迟:支持 WebRTC & WebSockets,让语音交互更加流畅


🔹 FastRTC 的核心功能

1️⃣ 自动语音检测(VAD)& 轮流对话

AI 自动检测语音输入,无需手动控制说话时机。

内置 VAD(语音活动检测),只在用户讲话时触发 AI 处理,减少不必要的计算。

💡 你只需要写对话逻辑,FastRTC 自动处理语音交互!


2️⃣ 自动生成 WebRTC UI

FastRTC 内置 Gradio 界面,可以直接在 Web 浏览器中测试 AI 语音应用!

支持 WebRTC 实时流式通信,让音频处理更高效、低延迟。

💡 你不需要写前端代码,FastRTC 直接帮你生成可用 UI!


3️⃣ AI 语音助手支持(STT + TTS)

📌 STT(语音转文本) → 自动识别用户语音,并转换为文字 📌 TTS(文本转语音) → 让 AI 语音回答用户,而不是文字输出

💡 让 AI “听得懂”、“说得出”,构建 ChatGPT 语音助手一样的体验!


4️⃣ 电话接入 AI 语音(FastPhone API)

📌 只需 一行代码,你就可以让用户 拨打电话 与 AI 语音助手交流! 📌 FastRTC 自动生成电话号码,用户可以直接打电话进入 AI 语音流!

💡 这让 AI 语音助手可以无缝连接到传统电话系统!

🛠 快速入门:一分钟创建 AI 语音助手

📌 1️⃣ 安装 FastRTC

pip install fastrtc

2️⃣ 创建一个实时语音回声(Echo)应用

👉 这个示例会实时播放用户说的话

from fastrtc import Stream, ReplyOnPause
import numpy as np

def echo(audio: tuple[int, np.ndarray]) -> tuple[int, np.ndarray]:
    yield audio  # 直接返回用户输入的音频数据

stream = Stream(ReplyOnPause(echo), modality="audio", mode="send-receive")
stream.ui.launch()

✅ 自动识别用户语音,并实时播放回来 ✅ 无需手动处理 WebRTC,FastRTC 自动帮你搞定!


3️⃣ 创建 AI 语音助手(STT + LLM + TTS)

📌 使用 LLM 来响应用户。FastRTC 具有内置的语音转文本和文本转语音功能,因此使用FastRTC非常容易。

📌 这个示例让 AI 先把语音转换为文本,再调用 LLM(如 Llama-3.2),最后转换回语音回答用户!

import os
from fastrtc import ReplyOnPause, Stream, get_stt_model, get_tts_model
from openai import OpenAI

# 连接 SambaNova AI 语言模型
sambanova_client = OpenAI(api_key=os.getenv("SAMBANOVA_API_KEY"), base_url="https://api.sambanova.ai/v1")

# 获取语音识别 & 语音合成模型
stt_model = get_stt_model()
tts_model = get_tts_model()

def ai_conversation(audio):
    prompt = stt_model.stt(audio)  # 语音转文本
    response = sambanova_client.chat.completions.create(
        model="Meta-Llama-3.2-3B-Instruct",
        messages=[{"role": "user", "content": prompt}],
        max_tokens=200,
    )
    reply = response.choices[0].message.content
    for audio_chunk in tts_model.stream_tts_sync(reply):  # 文本转语音
        yield audio_chunk

stream = Stream(ReplyOnPause(ai_conversation), modality="audio", mode="send-receive")
stream.ui.launch()

✅ STT(语音转文本)+ LLM(自然语言处理)+ TTS(文本转语音),形成完整 AI 语音助手。 ✅ 使用 Meta-Llama-3.2 作为 LLM,可替换为 OpenAI、Gemini、Claude 等 AI 模型。

4️⃣ Bonus:让用户拨打电话进入 AI 语音流

📌 FastRTC 提供 “FastPhone” API,让用户可以通过拨打电话与 AI 语音助手互动。

stream.fastphone()

📌 终端显示:

INFO: Your FastPhone is now live! Call +1 877-713-4471 and use code 530574 to connect to your stream.
INFO: You have 30:00 minutes remaining in your quota (Resetting on 2025-03-23)

✅ 用户可以拨打这个电话号码,直接进入 AI 语音流! ✅ PRO 账户可以增加使用时长和并发量。

📌 官方文档:FastRTC Docs 📌Cookbook:https://fastrtc.org/cookbook/ 📌 GitHub 代码库:https://github.com/freddyaboulton/fastrtc 📌 Hugging Face Space:https://huggingface.co/fastrtc

官方介绍:https://huggingface.co/blog/fastrtc


来源:FastRTC:无需掌握复杂的 WebRTC、WebSockets 技术 一分钟创建 AI 语音助手