Skip to content

Repository files navigation

Step-Audio Full-Duplex Demo (Powered by TurnSense)

这是一个基于 Step-Audio-2-mini 大模型与 TurnSense 话语完整性检测模块构建的全双工(Full-Duplex)实时语音对话演示系统。

本演示旨在展示如何以透明、简洁、无性能损失的方式,将 AI 语音交互从传统的“对讲机模式”升级为“即插即用”的自然对话模式。

🌟 核心特性

  1. 全双工实时交互:支持在 AI 说话时随时打断,支持极其自然的快速翻转。
  2. 智能状态机管理
    • 快速打断:检测到用户语音持续超过 500ms 即刻停止 AI 输出。
    • 话语完成度检测 (TurnSense):通过三分类模型判定用户意图。
      • Complete: 用户说完,AI 立即回复(200ms 静音触发)。
      • Incomplete: 用户未说完(如:语气词、长停顿),系统额外等待 800ms。
      • Invalid: 语义无效或纯噪音,系统自动丢弃,保持会话清洁。
  3. 流式合成与播放:采用 Step-Audio-2 的流式 Token 输出,结合 Token2Wav 实现低延迟 PCM 流式音频播放。
  4. 可视化控制台:实时展示 VAD 概率曲线、TurnSense 判定结果及系统内部状态。

🏗 系统架构

┌─────────────────────────────────────────────────────────────────────┐
│  Frontend (HTML/JS)  - Port 12888                                   │
│  ┌─────────────┐  ┌──────────────┐  ┌─────────────┐                │
│  │ 麦克风采集   │  │ 状态可视化    │  │ 音频播放器   │                │
│  │ (WebAudio)  │  │ VAD/TurnSense│  │ (PCM Stream) │                │
│  └──────┬──────┘  └──────────────┘  └──────┬──────┘                │
│         │              ▲                     ▲                        │
│         └──────────────┼─────────────────────┘                       │
│                        │ WebSocket                                    │
└────────────────────────┼────────────────────────────────────────────┘
                         │
┌────────────────────────┼────────────────────────────────────────────┐
│  Backend (FastAPI + WebSocket) - Port 12889                          │
│         │                                                            │
│  ┌──────▼──────┐                                                     │
│  │ 会话管理器   │ (Session Manager / State Machine)                   │
│  └──┬───┬───┬──┘                                                     │
│     │   │   │                                                        │
│  ┌──▼┐ ┌▼──┐ ┌▼─────────────────┐                                   │
│  │VAD│ │TS │ │ Step-Audio-2 客户端│                                   │
│  │   │ │   │ │ + Token2Wav       │                                   │
│  └───┘ └───┘ └──────────┬───────┘                                   │
│                          │ HTTP Stream                                │
└──────────────────────────┼──────────────────────────────────────────┘
                           │
┌──────────────────────────▼──────────────────────────────────────────┐
│  vLLM (Step-Audio-2-mini) - Port 12890 (推理后端)                    │
└─────────────────────────────────────────────────────────────────────┘

🚀 快速开始

1. 准备工作

硬件要求

  • 显存 >= 24GB 的 NVIDIA GPU (推荐使用 A10, A100, 或 3090/4090)。

环境安装

# 克隆仓库并进入目录
git clone https://github.com/your-repo/step-audio-demo.git
cd step-audio-demo

# 创建虚拟环境
conda create -n step-audio python=3.10
conda activate step-audio

# 安装依赖
pip install -r server/requirements.txt
# 额外注意: 确保安装了 Step-Audio2 所需的 flash-attn 和其它推理依赖

2. 模型下载与放置

请按照以下结构准备模型文件:

  • Step-Audio-2-mini: 放置于 Step-Audio2/pretrained_models/Step-Audio-2-mini
  • Silero VAD: 放置于 silero-vad/src/silero_vad/data/
  • TurnSense: 放置于 TurnSense/pretrained_models/

3. 启动推理后端 (vLLM)

使用 Docker 启动 step-audio-2-mini 模型:

docker run --rm -ti \
  --gpus '"device=0"' \
  -v /path/to/Step-Audio-2-mini:/Step-Audio-2-mini \
  -p 12890:12890 \
  stepfun2025/vllm:step-audio-2-v20250909 \
  vllm serve /Step-Audio-2-mini \
  --served-model-name step-audio-2-mini \
  --port 12890 \
  --gpu-memory-utilization 0.8 \
  --max-model-len 16384 \
  --trust-remote-code

4. 启动演示后端

cd server
python main.py

后端将运行在 12889 端口。

5. 启动演示前端

cd frontend
python serve.py

前端将运行在 12888 端口。在浏览器中打开 http://localhost:12888 即可开始对话。


⚙️ 参数配置

你可以在前端页面的右侧面板中实时调整以下参数:

  • VAD Threshold: 判断语音的灵敏度,默认 0.5。
  • Silence Duration: 判定用户说完话所需的静音时长,建议 200-400ms。
  • Interrupt Duration: AI 说话时,用户需要持续说话多久才触发打断,建议 500ms。
  • TurnSense Toggle: 是否开启话语完整性检测。开启后,即使静音超过阈值,若模型认为句子不完整,也会进入等待状态。

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages