🤖 AI 相关
折腾半天,让我的博客会说话
音频
折腾半天,让我的博客会说话
0:00/0:00
✦ ✦ ✦
我最近给博客加了个功能,在文章开头多了一个播放卡片,点开就能听。
起因是 MiniMax 将 Coding Plan 升级成 Token Plan,可以调用全量模型了,其中包括语音合成 API。我一开始尝试用 MiniMax 来做语音博客,效果还不错,音色调起来也方便。
但问题是,我的 Token Plan 每滚动 5 小时只有 1500 额度,每次合成 1000 字要花 400 左右额度。
一篇 3000 字的文章,光读一遍就要 1200 额度。随便来几段语音,额度就没了。

我开始琢磨:能不能找个更便宜的方案?
新方案
首先想到的是自己部署一个 TTS 模型。
按照我的机器配置,Mac Studio M1 Ultra,64GB 内存,跑个几 B 参数的模型理论上没问题。
然后我找到了 **Qwen3-TTS,**阿里开源的语音合成模型族。
- 支持 Voice Design(自然语言描述音色)
- Voice Clone(3-10 秒参考音频克隆声线)
- Custom Voice(预设音色)
我花了个半小时搭了起来。模型第一次加载要 30-60 秒,但加载完之后,有不错的效果。
关键是——无限用,不花一分钱。

Markdown 分块
博客文章本质上是 Markdown 格式,直接扔给 TTS 会有问题:
- 图片链接、代码块会被念出来
- 标题层级、列表结构没体现
- 标点符号中英文混用导致断句位置不对
输入:Markdown 文本 输出:保留结构的文本块(标题/段落/列表独立处理)
实现逻辑:
- 用 mistune 解析 AST,识别标题(
###)、列表(-1.)、段落
- 图片、代码块、表格直接跳过,不进 TTS
- Emoji 先去掉,避免特殊字符干扰
- YAML 元数据头(如
---之间的内容)自动剥离
- 中英文标点分开处理,句号用中文
。!?
效果是:TTS 朗读出来的顺序和节奏,跟默读一篇博文的体验一致。
多人对话 TTS
上游项目 szkane/MLX-Qwen3-TTS-WebUI-CN 支持多人对话 TTS,每个角色可以选 Voice Design(自然语言描述音色)或者 Saved Voice(之前克隆过的音色)。
这个功能我不是经常用,但觉得挺适合做技术方案讲解或者播客风格内容的——两个人互相吐槽比一个人干念有趣多了。
预生成 + CDN
整体方案是预生成 + CDN 分发:
- 发布文章
- Qwen3-TTS 合成音频
- 上传 Vercel Blob
- URL 存入 Notion audioUrl 字段
用户访问时,博客直接加载静态音频,零 API 调用。
这种"预生成"模式比实时合成更适合博客场景——文章是静态内容,提前合成好,播放时无需等待,成本也更低。BBC 等媒体用 TTS 替代人工重录文章音频,方案已经非常成熟。
技术细节不展开了。核心是在 OpenClaw 的博客发布流程里加了一个步骤——每次填完 Notion 信息,OpenClaw 会问我要不要生成音频,我要,它就自动帮我合成、上传、填好 audioUrl 字段。
小蠢的音色

说到音色,我给小蠢也定制了一个。她是我在 OpenClaw 里的 AI 助手。
专属音色使用 Voice Design 生成——音色特征:"清亮活泼的女性少女音,声线清澈透亮,语调俏皮灵动,咬字清晰颗粒感十足,语速轻快跳跃,朗读文章时语气活泼开朗,绝不吞字,音色明亮如阳光。像一个嘴硬心软的资深程序媛,元气满满,偶尔毒舌吐槽,聪明又接地气。"。(这是她自己根据
IDENTITY.md 自己决定的)生成效果出乎意料地好。咬字清晰,语气自然,机器感不强(反正跟 MiniMax 的没差)。
现在我写完文章,会让小蠢去念一遍。发出去的时候,文章不只有文字,还有声音版本。感觉博客一下子立体了很多。
(历史博客小蠢正在更新中…)
尾声
博客不只是给人看的,也可以给人听。
有时候在通勤路上,想起来某篇文章,直接点开听,比看屏幕舒服。语音版本不会替代阅读,但给了另一种消费内容的方式。
如果你也是技术博客作者,正在考虑给自己的站点加语音,本地 TTS 是个值得探索的方向。
可选方案很多,Qwen3-TTS、Index-TTS、F5-TTS、ChatTTS……挑一个适合自己硬件条件的,先跑起来试试。
说不定哪天,你的博客也会开口说话了。