有个做MCN的朋友跟我说,他们用市面上的直播辅助工具,弹幕延迟3秒起步,AI分析是套壳ChatGPT,数据还要传到别人的服务器上。

主播不放心。谁愿意把自己直播间的实时数据交给第三方?

我说我给你做一个。

选型:为什么是Electron + FastAPI

一开始纠结过纯Web方案。部署简单,一个链接就能用。

但问题很硬:本地语音识别怎么办?模型推理怎么跑?浏览器搞不定这些。

最后拆成两层——

Electron壳子负责UI。React画仪表盘,弹幕流实时滚动,AI话术建议弹出来,体验和原生应用差不多。

FastAPI藏在后面做引擎。Python生态里ASR模型、LangChain、Qwen全是现成的,不用折腾。

两个进程通过本地WebSocket通信。各干各的,互不拖后腿。

弹幕这块,轮询是不可能的

抖音直播间的弹幕走的是WebSocket长连接。

有些人用HTTP轮询去抓,3秒一次。3秒在直播里是什么概念?一条弹幕发出来,主播回的时候观众已经刷过去二十条了。

我直接建持久连接,心跳保活,断线自动重连。弹幕来了就推到前端,延迟压到毫秒级。

礼物、评论、进入直播间,分别解析,分别处理。主播的仪表盘上能实时看到哪条弹幕值得回。

SenseVoice vs Whisper

语音转写试过两个。

Whisper很强,但它是"录完再转"的模式。直播场景不行,主播说完一句话,等两秒才出结果,节奏全乱了。

SenseVoice支持流式识别。音频切成小段,边说边转。延迟低,中文准确率也高。

实现上加了VAD(语音活动检测)。不是所有声音都送进模型,有人说话才处理,省算力也减少误识别。

AI话术:不是让AI替主播说话

这里踩过大坑。

第一版做得太激进了,AI直接生成完整话术让主播念。效果很尴尬——主播念得生硬,观众听得别扭。

后来改了思路。AI不替你说,AI告诉你"现在该说什么类型的词"。

比如弹幕里突然有人问"多少钱",AI会在屏幕上亮一个提示:“有人在问价格,准备报价”。

再比如连续五分钟没有互动,AI提醒:“节奏偏冷,可以抽奖或者抛话题”。

主播的判断力还在,AI只是多了一双眼睛。

复盘报告:直播结束不代表工作结束

每次直播结束,系统自动生成一份复盘。

话术时间线——几点几分说了什么关键信息。 弹幕热度图——哪个时段互动最密集。 观众留存拐点——哪些话术导致观众离开或停留。

这些数据主播自己看一遍就知道下次该怎么调整。

关键是全在本地。没有上传,没有云端存储,不用担心数据泄露。

技术栈最后长这样

前端:Electron 38 + React 18 + TypeScript
后端:Python 3.13 + FastAPI
AI:LangChain + Qwen + SenseVoice
通信:WebSocket

打完包大概200MB出头。对于一个带本地AI推理能力的桌面应用来说,还行。

项目开源在 GitHub,有兴趣可以看看。

有问题随时提issue。