---
title: "折腾半天，让我的博客会说话"
description: "MiniMax 将 Coding Plan 升级成 Token Plan，可以调用全量语音模型了。但 Token Plan 每滚动 5 小时只有 1500 额度，成本太高。本文介绍了如何用本地 Qwen3-TTS + Vercel Blob 给博客加语音，零成本无限合成。"
date: "2026-03-20"
url: "https://firetable.tech/blog-now-can-talk"
image: "https://cdn.firetable.tech/blog/og/blog-now-can-talk.png?t=1792657860000"
author: "FireTable"
tags: ["💻 程序员", "🌐 站点"]
category: ["🤖 AI 相关"]
---

# 折腾半天，让我的博客会说话

> Date: 2026-03-20 · Category: 🤖 AI 相关 · Tags: 💻 程序员, 🌐 站点

> **摘要**：MiniMax 将 Coding Plan 升级成 Token Plan，可以调用全量语音模型了。但 Token Plan 每滚动 5 小时只有 1500 额度，成本太高。本文介绍了如何用本地 Qwen3-TTS + Vercel Blob 给博客加语音，零成本无限合成。
我最近给博客加了个功能，在文章开头多了一个播放卡片，点开就能听。

起因是 MiniMax 将 Coding Plan 升级成 Token Plan，可以调用全量模型了，其中包括语音合成 API。我一开始尝试用 MiniMax 来做语音博客，效果还不错，音色调起来也方便。

但问题是，我的 Token Plan 每滚动 5 小时只有 1500 额度，每次合成 1000 字要花 400 左右额度。

一篇 3000 字的文章，光读一遍就要 1200 额度。随便来几段语音，额度就没了。

![](https://cdn.firetable.tech/blog/i/329d95e2-28bd-80d0-b043-e647e4f9cd52.png)

我开始琢磨：能不能找个更便宜的方案？

## 新方案

首先想到的是自己部署一个 TTS 模型。

按照我的机器配置，Mac Studio M1 Ultra，64GB 内存，跑个几 B 参数的模型理论上没问题。

然后我找到了 **Qwen3-TTS，**阿里开源的语音合成模型族。

- 支持 Voice Design（自然语言描述音色）
- Voice Clone（3-10 秒参考音频克隆声线）
- Custom Voice（预设音色）
Apple Silicon 有专门的 [MLX 优化版本](https://github.com/szkane/MLX-Qwen3-TTS-WebUI-CN)，直接跑在 Mac 上绰绰有余。

我花了个半小时搭了起来。模型第一次加载要 30-60 秒，但加载完之后，有不错的效果。

关键是——**无限用，不花一分钱**。

![](https://cdn.firetable.tech/blog/i/329d95e2-28bd-8022-895f-dd1d3965cd22.png)

## Markdown 分块

博客文章本质上是 Markdown 格式，直接扔给 TTS 会有问题：

- 图片链接、代码块会被念出来
- 标题层级、列表结构没体现
- 标点符号中英文混用导致断句位置不对
所以我在 [MLX-Qwen3-TTS-WebUI-CN](https://github.com/FireTable/MLX-Qwen3-TTS-WebUI-CN) 里加了 **Markdown 感知分块** 功能：

```plain text
输入：Markdown 文本
输出：保留结构的文本块（标题/段落/列表独立处理）
```

实现逻辑：

- 用 mistune 解析 AST，识别标题（`#` `##`）、列表（`-` `1.`）、段落
- 图片、代码块、表格直接跳过，不进 TTS
- Emoji 先去掉，避免特殊字符干扰
- YAML 元数据头（如 `---` 之间的内容）自动剥离
- 中英文标点分开处理，句号用中文 `。！？`
效果是：TTS 朗读出来的顺序和节奏，跟默读一篇博文的体验一致。

## 多人对话 TTS

上游项目 [szkane/MLX-Qwen3-TTS-WebUI-CN](https://github.com/szkane/MLX-Qwen3-TTS-WebUI-CN) 支持多人对话 TTS，每个角色可以选 Voice Design（自然语言描述音色）或者 Saved Voice（之前克隆过的音色）。

这个功能我不是经常用，但觉得挺适合做技术方案讲解或者播客风格内容的——两个人互相吐槽比一个人干念有趣多了。

## 预生成 + CDN

整体方案是预生成 + CDN 分发：

1. 发布文章
1. Qwen3-TTS 合成音频
1. 上传 Vercel Blob
1. URL 存入 Notion audioUrl 字段
用户访问时，博客直接加载静态音频，零 API 调用。

这种"预生成"模式比实时合成更适合博客场景——文章是静态内容，提前合成好，播放时无需等待，成本也更低。BBC 等媒体用 TTS 替代人工重录文章音频，方案已经非常成熟。

技术细节不展开了。核心是在 OpenClaw 的博客发布流程里加了一个步骤——每次填完 Notion 信息，OpenClaw 会问我要不要生成音频，我要，它就自动帮我合成、上传、填好 audioUrl 字段。

## 小蠢的音色

![](https://cdn.firetable.tech/blog/i/NkOklng967KwoztzjchPPRBU9zhfOZu6.jpg)

说到音色，我给小蠢也定制了一个。她是我在 OpenClaw 里的 AI 助手。

专属音色使用 Voice Design 生成——音色特征："清亮活泼的女性少女音，声线清澈透亮，语调俏皮灵动，咬字清晰颗粒感十足，语速轻快跳跃，朗读文章时语气活泼开朗，绝不吞字，音色明亮如阳光。像一个嘴硬心软的资深程序媛，元气满满，偶尔毒舌吐槽，聪明又接地气。"。（这是她自己根据 `IDENTITY.md` 自己决定的）

生成效果出乎意料地好。咬字清晰，语气自然，机器感不强（反正跟 MiniMax 的没差）。

现在我写完文章，会让小蠢去念一遍。发出去的时候，文章不只有文字，还有声音版本。感觉博客一下子立体了很多。

（历史博客小蠢正在更新中…）

## 尾声

博客不只是给人看的，也可以给人听。

有时候在通勤路上，想起来某篇文章，直接点开听，比看屏幕舒服。语音版本不会替代阅读，但给了另一种消费内容的方式。

如果你也是技术博客作者，正在考虑给自己的站点加语音，本地 TTS 是个值得探索的方向。

可选方案很多，Qwen3-TTS、Index-TTS、F5-TTS、ChatTTS……挑一个适合自己硬件条件的，先跑起来试试。

说不定哪天，你的博客也会开口说话了。

---

## 读者评论

- **FireTable** (作者) · 2026-03-20:
  我还做了一些小的升级，使用这个项目 https://github.com/andrade0/musicgen-mlx 生成了 bgm
  并且通过算法合成到播客人声中，现在体验应该更好了 🤣
