资讯动态

199元自制离线AI录音卡:FunASR转写+说话人分离+大模型导图

发布时间:2026/10/20 17:40:34 来源:尧图企业网站定制
1. 项目缘起与整体设计思路国庆假期三天我用不到两百块的物料成本攒了一台能离线跑的 AI 录音卡。它能做的事很具体按下按钮开始录音松开后本地完成语音转文字支持五十多种语言能区分不同说话人还能把转写结果丢给大模型自动生成思维导图。整套东西揣在兜里能用二十来个小时全程不依赖网络。先说说为什么要做这个。市面上现成的 AI 录音笔不少但用下来总有几处别扭一是转写要联网会议内容、课堂笔记这些敏感音频传上去心里不踏实二是很多产品按分钟收费或者绑定会员长期用成本不低三是功能封闭想换个识别模型、想接自己的大模型做后处理基本没门。我想要的是一台完全属于自己、能随便折腾的录音设备硬件成本压到两百以内软件全部开源可控。这个项目的核心思路可以概括成一句话用一块能跑 Linux 的开发板当大脑用开源语音识别框架做耳朵用大模型做整理归纳的助手把三者串成一条离线流水线。选型上我做了几个关键取舍下面逐个拆开讲。第一个取舍是离线优先还是云端优先。离线方案的好处是隐私可控、无网络也能用、没有调用费用代价是识别精度和速度受本地算力限制。我最终选离线因为这台设备的主要场景是会议记录和随手记这些内容往往不方便外传。而且现在的开源语音模型在中文场景下已经相当能打日常对话的识别准确率完全够用。第二个取舍是硬件形态。市面上的开发板很多我最终选了一块带麦克风阵列、支持 Linux、有 USB 和 GPIO 的板子。选它的理由很实在能跑完整的 Python 环境方便直接调用开源语音框架有硬件麦克风接口省去外接声卡的麻烦功耗控制得住配一块大容量电池能撑一整天。整个物料清单算下来板子加电池加外壳加按键一百九十多块。第三个取舍是软件架构。我把整条流水线拆成四个独立模块录音采集、语音转写、说话人分离、大模型后处理。每个模块之间用文件或者消息队列解耦好处是任何一个环节想换实现都不影响其他部分。比如今天想换识别模型只动转写模块就行明天想换个方式生成导图只改后处理模块。这种松耦合的设计在个人项目里特别重要因为需求总是在变的。提示做这类项目最容易犯的错是一上来就追求全功能一步到位结果每个模块都半成品。我的建议是先跑通录音→转写这条最短链路确认能出结果了再往上叠加说话人分离和导图生成。关于成本我把主要物料列了个表方便你对照参考。价格会随行情波动这里给的是我当时入手的大致区间。物料作用参考价格开发板带麦克风主控与音频采集90-120 元锂电池模块供电30-40 元外壳与按键结构与交互15-25 元存储卡系统与音频存储15-20 元杂项线材、螺丝组装10 元合计控制在一百九上下这也是标题里199 元的由来。当然如果你手头已经有开发板或者存储卡实际支出还能更低。2. 核心模块拆解与关键技术点2.1 离线语音转写为什么选 FunASR语音转写是整个项目的地基选错框架后面全是坑。我对比过几个主流开源方案最终落在 FunASR 上原因有几个层面。从模型能力看FunASR 提供的中文识别模型在通用场景下的字错率表现很稳尤其是带标点恢复和顺滑处理的版本出来的文本直接能读不用再手动断句。它还内置了语音端点检测也就是自动判断一句话从哪开始、到哪结束这个功能在长录音场景里太关键了——没有它你得自己写逻辑去切分静音段麻烦且容易出错。从工程角度看FunASR 的 Python 接口封装得比较友好几行代码就能跑起来推理。它对硬件的要求也不算苛刻在带一定算力的开发板上跑实时率能接受。所谓实时率简单说就是处理一秒音频需要多少秒如果小于一就说明比实时还快能边录边转。从多语言支持看它覆盖了五十多种语言的识别模型虽然不同语种精度有差异但做基础转写够用了。这一点对经常处理多语种素材的人很实用。安装上我建议用虚拟环境隔离依赖避免和系统自带的 Python 包打架。核心依赖装好后先拿一段测试音频验证能不能出文字确认无误再往下走。python -m venv venv source venv/bin/activate pip install funasr modelscope torch torchaudio跑推理的最小示例大概是这样注意模型首次运行会自动下载需要预留存储空间from funasr import AutoModel model AutoModel( modelparaformer-zh, vad_modelfsmn-vad, punc_modelct-punc, ) result model.generate(inputtest.wav) print(result[0][text])这里有个细节值得说vad_model负责切分语音段punc_model负责加标点。三个模型配合起来才能把一段原始音频变成可读的文本。如果你只加载主模型出来的结果会是一长串没有标点的字读起来很累。注意模型文件体积不小主模型加辅助模型动辄几百兆到一两个 G。存储卡别买太小建议至少 32G给系统和模型留足空间。2.2 说话人分离的实现逻辑多人会议记录最头疼的就是这句话到底是谁说的。说话人分离要解决的就是这个问题技术上叫声纹聚类。它的原理不复杂先把音频切成一小段一小段对每一段提取声纹特征向量然后把这些向量做聚类同一类的归为同一个人。难点在于聚类数量事先不知道——你并不知道这场会有几个人说话。常见做法是设定一个相似度阈值超过阈值就认为是同一个人或者用自动估计类别数的聚类算法。我在实现时踩过一个坑如果两个人音色接近或者录音环境有回声聚类很容易把两个人合成一个。解决办法是适当调低相似度阈值让切分更细宁可多分出几个人也不要漏掉。事后可以人工合并但漏掉就找不回来了。另一个经验是说话人分离对音频质量很敏感。麦克风离得远、背景噪声大声纹特征就不准。所以硬件上我特意选了带麦克风阵列的板子阵列能做一定的降噪和定向拾音对分离效果帮助明显。实际流程上我是先做语音端点检测切出每句话再对每句话提取声纹最后聚类打标签。这样比整段音频直接聚类更准因为每句话的声纹特征更集中。2.3 用大模型生成思维导图的后处理转写出来的文本是一大段流水账直接看效率很低。我加了一步后处理把文本丢给大模型让它提炼结构、生成思维导图。这里的关键是提示词设计。你不能只说帮我总结那样出来的东西很泛。我的做法是给一个明确的输出格式要求让模型按层级结构返回比如一级主题、二级要点、三级细节。格式定死了后面解析和渲染就简单。prompt 请把下面的会议记录整理成思维导图结构 用缩进表示层级一级主题顶格二级缩进两格三级缩进四格。 只输出结构不要额外解释。 记录内容 {transcript} 拿到结构化文本后转成思维导图格式就很容易了。常见的导图工具都支持从 Markdown 大纲或者 OPML 导入你只要把缩进文本转成对应格式即可。我选 DeepSeek 这类模型做后处理主要看中它在中文长文本上的理解能力和相对低的调用成本。当然如果你追求完全离线也可以在本地部署一个小参数量的模型代价是效果会打折扣。这是个典型的取舍要隐私就牺牲一点质量要质量就接受联网。提示大模型后处理这一步建议做成可开关的。有些场景你只想要原始转写不需要导图这时候关掉能省时间也省算力。3. 完整实操流程与关键环节3.1 硬件组装与系统准备硬件部分其实不复杂但有几个细节决定成败。第一步是给开发板装系统。我用的是轻量级 Linux 发行版烧录到存储卡后启动。第一次启动建议接显示器或者用串口登录把网络、时区、SSH 这些基础配置弄好。之后就可以拔掉显示器当无头设备用。第二步是接麦克风和按键。麦克风阵列一般通过 I2S 或者 USB 接口连接接好后用系统自带的录音工具测试一下能不能采到声音。按键接到 GPIO 上写个小脚本监听按下和松开事件用来控制录音的开始和结束。第三步是电源。锂电池模块要能稳定输出开发板需要的电压最好带保护电路防止过放。我实测下来一块容量合适的电池配合开发板的低功耗模式连续录音加转写能撑二十小时左右。这个数字和录音时长、转写频率都有关系不是固定值。组装时有个小技巧把按键放在拇指自然能按到的位置录音时单手就能操作。外壳如果自己打印记得给麦克风开孔别把拾音孔堵住否则录出来的声音发闷。3.2 录音采集模块的实现录音模块的核心是把麦克风采集的音频流写成标准格式的文件方便后续处理。我选 WAV 格式因为它无损、通用、解析简单缺点是文件大。如果存储紧张可以录成压缩格式但转写前要解码多一步。采样率我设成 16kHz这是语音识别的常用标准。设太高浪费存储和算力设太低会损失高频信息影响识别。位深用 16 位单声道就够因为语音识别不需要立体声。import sounddevice as sd import soundfile as sf def record(duration, filename): fs 16000 audio sd.rec( int(duration * fs), sampleratefs, channels1, dtypeint16, ) sd.wait() sf.write(filename, audio, fs)实际使用中我不用固定时长而是按键控制按下开始录松开停止。这样更符合直觉。实现上用一个标志位控制录音循环按键事件里切换标志位即可。注意录音时如果同时跑转写CPU 占用会上去可能导致丢帧。稳妥的做法是录完再转或者用双缓冲一边录一边把已录好的段落送去转写。3.3 转写与分离的串联录音文件生成后触发转写流程。我写了个简单的任务队列新文件进来就排队处理避免多个任务抢资源。转写时先跑端点检测切句再对每句提取声纹做聚类最后把识别文本和说话人标签对应起来。输出格式我用 JSON每句话带时间戳、文本、说话人编号方便后续处理。segments [] for seg in vad_result: text asr_model.generate(seg[audio])[0][text] speaker speaker_model.assign(seg[audio]) segments.append({ start: seg[start], end: seg[end], text: text, speaker: speaker, })这里有个性能上的经验声纹提取比语音识别更吃算力如果句子很多整体处理时间会明显拉长。我的优化是只对时长超过一定阈值的句子做声纹提取太短的句子比如嗯对直接归到上一句的说话人既省算力又不影响结果。3.4 导图生成与结果导出最后一步是把带说话人标签的文本整理成可读的会议纪要再生成导图。我先按说话人把内容分组让模型知道谁说了什么这样总结出来的结构更贴合实际讨论脉络。然后把整理好的文本喂给大模型拿到层级结构最后转成导图文件。导出格式我支持两种一种是 Markdown 大纲方便直接看一种是导图软件能导入的格式方便可视化。两种都从同一份结构化数据生成保证内容一致。整个流程跑通后从按下按键到拿到导图中间不需要任何手动干预。这才是我想要的效果——把设备往桌上一放开完会直接出纪要。4. 常见问题与排查技巧实录做这个项目的过程中我遇到不少问题有些折腾了很久才找到原因。这里整理成速查表希望能帮你少走弯路。现象可能原因排查与解决录音全是静音麦克风没接好或驱动没加载用系统录音工具测试检查设备列表转写结果乱码音频采样率不匹配确认录音和模型都用 16kHz识别速度极慢模型太大或算力不足换小模型或降低并发说话人分错音色接近或噪声大调低相似度阈值改善拾音环境导图结构混乱提示词不明确固定输出格式给示例电池撑不久后台进程多或屏幕常亮关掉无用服务启用低功耗模式除了表格里的通用问题还有几个坑值得单独说。第一个坑是模型下载失败。首次运行会自动下载模型如果网络不稳或者存储空间不够会卡住甚至报错。我的做法是提前手动下载好模型文件放到指定目录运行时指定本地路径避免每次联网。第二个坑是长时间录音内存溢出。如果一次性把几小时的音频全读进内存很容易爆。解决办法是分段处理读一段转一段及时释放。这个在处理长会议时特别重要。第三个坑是按键抖动。机械按键按下瞬间会有多次电平跳变如果不做消抖一次按压会被识别成多次。软件上加个几十毫秒的延时判断就能解决。提示调试阶段建议把每一步的中间结果都存下来比如切句后的音频片段、声纹特征、识别文本。出问题时能快速定位是哪一环出的错比盲目重跑高效得多。还有一个容易被忽略的点是散热。开发板长时间跑推理会发热温度高了会降频转写速度就慢下来。如果外壳是封闭的最好加个散热片或者留通风孔。我一开始没注意连续转写半小时后明显变慢加了散热片就稳定了。5. 成本控制与续航优化的实战经验5.1 怎么把成本压到两百以内省钱的关键在于复用和取舍。开发板是整个项目最贵的部分如果你手头有闲置的板子直接省下一大笔。存储卡也是家里有旧卡就能用不必买新的高速卡因为语音读写的速度要求并不高。外壳这块3D 打印最灵活但需要打印机没有的话用现成的塑料盒改造也行甚至用扎带把板子和电池绑一起功能上完全不影响只是不好看。我第一版就是裸板加橡皮筋跑通了才做的外壳。电池选型上不必追求大品牌但要认准带保护板的。容量按需选如果你主要做短时录音小容量就够还能减轻重量。5.2 续航二十小时是怎么做到的续航不是靠堆电池而是靠降低整体功耗。我做了几件事。一是关掉不用的外设。开发板上很多接口平时用不到在系统里禁用能省电。二是让 CPU 在空闲时降频只在转写时全速跑。三是转写任务批量处理避免频繁唤醒。四是屏幕能关就关如果设备带屏幕的话。实测下来纯待机功耗很低主要耗电在转写环节。所以如果你的使用模式是录一段转一段续航会比连续转写长很多。二十小时这个数字是在混合使用场景下测的纯连续转写会短一些。提示想准确知道续航最好的办法是实测。充满电按你的典型使用方式跑记录从满电到关机的时间。别信理论值实际使用差异很大。5.3 多语种场景的实用建议五十多种语言听着很唬人但实际用起来不同语种的识别质量差别不小。我的经验是主流语种效果都不错小语种可能需要手动指定语言参数否则模型可能猜错。处理多语种混合的音频时建议先做语种检测再按语种分段送对应的模型。如果一段音频里中英文夹杂中文模型通常也能处理但纯英文段落用英文模型会更准。另外标点恢复模型也有语种差异。中文的标点模型处理英文文本时标点可能不太符合英文习惯。如果对格式要求高可以针对不同语种用不同的后处理规则。6. 这套方案还能怎么扩展跑通基础功能后我陆续加了些扩展也想了些后续可以做的方向。一个实用的扩展是关键词唤醒。与其每次按按键不如设定一个唤醒词说到它就自动开始录音。这在双手不方便的场景下很有用。实现上可以用一个轻量的关键词检测模型常驻运行检测到就触发录音。另一个方向是实时转写。现在是录完再转如果改成边录边转就能做到准实时出字幕。代价是算力要求更高需要优化流水线让录音和转写并行不冲突。还可以做自动摘要推送。转写和导图生成完后自动把结果发到指定的地方比如存到笔记软件或者发个消息提醒。这样开完会人还没走纪要已经整理好了。硬件上也能升级比如加个小屏幕显示录音状态和电量加个扬声器做语音反馈或者换个更好的麦克风提升拾音质量。这些都是锦上添花核心链路不变。我个人在实际操作中的体会是这类个人项目的价值不在于功能多全而在于每一环都透明可控。你知道数据从哪来、经过什么处理、到哪去想改哪里就改哪里。这种掌控感是成品设备给不了的。而且折腾的过程本身就是学习从音频采集到模型推理再到大模型应用一条链路走下来对整套 AI 落地的理解会深很多。最后分享一个小技巧如果你也想做类似的东西别一上来就买齐所有物料。先用电脑把软件链路跑通确认识别效果和流程都符合预期再考虑往硬件上搬。软件调通了硬件只是换个运行环境而已能省下不少试错成本。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑