https://www.bilibili.com/video/BV17HaKzLEi3/

运行视频。

围绕 Sherpa-ONNX 关键词唤醒环境配置 的排查过程。


学习日记 —— Sherpa-ONNX 关键词唤醒调试记录

📅 日期

2025-09-02


📝 学习内容

  1. MOSS & 相关背景

    • 初步了解了第一代 MOSS 项目的开发历程,知道「虾哥」在其中的关键贡献(主要是开源生态和技术实现层面的支持)。

  2. 模型加载问题

    • 报错:

      InitDecoder:181 'vocab_size' does not exist in the metadata
      
    • 原因:ONNX 模型缺少 vocab_size 元数据。

    • 学到:有些 Sherpa-ONNX 模型需要带完整的元数据,如果下载的模型不包含,就会初始化失败。

  3. 路径问题 (PowerShell)

    • 多次遇到 cd: 找不到路径 的错误。

    • 原因:路径里有空格或特殊符号,或者路径根本不存在。

    • 解决方法:在 PowerShell 中使用引号 "..." 并确认文件夹实际存在。

  4. KeywordSpotter 初始化错误

    • 报错:

      ValueError: invalid stof argument
      
    • 原因:配置里有字段(如 sample_rate、mel_bins 等)本应是数字,但传入了字符串或空值。

    • 学到:

      • Sherpa-ONNX 的 KeywordSpotter 对配置严格要求,所有数值参数必须是整数/浮点数。

      • 在调用前打印配置内容,可以快速定位错误字段。

  5. 如何在 Windows/PyCharm 执行 Linux 命令

    • 方法:

      • 在 Windows PowerShell 或 CMD 中可以运行部分命令。

      • 需要 Linux 工具时,可以安装 WSL (Windows Subsystem for Linux),或者在 Python 中用 subprocess 调用。


🔍 调试方法总结

  • 先跑命令行 Demo → 确认模型和参数是否正确。

  • 再看 Python 封装 → 打印传入的配置,确保和 Demo 参数一致。

  • 逐步排查 → 先确认路径存在,再确认数值参数类型正确。


🤔 我的收获

  • 现在我能更快定位 ONNX 模型初始化类报错的原因。

  • 熟悉了在 Windows 下如何用 PowerShell/WSL 来跑 Linux 风格命令。

  • 意识到 配置验证 很重要,尤其是类型(string vs int/float)的问题。


好的 👍 我帮你把这几天的问答整理成一个 学习日记,内容既保留技术细节,又有记录感。下面是初稿:


学习日记

学习主题

语音助手 GUI 界面开发与资源优化

学习过程与收获

1. 理解现有 GUI 代码结构

  • 学习了 GuiDisplay 类的作用:通过 PyQt5 构建图形化界面,负责显示情绪表情、用户输入和系统对话。

  • 发现情绪表情的切换是通过 update_emotion() 方法实现的,原理是加载对应的图片资源。

  • 一开始代码写的是 .png 格式,但实际 assets/ 文件夹里存放的是 .gif 文件,这说明项目经历过资源更新。

2. 图片与动画显示方式

  • PNG:只能显示静态图片,如果想动起来,需要外部逻辑不断切换图片帧。

  • GIF:自带多帧,可以通过 QMovie 在 PyQt5 中直接播放,避免外部频繁刷新。

  • 收获:明白了 GUI 表情动画有两种实现方式——逐帧刷新(PNG)和自带帧动画(GIF)。

3. Jarvis 风格动画尝试

  • 用 Python 的 matplotlib.animation 生成了一个科幻感的能量环动画,并保存为 GIF。

  • 这样可以替换现有的表情 GIF,实现类似《钢铁侠》里的 Jarvis 风格界面效果。

4. 二次元表情扩展

  • 在原本的 emoji 表情基础上,尝试生成了一套二次元风格的女性表情包(不同情绪:生气、开心、震惊等)。

  • 这为后续在助手中切换不同“形象”提供了素材支持。

遇到的问题

  • 一开始搞不清楚为什么代码里写 .png,但文件夹里全是 .gif,后来确认是历史遗留问题。

  • 动画效果实现方式存在差异,需要决定是否统一为 GIF。

下一步计划

  • 修改 update_emotion() 方法,兼容 PNG 和 GIF 两种格式。

  • 整理一套高质量的 Jarvis 动画资源,替换现有的 emoji。

  • 考虑让助手在不同场景下自动切换“二次元形象”或“科幻形象”,增强交互体验。


Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐