逐字稿文字預覽
Hello 大家好我是周日金 AI这两年离咱们普通用户越来越近 现在甚至不需要单独买一台服务器 我们就可以直接把手头闲置在Mac 变成一台属于自己的本地AI服务器 这期视频我会从零开始 带大家把Olama、OpenWeb UI、REG、OCR、Whisper.cpp和N8N一步步串起来 这套方案的重点就是 模型和大部分的数据都运行在自己本地的Mac上 也不要求特别高的配置 如果大家对这类玩法感兴趣 后面还可以继续带大家折腾本地图片和视频生成 本地AI编程 以及把AI介入Home Assistant 通过自然语言控制家里的智能设备 视频正式开始前 先求一波一进三连加关注支持一下 这样以后有新的教程更新 也能第一时间受到推送 非常感谢 接下来我们就从我的这台Mac mini来开始 在开始下载模型之前 我们需要先在Mac上安装OLAMA 你可以把它理解为 让普通用户可以在本地运行AI大模型的运行环境 直接前往OLAMA的官网下载对应的安装包 然后拖动到MacOS用程式文件夹就可以了 平时使用ChatGBT Cloud这类AI服务时 模型都是运行在云端服务器上 而OLAMA要做的事情 就是把像Deepseek签问LAMA这类开源模型 下载安装到你的Mac上 让他们直接利用本机的CPU 和GPU运行 安装后Olama并打开之后 下一步就是下载模型 不过这里需要注意啊 本DAI和ChatGPT这类云端的模型 最大的区别 就是模型大小会直接影响运行体验 所以不能盲目追求越大的模型就越好 我这里使用的是一台M4入门款的Mac mini 采用16GB的同一列存 加256GB的固态硬盘 确认Olama的服务在正常运行后 我们在MacOS的中段App中 输入这三条命令 它们分别负责不同的功能 第一个是大约模型 也就是本地AI的大脑 负责日常聊天 内容生成 总业资料等任务 其中4B代表40亿参数 Q4KM代表经过4B特量化 可以在降低模型这样的同时 保持不错的运行效果 是目前比较适合普通Mac的选择 第二个是向量模型 主要用于知识库检索 如果你以后想让AI读取自己的PDF 文档 视频稿件 然后根据这些资料回答问题 就需要通过embedding模型 先帮AI找到相关内容 第三个是欧塞AR文字试园模型 负责处理图片 扫描版PDF等内容 把图片里的文字提许出来 再交给语言模型进行分析 这里之所以选择签问的AR模型 是因为签问是目前比较成熟的 开源大模型之一 对中文理解和中文生成比较友好 其次是它提供的模型规格丰富 从4B到更大的参数版本 可以适配不同配置的Mac 还有一个是 它在OLAMA里的支持比较完善 安装和电用也都比较简单 当然除了签问 DeepSeq、Lama等模型也都可以运行 大家可以根据自己的需求进行选择 至于不同的Mac应该选择多大的模型 主要看新变性能和统一内存的大小 8GB内存的Mac建议先从4B级别模型开始 16GB内存运行4B会相对轻松 也可以在实际内存压力云雪情况下尝试9B 而24GB、32GB以及更高内存的Mac 则可以继续尝试更大的规格 但具体体验还会受到上下文长度和后台任务的影响 这里需要注意啊 模型标签不能随便改数字 如果继续使用千万3.5 目前OLAMA还提供9B 27B 35B等更大规格 具体名称一定以OLAMA模型库实际存在的标签为准 那咱们还是先把本地AI服务器跑起来 后续再根据实际需求升级模型 接下来我们在Microsoft的中段APP中 输入以下命令OLAMA LIST 查看是否已经全部下载完成 如果前面下载的模型都正常列出来 就可以来简单试一下模型能不能在本地正常运行 输入制传命令 olama run 千万3.5 4b-q4km 然后随便发一句话 比如你好 如果能正常给出回复就没问题了 随后输入制传命令结束对话 Bye 之后我们就可以停止运行 以释放资源 输入制传命令 olama stop 千万3.5 4b-q4km 然后再输入制传命令 olama ps 查看这个AR大模型是否仍在运行 此时应该唯空 那么就说明我们的大模型已经没有在运行了 接下来咱们就要开始准备部署 家庭局网AN对话见面了 前面我们已经通过Olama把AI模型运行在Mac上 但是目前还需要通过中端的进行操作 对于日常使用来说不太方便 所以接下来我们就要给他搭建一个 类似ChatGB的网页界面 这里使用OpenWebUI 也就是让Olama负责运行AI模型 OpenWebUI负责提供交互界面 部署完成后 家里的手机平板电脑都可以通过 浏览器放完这台Mac mini 直接使用自己的本地AI 考虑到中国大陆用户的网络环境 这里直接通过Python安装OpenWebUI 同时Olama继续只监听本机地址 不会直接报道网络中 本教程固定使用OpenWebUI 0.11.0版本 不使用latest或滚动更新版本 避免版本变化导致操作流程不一炸 首先准备Python环境 如果你的Mac已经安装Homebrew 则可以输入brew install python at 3.11 如果没有安装Homebrew 也可以直接前往Python官方网站 下载安装Python 3.11对应的MacOS安装包 后面如果会继续折腾这类工具 建议提前装好Homebrew 管理和升级会方便不少 接下来创建OpenWeb UI独立运行环境 避免影响系统里的其他python项目 后续相关代码我不再一一进行解释 如果有看不懂 可以查看代码上方的文本注释 然后通过轻滑镜像安装OpenWebUI 安装完成后 第一次启动将以只允许本机访问 先完成账号和安全设置 等命令跑起来以后 不要关闭这个中端窗口 因为OpenWeb UI的服务就运行在这里 然后617打开127.0.0.1 网好3000 第一次进入需要充电账号 第一个账号就会自动成为管理员 进入管理后台后 前往设置身份验证 把newsign apps关闭 也就是不允许新用户自由注册 同时暂时不要安装来源不明的第三方Tools Functions或Pipelines 接着就可以在流量器打开127.0.0.1 冒号11434 -API-Version 确认欧拉玛本地API正常响应 回到OpenWeb UI 在检查之前下载的前文3.5 4B-Q4KM是否已经出现在母型列表当中 确认没有问题后 在中端App中 按Ctrl加C停止OpenWeb UI 接下来开放家庭局域网 实际在系统设置网络中查看Mac mini的局域网IP 实际操作需要替完成你自己的IP 重新启动OpenWeb UI 现在Mac mini本机可以继续访问127.0.0.1 网号3000 并使用刚才创建的管理员账号进行登录 通过家庭网络里的手机 电脑则可以通过Mac mini的IP地址加段稿号3000来访问 同样使用刚才的账号来登录 这时候可以随便问您问题 看看局域网访问和模型交用是否正常 如果下设备都无法打开 依次可以清查几个地方 最后提醒一下 这里搭建的家庭局域网AI服务器 不会把服务暴露到公网 因此不需要进行路由器短口转发 也不要直接把OpenWeb AI开放到互联网环境 而这样配置后保持终端App不关闭 AI模式运行在自己的Mac上 数据只在家庭网络里进行流转 同时手机平板和电脑都可以共享这台本地AI服务器 前面OpenWeb UI已经可以这张访问了 接下来我们再给整个家庭AI服务器 建立一个统一的API接口 这样以后不管是N8N手机会议指令 还是其他支持OpenAI API的程序 都统一连接OpenWeb UI 不需要直接访问底层的奥拉玛 那这样的好处是 模型、账号和权限都可以在OpenWeb UI这一层统一管理 后面更换模型时 也不用重新修改每一个应用 时间咱们回到OpenWeb UI 点击左下角头像依次进入设置 身份验证找到API密钥并打开 如果界面提供API密钥端点限制 也一并开启 然后填写这个 这样生成的key就只允许访问模型列表和聊天接口 接下来进入账号API密钥 点击右侧的显示创建新的API密钥 生成密钥通常会以SK开头 这个密钥相当于访问我们家庭i服务器的密码 不要直接公开或者分享出去 如果后面准备长期让N8N这类的自动化工具使用 建议专门创建一个普通的本地账号 再用这个账号生成API密钥 不要长期使用管理员账号的密钥 因为密钥会计权创建这个账号的权限 而且一个账号通常只保留一个API密钥 接着我们来测试接口是否正常 打开一个新的终端APP窗口 把下面的命令中的SK换成刚才生成的密钥 如果结构正常 终端会访问当前OpenWeb UI可以调用的模型列表 这里可以顺便记一下返回结果里模型队的真实ID 因为后面其他地方调用AI时就需要填写这个名称 接下来再来测试聊天接口 同样的记得把SK开头的这串换成刚才生成的密钥 而model后面需要填写刚才模型列表里面实际反馈的ID 如果你下载的是其他签问或者其他模型 就替完成对应的模型 如果最后反馈Json里能够看到API正常 就说明这一套接口已经可以正常使用了 签问3.5在开启思考时 反馈内容里可能还会出现reasoning content这一类字段 这是正常现象 到这里我们就相当于给整个家庭AI服务器建立一个统一的入口 最底层人是Olama负责运行模型 上面的OpenWeb UI统一管理模型和API 在网上则可以接N8N手机快递指令或者其他应用 后面不管增加多少个客户端都尽量连接OpenWeb UI 而不是让每台设备直接访问欧拉玛 整个架构会更容易管理 前面我们已经把本地AI和聊天的API都搭好了 接下来就再补上一个非常熟能功能 Cell文档知识库 也就是RAG RAG可以列成先从你的资料里找内容 再交给AI声称回答 这样以后不管是自己的PDF 说明书工作文档还是视频稿 都可以放进知识库 让AI尽量根据这些资料来回答 而不是只靠模型本身的记忆 首先进入OpenWeb UI试试里的文档页面 进入模型引擎选择OLAMA API密钥可以留空 地址填写127.0.0.1 冒号11434 进入模型出入 我们在视频一开始就下载好的 轻文3-embadding0.6b 而这里顺便解释一下 这个模型不负责聊天 它的工作是把文档找完成 便于检索的向量数据 只要你提问以后 系统才能快速找到和问题最相关的资料 其他参数可以先按照这一套来设置 大部分是我认的 这些参数主要是在检索效果和上下文本 占用之间做一个比较稳妥的平衡 比如快大小可以列成 每次把文档切成多大片段 快重叠则是在相邻片段之间 保留的部分重复内容 避免一句话刚好被重点切断 TuboK代表每次提问 最多取回多少个相关片段 这里先设置为3 并不是越大越好 因为塞进太多资料 反而会占模型有限的上下文空间 接下来我们创建一个 非常简单的测试文件 方便确认RA器是否真的正常工作 用任意文本编定器 新建一个Text文本 如果你用的是 MicroOS自带的文本编辑App 记得在菜单里选择制作成文本 比如里面写上这些内容 然后保存为家庭AI测试资料.txt 回到OpenWebUI 找到左侧边来的工作空间 再点击顶部的知识库 最后点击右上角的创建 名称填写家庭AI测试库 目标可以简单写真 用于测试本地RIG文档检索和应用功能 知识库创建完之后 再点击右上角的加号 选择上传文件 把刚才的txt文件上传进去 后面也可以上传带有文字层的PDF Docx或Markdown文档 上乘完之后 在新兑化的聊天输入框里 通过警号手动附加这个支持库 而我这里为了教程演示方便 先手动选择 因为小参数模型主动判断 什么时候动用支持库 有时候不够稳定 然后我们可以问一个问题 只依据支持库回答 项目代号和设备维护时间 氛围是什么 请给出引用 正常情况下 耐心等待一会儿 他应该回答项目代号是清零 设备维护时间是每月第一 周六上午十点 而且回答旁边能够看到对应的资料引用 那么这套最基础的REG知识库就算大奖成功了 不过这样配置下来 你可能会发现还有一个地方容易踩坑 如果你的PDF是扫描件 本身没有可以复制的文字层 就不要拿它来测试REG了 因为知识库首先需要能够读取里面的文字 才能进行后续的处理 所以这种文件就需要先经过OCR 把图片里的文字设备成TXC或者Markdown 再上传到知识库来进行处理 接下来我们就继续把本地OCR的功能 也接近来 前面我们已经让AI能够读取次的文档 接下来再补上图片理解和OCR 也就是让这台本地AI不只能读文字 还可以看图片 那这里先区分两个概念 普通图片理解更适合看一张图里有什么 界面再显示什么 再顺便识别其中的文字 OCR则更专注于把图片里的文字 表格或者图表内容尽可能提取出来 先在OpenWeb UI里选择我们前面使用的 千万305 4B-KL4KM 如果你的Mac配置更高 也可以用9B的版本 上传一张同时包含物体和文字图片 然后输入 先描述画面内容 再逐项提取可见文字 不确定的部分标注为不确定 不需要自信补圈 这里可以分别拿产品包装 软件界面截图 中文表格 或者已经做好隐私透明的发票 和数据照片来测试一下 这样可以比较直观的判断出 模型到底是理解了图片内容 还是只是把里面的文字给识别出来 如果你出现了类似我这样的提示 就前往OpenWeb UI的设置 模型 找到刚才你前面使用的模型 编辑界面 找到高级参数下的NUMCTX Olama 针对我16GB的Mac mini 将数字更改为8192 然后重复上的操作就可以了 如果我们的目标不是理解图片 而是尽可能把图片里的文字给提取出来 就可以使用我们前面已经下载好的GLM OCR OCR模型运行前 如果较大的千万模型还占着同一印存 先可以把它停掉 接下来我们准备好需要识别图片 放到一个统一的文件夹中 比如我这个目录像 对于我们Mac仿达中的用户文件夹 AI test 这里手动新建一个test的文件夹就可以了 对于需要识别不同的内容图片 比如普通收据表格图表 都可以使用不同的命令 注意命令结尾的文件名 需要换成你自己图片的文件名 第一次测试时 建议每次只处理一张图片 先确认整套工作流能够稳定运行 如果遇到扫描PDF 也不用一开始就折腾完整的PDF解析工具 最简单办法就是 先用Microx自带的预览打开PDF 把其中一页导成PN器 再交给GLM OCR进行处理 等确认单页OCR没问题后 再考虑批量处理整份文档 识别出来的内容还可以继续利用 保存成TXT或者Markdown 再上传到我们上一节创建
本次執行流程與問題處理
下達指令
預期流程
- 下載與語音辨識
- 來源選擇與品質檢查
- 文字校正與句子單元
- 筆記與發布
- 公開網頁發布
1. 下載與語音辨識
工具:videonote-transcribe-url(主辨識管線:下載、Whisper 辨識與選稿)
處理:下載音訊、以 Whisper 辨識並選出最佳逐字稿
產出:yt_dlp_meta.json(影片元資料)、audio_16k_mono.wav(16kHz 單聲道音訊)、transcript.whisper.json(Whisper 辨識結果)、transcript.json(正式逐字稿)、transcript_selection_report.json(來源選擇報告)
耗時:691.4 秒
關係:依序執行
結果:完成
2. 全文快速校讀
工具:videonote_rapid_transcript_review.py
處理:先速讀完整逐字稿,再修正高可信突兀詞句並列出待確認項目
產出:rapid_transcript_review_report.json(產出檔案)
耗時:54.2 秒
關係:依序執行
結果:完成
3. 建立句子單元
工具:videonote-build-sentence-units
處理:將逐字稿切成帶時間軸的句子單元
產出:sentence_units.json(句子單元)
耗時:0.2 秒
關係:依序執行
結果:完成
4. 句子密度平衡
工具:videonote_balance_sentence_units.py
處理:平衡句子長度與密度
產出:sentence_units.json(句子單元)
耗時:0.3 秒
關係:依序執行
結果:完成
5. 時間軸稽核
工具:videonote_timeline_audit.py
處理:檢查時間軸與音訊對齊
產出:timeline_audit_report.json(時間軸稽核)
耗時:0.3 秒
關係:依序執行
結果:完成
6. 品質檢查
工具:videonote_controlled_quality.py(檢查時間軸與品質)
處理:檢查語言、時間軸與可讀性品質
產出:controlled_quality_report.json(品質報告)、language_sanity_report.json(語言檢查)
耗時:0.4 秒
關係:依序執行
結果:完成
7. 播放時間軸回填
工具:videonote_rebase_display_timeline.py
處理:將網頁播放時間軸回填為校正字幕時間
產出:display_timeline_rebase_report.json(時間軸回填報告)
耗時:0.4 秒
關係:依序執行
結果:完成
8. 逐字稿交叉檢查
工具:videonote_cross_check_transcript.py
處理:交叉檢查逐字稿與來源字幕
產出:transcript_crosscheck_report.json(交叉檢查)
耗時:0.4 秒
關係:依序執行
結果:完成
9. 來源句整理
工具:videonote_prepare_source_entries.py
處理:整理來源句子供時間軸與頁面使用
產出:sentence_units.json(句子單元)
耗時:0.4 秒
關係:依序執行
結果:完成
10. 生成筆記摘要
工具:videonote-generate-note(生成筆記摘要)
處理:生成筆記摘要與重點
產出:note.md(筆記 Markdown)、note.html(筆記 HTML)
耗時:183.6 秒
關係:依序執行
結果:完成
11. 建立筆記頁面
工具:videonote-render-html(產生筆記 HTML)
處理:產生可閱讀的筆記 HTML 頁面
產出:note.html(筆記 HTML)
耗時:0.7 秒
關係:依序執行
結果:完成
12. 發布公開頁面
工具:videonote-publish(發布公開頁面)
處理:發布到公開網站與每日列表
產出:公開筆記網址、result.json(管線結果)
耗時:0.8 秒
關係:依序執行
結果:完成
手動來源字幕
- 尚未產生
自動來源字幕
Whisper 字幕
Qwen 字幕
- 尚未產生
Parakeet 字幕
- 尚未產生
MOSS 字幕
- 尚未產生
聲學時間證據(PyAnnote / WhisperX)
- 尚未產生
校正前後逐字稿
- 校正前 transcript.whisper.json 純文字 JSON
- 校正後 transcript.json 純文字 JSON
目前待解決問題與初步改善方向
- 逐字稿全文快速校讀未完成
已保留自動字幕/原始逐字稿並繼續生成筆記。;未完成的全文速讀項目可在精進模式回聽確認。;RAPID_REVIEW_STATUS=REVIEW_REQUIRED_INVALID_OUTPUT
- 逐字稿可先使用,但有待校正清單
segment=6 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=7 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=8 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語;segment=9 unnatural_sentence_boundary: 標點出現在句首或停在逗號位置,斷句可能不符合文法/口語
- Qwen3-ASR 未完成,需確認 qwen_asr_lab 環境與音訊後重試精進模式。