OpenVINO™开发者说:把 OpenVINO™端侧 AI 搬上魔搭创空间,智能课堂笔记助手部署实录

openlab_96bf3613 更新于 2小时前

【开篇寄语】本文为 OpenVINO™ 社区开发者的实践分享。课堂笔记整理,能否做到完全离线、不用显卡、还能一键部署成智能体? 针对这三重现实需求,作者基于OpenVINO™量化加速与Qwen3端侧模型,构建了一套零云端、零API费用的完整方案。文章从环境搭建、内存调优,到Skill封装与ModelScope上线逐一拆解,并附有踩坑实录,可供学生、端侧AI开发者和效率工具创作者直接上手复用。OpenVINO™ 作为开源AI工具套件,期待大家结合自身场景验证与交流,共同推动技术落地。

【作者介绍】LucianaiB | 专注提质增效,探索 AI 前沿技术 MCP开发者 | Agent开发者 | Skill开发者

项目名称:基于 OpenVINO 端侧推理 + Skill 框架的智能课堂笔记助手

在线体验地址:https://www.modelscope.cn/studios/WEIAIb/Smart-Class-Note-Assistant

灵感流地址:https://www.modelscope.cn/gallery/WEIAIb/a135cbac-4ff7-46c0-ab7e-45aaf65ef069

Skill 部署(魔搭创空间)https://modelscope.cn/studios/WEIAIb/Intelligent_Classroom_Note_Assistant

文章地址:https://www.modelscope.cn/learn/6630

课堂录音 → 自动转写 → 结构化笔记 → 语音播报。听起来需要一整套云端 GPU 服务器 + 多条 API 调用?其实不用。没有云 API,没有显卡,没有隐私泄露风险——纯 CPU 推理,开源模型,全部代码跑在一台普通电脑上。

本文完整记录了从本地开发到创空间上线的整个过程,以及中间踩过的每一个坑。

〇、为什么值得做?

OpenVINO:让 AI 推理真正落地

OpenVINO 是 Intel 推出的端到端模型推理优化框架。它的核心价值在于一件事:把原本只能在GPU上跑的大模型,压缩、量化、编译后放到 CPU 上高效执行。

本项目使用的 Qwen3 系列 OpenVINO 量化模型,效果非常出色:

  • Qwen3-ASR-0.6B — 不到 1GB 的体积,中文语音识别准确率媲美商用方案,支持中英双语自动检测

  • Qwen3-VL-4B INT4 — 4B 参数经过 INT4 量化后仅需 2~3GB 显存,语言理解和内容结构化能力远超同体积模型

  • Qwen3-TTS-0.6B — 支持自定义说话人、语言和风格指令的语音合成,生成的语音自然度高、可定制性强

这些模型经过 OpenVINO 的 INT4/FP16 量化后,不仅大幅降低了模型体积,还通过图优化和算子融合实现了推理速度的成倍提升。在普通笔记本 CPU 上即可完成全流程——这在一年前几乎是不可想象的。

一、项目概述

做什么? 一个"智能课堂笔记助手",上传一段课堂录音,自动完成三步:

  1. ASR语音识别 — 把录音转成文字

  2. VLM 结构化笔记 — 把口语化的转写整理成 Markdown 格式的结构化笔记

  3. TTS语音播报 — 把笔记朗读出来,方便通勤时复习

技术栈:

  • 推理引擎:OpenVINO(INT4 量化,CPU 即可运行)

  • 模型编排:Openclaw (Skiii) 智能体框架

  • 前端界面:Gradio 5.x(Material Design 3 风格)

  • 部署平台:ModelScope 创空间

二、核心架构:流水线模式

三个模型串联跑在同一台机器上,如果同时加载所有模型,内存会直接爆掉。解决方案是懒加载 + 用完即卸载

Audio → [加载 ASR] → 转写 → [卸载 ASR, gc.collect()]      → [加载 VLM] → 整理笔记 → [卸载 VLM, gc.collect()]      → [加载 TTS] → 生成语音 → [卸载 TTS, gc.collect()]      → 完成

每一步加载前一个模型、使用后立刻释放内存,避免 OOM。

三、Skill 技能封装

除了 Gradio 界面和命令行,项目还通过 OpenClaw 的 Skill(技能)规范 进行了封装,让 AI 智能体也能直接调用。

什么是 Skill?

Skill 是 OpenClaw 生态中的一种标准化技能定义方式。通过 skill/SKILL.md 和 skill/_meta.json,我们向 AI 智能体声明:

"当用户提到'课堂笔记'、'录音整理'、'生成笔记'、'语音笔记'等需求时,自动触发本项目的处理流程。"

技能元数据(_meta.json

{
    "name": "**art-notes-assistant",  "version": "1.0.0",  "description": "智能课堂笔记助手 — 课堂录音自动转写、结构化笔记生成、语音播报复习",  "models": [    "snake7gun/Qwen3-ASR-0.6B-fp16-ov",    "snake7gun/Qwen3-VL-4B-Instruct-int4-ov",    "snake7gun/Qwen3-TTS-CustomVoice-0.6B-fp16-ov"  ],  "entry": "cli.py",  "ui": "app.py",  "hardware": {
      "min_ram_gb": 8,    "recommended_ram_gb": 16,    "accelerator": ["CPU", "Intel Arc GPU"]  }}

这里定义了技能名称、所依赖的模型、硬件要求,以及入口点(cli.py 命令行 / app.py 图形界面)。

技能描述(SKILL.md

name: **art-notes-assistantdescription: 将课堂录音自动转写为文字,生成结构化笔记,并语音播报复习。  当你需要整理课堂笔记、会议记录或播客摘要时使用此技能。metadata:  openclaw:    requires:      env: ["SMART_NOTES_MODEL_DIR"]      bins: ["python3"]    trigger: ["课堂笔记", "录音整理", "生成笔记", "语音笔记"]

关键设计:

  • Trigger(触发词):定义了 AI 智能体识别用户意图的关键词。当用户说"帮我做一下课堂笔记"或"整理这段录音"时,智能体会自动匹配到这个技能

  • Requires(前置依赖):声明了运行环境要求(环境变量 SMART_NOTES_MODEL_DIR 和 python3

  • Description(技能描述):用自然语言告诉 AI 这个技能做什么、什么时候使用

三种调用方式

Skill 封装后,用户可以通过三种方式使用本项目:

Skill使用实例

 Skill 部署(魔搭创空间):https://modelscope.cn/studios/WEIAIb/Intelligent_Classroom_Note_Assistant

在 QwenPaw 中导入该 Skill 时的界面:

本案例Skill 被调用并返回结果的界面,更多的功能欢迎来创空间使用(如语音转换功能等等,欢迎来创空间使用):

由于内存大小,模型部署QwenPaw,更多的功能欢迎来创空间使用(如语音转换功能等等,欢迎来创空间使用)

四、创空间部署全流程

Step 1:创建创空间

登录 ModelScope,创建新创空间:

关键设置:

  • SDK 类型:选择 Gradio

  • License:选择 Apache-2.0(后面会说到这个坑)

  • 可见性:根据需要选择公开或私有

Step 2:克隆仓库

创空间创建后会自动生成一个 Git 仓库:

git lfs installgit clone http://oauth2:<your_token>@www.modelscope.cn/studios/<username>/<space-name>.git

Step 3:准备项目文件

最终上传到创空间的文件结构:

Smart-Class-Note-Assistant/├── app.py                          # Gradio 入口├── pipeline.py                     # 三步串联核心逻辑├── cli.py                          # 命令行工具├── download_models.py              # 模型下载脚本├── qwen_3_asr_helper.py            # OpenVINO ASR 推理封装├── qwen_3_tts_helper.py            # OpenVINO TTS 推理封装├── requirements.txt                # Python 依赖├── setup.sh                        # 一键安装脚本├── README.md                       # 创空间描述卡片 + YAML 元数据├── classroom_recording.mp3         # 示例音频├── Qwen3-ASR-0.6B-fp16-ov/         # ASR 模型(LFS 跟踪)├── Qwen3-VL-4B-Instruct-int4-ov/   # VLM 模型(LFS 跟踪)└── Qwen3-TTS-CustomVoice-0.6B-fp16-ov/  # TTS 模型(LFS 跟踪)

Step 4:编写 README.md YAML 元数据

这是整个部署过程中最容易出问题的部分。 创空间需要 README.md 开头包含 YAML frontmatter:

title: 智能课堂笔记助手emoji: colorFrom: bluecolorTo: indigosdk: gradiosdk_version: 5.34.1app_file: app.pypinned: falselicense: apache-2.0description: 课堂录音 → 自动转写 → 结构化笔记 → 语音播报,基于 OpenVINO 端侧推理tags:gradioopenvinoasrttsvlm

踩坑 1:License 字段报错一开始我填了 license: MIT,页面一直提示"请检查 README.md 中 yaml 的 license 字段是否正确填写"。后来发现这个字段不仅要在 README 里写,还要在创空间设置页面的 License 下拉框中手动选择,两者要一致。最终选择了 apache-2.0,格式与 ModelScope 官方空间(如 modelscope-studio、ReplaceAnything)保持一致。

Step 5:配置 requirements.txt

gradio>=5.0.0openvino>=2025.4.0nncf>=2.15.0torch>=2.6.0torchaudio>=2.6.0git+https://github.com/openvino-dev-samples/optimum-intel.git@2f62e5aee74b4acba3836e1f26678c0db0a09c00modelscopeqwen-vl-utilsPillowtransformersaccelerateqwen-asrsoundfilelibrosascipyhuggingface_hubnumpy<2.0

踩坑 2:--extra-index-url导致依赖安装失败本地开发时用了 --extra-index-url https://download.pytorch.org/whl/cpu 来安装 CPU-only 版 PyTorch。但创空间的 pip 可能无法访问这个源,导致整个安装流程中断。解决方案: 去掉 --extra-index-url,让创空间自动选择可用的 PyTorch 版本。

Step 6:适配 Gradio 5.x

踩坑 3:CSS参数放错了位置Gradio 4.x 中 demo.launch(css=...) 是合法的,但在 5.x 中 css 参数必须放在 gr.Blocks() 构造函数里:如果放错位置,Gradio 会静默启动但前端页面显示异常。

Step 7:上传文件并推送

# 模型文件通过 Git LFS 跟踪(.gitattributes 已配置)git add -Agit commit -m "上传智能课堂笔记助手"git push

踩坑 4:Git 索引锁文件LFS 大文件下载时,如果中途被打断,.git/index.lock 会残留,导致后续所有 git 操作报错。解决方法很简单:find .git -name "*.lock" -delete git reset --hard HEAD

Step 8:创空间设置

推送完成后,到创空间设置页面确认:

  1. License 已选择 Apache-2.0

  2. 入口文件 确认为 app.py

  3. 构建日志显示 pip install 完成且 python app.py 成功启动

Step 9:上线效果

使用效果:

访问地址:https://www.modelscope.cn/studios/WEIAIb/Smart-Class-Note-Assistant

五、踩坑经验汇总

六、应用创意与场景

课堂笔记(默认场景)

上传一节课的录音,自动整理成结构化的 Markdown 笔记,并生成语音摘要,方便通勤路上"听笔记"。

会议纪要

开会时打开录音,会后自动生成:

  • 会议要点摘要

  • 行动项清单

  • 语音播报(发给无法看文档的同事)

播客/视频内容整理

把感兴趣的播客或视频内容录音转文字后,AI 自动生成结构化摘要,标注关键观点和金句。

无障碍辅助

为视力障碍用户或阅读困难者提供"文字 → 语音播报"的自动转换能力,让他们可以通过听来获取信息。

七、技术细节速览

模型选型

总模型大小约 7.2GB,通过 Git LFS 上传到创空间仓库中。

端侧推理的意义

为什么不直接调 API?

  • 隐私安全:课堂录音全程在本地处理,不上传任何数据到云端

  • 离线可用:不需要网络连接,随时随地处理

  • 零成本:不产生 API 调用费用,无使用次数限制

  • 合规性:课堂内容、会议内容等敏感数据不会外泄

八、后续优化方向

  1. GPU加速:支持 GPU 推理设备,加快 VLM 笔记生成速度

  2. 流式输出:ASR 转写结果实时显示,不必等待全部转写完成

  3. 多语言支持:自动检测语言并适配不同课堂场景

  4. 更丰富的笔记模板:用户可自定义笔记格式和结构

  5. 长音频切分:支持超过 30 分钟的长录音自动分段处理

九、项目地址

项目名称:基于 OpenVINO 端侧推理 + Skill 框架的智能课堂笔记助手

在线体验地址:https://www.modelscope.cn/studios/WEIAIb/Smart-Class-Note-Assistant

灵感流地址:https://www.modelscope.cn/gallery/WEIAIb/a135cbac-4ff7-46c0-ab7e-45aaf65ef069

文章地址:https://www.modelscope.cn/learn/6630

如果你也对端侧 AI 感兴趣,欢迎 Fork 这个项目,也欢迎在创空间留言交流你的想法或改进建议。

0个评论