05 唤醒词检测:让语音助手随时待命

410 阅读3分钟

05 唤醒词检测:让语音助手随时待命

——“嗨,小助手!” 就像魔法一样,它醒了。

hey franky

🧠 引子:语音助手也得有“耳朵”

假设你做了个聪明的语音助手,能查天气、放音乐、播报日程……
但它得随时待命,不可能一直盯着你喊“我准备好了”。
这时,你需要一双“随时倾听的耳朵”——唤醒词检测。

就像小爱同学听到“嘿小爱”立刻响应,或者 Siri 听到“嘿 Siri”立刻清醒。
在我们的项目中,这一步也不能少。


🎯 什么是唤醒词检测?

简单说:
就是让语音助手在本地持续监听环境声音,一旦听到特定“唤醒词”(比如“嘿助手”),就马上启动后续语音识别和指令解析。

关键要求有三个:

  • 实时监听,不能漏听

  • 尽量不误报,比如洗澡水声不能触发它

  • 必须能在低功耗设备如树莓派上运行


🔧 我用的方案:Porcupine + Raspberry Pi

我用了 Picovoice Porcupine

✅ 本地运行,无需联网,响应快
✅ 多平台支持(包括 Raspberry Pi)
✅ 支持自定义唤醒词,甚至可以训练自己的名字

配置流程概览:

import pvporcupine
import pyaudio

porcupine = pvporcupine.create(keywords=["hey siri", "jarvis"])
audio_stream = pyaudio.PyAudio().open(
    rate=porcupine.sample_rate,
    channels=1,
    format=pyaudio.paInt16,
    input=True,
    frames_per_buffer=porcupine.frame_length
)

while True:
    pcm = audio_stream.read(porcupine.frame_length)
    pcm = struct.unpack_from("h" * porcupine.frame_length, pcm)
    result = porcupine.process(pcm)
    if result >= 0:
        print("🔔 唤醒词检测到!启动语音助手")
        # 后续执行语音识别与NLU

🚀 实际体验如何?

我设置了唤醒词:“Franky”
测试环境是我家客厅,旁边有娃、有风扇、有背景音乐……Porcupine 竟然能精准唤醒,误触发率极低。

即使我边煮饭边喊一声“嘿助手”,它也能乖乖醒来。

当然,训练自己专属唤醒词更酷。我用它识别“皮卡丘”,让我家三岁小朋友乐开了花。


🎛️ 设计注意事项

  • 一定要做降噪处理,否则在嘈杂环境下会误唤醒或漏唤醒

  • 播放播报内容时先关闭监听线程,避免“自己唤醒自己”

  • 语音助手休眠时可关闭唤醒词监听,节省资源


🧩 接下来怎么用它?

唤醒词检测 = 起点
唤醒后,接入你自己的语音识别模块 → NLU解析 → 调用具体任务模块

比如我项目里:

  1. 识别唤醒词

  2. Whisper 转文字

  3. 丢进自写的 NLU 解析器

  4. 根据意图触发对应任务(比如 WeatherTask、MusicTask)

代码实现

它就像魔法咒语一样,让你的语音助手从沉睡中醒来,听你差遣。


🧪 结语:

唤醒词检测,就像点火按钮。没有它,你的语音助手永远静音;有了它,它才能像灵宠般随叫随到。

在下一篇,我们将揭秘如何实现「意图解析」——让助手听懂你说的每句话,敬请期待!


🛠️ 如果你也想试试看?

我可以分享项目Demo视频、代码结构,甚至教你训练属于自己的唤醒词。
欢迎私信交流,一起打造下一代语音助手!

🧾 声明:所有内容均为我非工作时间的个人开发探索,技术探索过程公开透明,旨在分享语音交互领域的实战经验,不代表任何单位或组织,不涉及任何职务行为或工作成果,仅供学习参考。