语音合成(TTS)工具这两年越来越多,但大多数要么需要 GPU,要么模型体积大得吓人。最近在 Hacker News 上看到一个叫 Kitten TTS 的开源项目,只有 25MB 大小,纯 CPU 就能跑,效果据说还不错。对于想在自己项目里加语音功能的站长来说,这个值得一试。
项目介绍
Kitten TTS 是一个轻量级的开源文本转语音模型,主打”小而能用”。整个模型只有 25MB 左右,不需要 GPU,普通 CPU 就能实时生成语音。
项目地址:https://github.com/KittenML/KittenTTS
功能亮点
- 超小体积:模型只有 25MB,下载秒完,部署不占空间
- 纯 CPU 推理:不需要 GPU,普通服务器、甚至树莓派都能跑
- 多种声音:内置多种预设声音,男女声都有
- 支持流式输出:可以边生成边播放,不用等全部生成完
- Python SDK:提供 pip 安装的 Python 包,几行代码就能用
- MIT 许可:商用也没问题
安装和使用
安装
用 pip 直接安装:
pip install kitten-tts
基本用法
最简单的用法就是三行代码:
from kitten_tts import KittenTTS
model = KittenTTS()
audio = model.generate("你好,这是一段测试语音。")
model.save(audio, "output.wav")
运行后会在当前目录生成一个 output.wav 文件,直接就能播放。
选择不同声音
模型内置了多种声音风格,可以按需选择:
# 查看可用声音
print(model.list_voices())
# 指定声音生成
audio = model.generate("Hello world", voice="female_01")
流式生成
如果文本比较长,可以用流式模式边生成边处理:
for chunk in model.stream("这是一段很长的文本..."):
# 每个 chunk 是一小段音频数据
process_audio_chunk(chunk)
部署到服务器
如果你想在自己的网站上提供 TTS 服务,可以这样部署:
用 FastAPI 包装成 HTTP 接口
from fastapi import FastAPI
from fastapi.responses import Response
from kitten_tts import KittenTTS
app = FastAPI()
model = KittenTTS()
@app.get("/tts")
async def text_to_speech(text: str):
audio = model.generate(text)
return Response(content=audio, media_type="audio/wav")
这样部署后,前端只需要请求 /tts?text=你好 就能拿到语音文件。
Docker 部署
FROM python:3.11-slim
WORKDIR /app
RUN pip install kitten-tts fastapi uvicorn
COPY main.py .
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
适合什么场景
- 网站语音播报:给文章加上”听全文”功能
- 聊天机器人:让 AI 客服能开口说话
- 无障碍功能:为视障用户提供语音导航
- 嵌入式设备:树莓派、NAS 等低算力设备上的语音交互
- 本地 AI 助手:配合 Ollama 等本地模型,做一个能说话的助手
限制和注意事项
- 作为轻量模型,语音自然度比不上 ElevenLabs、Azure TTS 这类商业服务
- 中文支持情况需要实际测试,目前主要优化的是英文
- 25MB 模型的质量和几千兆的大模型肯定有差距,但”够用”场景下性价比很高
- 长时间运行的生产环境建议用 GPU 加速,纯 CPU 在高并发下会比较慢
简评
Kitten TTS 的定位很清晰:不追求最好,追求”小而能用”。25MB 的体积和纯 CPU 推理这两个特点,让它特别适合资源有限但又想加语音功能的场景。如果你之前因为 TTS 方案太重而放弃,可以试试这个。MIT 许可也很友好,商用没问题。












GitHub – TauricResearch/TradingAgents


GitHub – docusealco/docuseal

暂无评论内容