📖 一、项目简介

Snowboy 是由 KITT.AI 开发的轻量级语音唤醒引擎,它的核心目标是: 👉 让设备在低功耗、低延迟、离线的条件下,随时监听你的自定义“唤醒词”。

你可以把 Snowboy 想象成设备的“耳朵”,它不会一直处理所有语音,而是安静等待你说出 “芝麻开门”“你好小八” 这样的专属指令,一旦捕捉到,就会激活后续的语音处理模块(比如 EasyVoice、Dolphin ASR)。


🌟 二、核心特性

  • 🔒 本地化运行:完全离线,数据不上传云端,保障隐私。

  • 🧩 自定义唤醒词:可训练专属的 .pmdl / .umdl 模型文件。

  • 低延迟、低功耗:即使在树莓派、嵌入式设备上也能流畅运行。

  • 🌍 跨平台支持:支持 Linux、Windows、macOS、树莓派。

  • 🎛️ 多模型并行:同时支持多个唤醒词识别。


🎯 三、应用场景

  • 智能家居:用一句话开启/关闭灯光、电视、空调。

  • 车载助手:驾驶过程中无需触摸屏幕,直接语音唤醒系统。

  • 机器人交互:为机器人配置个性化唤醒词。

  • IoT 场景:智能音箱、会议系统、语音交互终端。


⚙️ 四、本地部署教程

Snowboy GitHub 仓库

1. 环境准备

安装 Python 和音频依赖:

sudo apt-get update
sudo apt-get install python3 python3-pip portaudio19-dev
pip3 install pyaudio

2. 下载源码

git clone https://github.com/Kitt-AI/snowboy.git
cd snowboy

3. 编译核心模块

cd swig/Python3
make

4. 测试运行

python3 demo.py resources/models/snowboy.umdl

如果能在控制台看到 检测结果,说明 Snowboy 已正常工作。

5. 使用自定义唤醒词

  • 前往 Snowboy 自定义唤醒训练平台https://snowboy.hahack.com/,生成 .pmdl 文件。

  • 替换 demo 脚本中的模型路径即可:

detector = snowboydecoder.HotwordDetector("resources/models/my_word.pmdl", sensitivity=0.5)

🐳 五、容器化部署教程

在实际应用中,我们更推荐用 Docker 来部署 Snowboy,这样能避免依赖环境冲突,也方便迁移和上线。

1. Dockerfile

FROM python:3.8-slim
​
WORKDIR /app
ENV PYTHONPATH=/app/swig/Python:$PYTHONPATH
ENV PYTHONUNBUFFERED=1
​
# 1. 使用国内 apt 源(清华)
RUN echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free" > /etc/apt/sources.list && \
    echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free" >> /etc/apt/sources.list && \
    echo "deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free" >> /etc/apt/sources.list
​
# 2. 安装系统依赖和编译工具
RUN apt-get update && apt-get install -y --fix-missing \
    build-essential \
    python3-dev \
    swig \
    libatlas-base-dev \
    portaudio19-dev \
    libffi-dev \
    sox \
    libsox-fmt-all \
    && rm -rf /var/lib/apt/lists/*
​
# 3. 复制项目文件
COPY . /app/
​
# 4. 编译 Snowboy SWIG Python 模块
WORKDIR /app/swig/Python
RUN make
​
# 5. 回到工作目录
WORKDIR /app
​
# 6. 升级 pip 并安装 Python 包
RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple && \
    pip install flask numpy webrtcvad pyaudio -i https://pypi.tuna.tsinghua.edu.cn/simple --verbose
​
# 7. 创建静态目录
RUN mkdir -p static
​
# 8. 暴露端口
EXPOSE 5001
​
# 9. 启动命令
CMD ["python3", "web_service.py"]

2. docker-compose.yml

version: '3'
​
services:
  snowboy:
    build: .
    container_name: snowboy-hotword
    ports:
      - "5001:5001"
    volumes:
      - ./resources:/app/resources
      - ./static:/app/static
    environment:
      - TZ=Asia/Shanghai
    restart: unless-stopped
    # 可选:限制资源使用
    # deploy:
    #   resources:
    #     limits:
    #       cpus: '0.50'
    #       memory: 512M

3. 一键构建并启动

docker-compose up -d

启动后,Snowboy 将在容器内运行,并通过宿主机挂载的 models 文件夹加载你自定义的唤醒词。

日志可在 ./logs 下查看。


🔗 六、与其他模块的衔接

  • 前置(Snowboy):捕捉唤醒词,激活语音监听。

  • 中间(Dolphin ASR):实时语音识别,转写为文字。

  • 后置(EasyVoice):进行文本转语音,实现和用户的语音沟通。

Snowboy 只负责“第一声”,真正的语音交互需要结合 Dolphin ASR + EasyVoice 才能完成。


🚀 七、总结

Snowboy 是一个极其轻量、灵活的 语音唤醒模块,适合作为语音交互系统的入口:

  • 离线运行 → 保障隐私

  • 轻量快速 → 嵌入式设备友好

  • 容器化部署 → 一键启动,快速落地

后续你可以把它与 EasyVoice、Dolphin ASR 结合,形成一个完整的 智能语音交互链路

⚠️ 注意 Snowboy 官方已停止维护,但社区依然活跃,可以长期用于本地化项目”,尽管 Kitt.AI 停止了官方支持,Snowboy 依然因其开源特性和社区贡献保持活力,值得探索.

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐