大家好啊,我是开源君!
日常想给智能家居加个语音播报,结果一查,云端TTS服务要么收费,要么得联网,网一断助手就成了哑巴。
有时候捣鼓树莓派,想让它开口讲话,结果发现市面上的语音合成模型动不动就要吃掉半块显卡的显存。
最近就在Github上刷到这样一个轻量的项目 -Piper,能让你电脑上的文字瞬间变成逼真的人声,中文支持,而且完全免费、无需联网!
Piper 是一个快速、本地化的神经网络文本转语音引擎,完全本地跑,不用联网,不用调用任何云端API,能在树莓派4这样的低功耗设备上实时运行(接近95%的实时率)。

合成的语音非常自然、流畅,接近真人发音,而不是生硬的机器人声。
支持包括中文(zh_CN)、英语、德语、法语等在内的超过30种语言,几乎覆盖了主流和一些小众语种,每种语言下面还有不同发音人和音质档位(low/medium/high)可选。

比如英文
中文
中文模型只有60几MB,最小的才20MB,可以说非常的轻量。

目前项目已经拿下 5.1k 的 star,更让人放心的是,它已经被 Home Assistant、NVDA(读屏软件)、LocalAI 等一票知名项目采用为默认或推荐的语音引擎,还被用于视障人士的图像描述、Runelite游戏插件配音等各种脑洞场景。

01 一行命令,装完就能说话
不用配环境、不用编译,pip install piper-tts 装完直接就能用命令行合成语音,对新手极其友好。
02 树莓派都扛得住的速度
Piper 最早就是为树莓派4这种低算力设备优化的,语音模型用 VITS 训练、导出成 ONNX 格式,本地CPU推理照样流畅,不用GPU也能跑起来。
03 边合成边播放,流式输出
Piper 支持把音频流式输出到标准输出,第一句话还在合成的时候,后面的句子就已经开始处理了,播报延迟被压得很低,适合做实时语音助手。
04 想要专属声音?自己训练一个
如果现成音色不满意,Piper 还提供了完整的训练文档,可以用自己的语音数据从头训练一个专属声音模型。
05 多端接入,Python、C/C++、Web服务一应俱全
除了命令行,Piper 还提供了 Python API、C/C++ 接口,以及一个开箱即用的 Web 服务,接进现有项目基本没有门槛。
安装非常简单,一行 pip 命令搞定:
pip install piper-tts
装好之后,先看看都有啥:
python3 -m piper.download_voices

几十种语言可选,中文在最后

官方也提供了试听站,可以先试听效果再决定用哪个。
https://rhasspy.github.io/piper-samples

挑一个语言下载,默认下到当前目录,如果想换地方加 --data-dir <DIR>。
python3 -m piper.download_voices zh_CN-chaowen-medium
下载好之后,就能直接合成语音了:
!python3 -m piper -m zh_CN-chaowen-medium -f test.wav --"你好,我是开源君!"
生成的音频效果
还试了一段长的内容,《出师表》开头
要接进自己的程序:
import wave
from piper import PiperVoice
voice = PiperVoice.load("zh_CN-chaowen-medium")
with wave.open("test.wav", "wb") as wav_file:
voice.synthesize_wav("你好,开源君。", wav_file)
想更进一步的,还可以看看:
命令行完整用法
# https://github.com/OHF-Voice/piper1-gpl/blob/main/docs/CLI.md)
搭建Web语音服务
# https://github.com/OHF-Voice/piper1-gpl/blob/main/docs/API_HTTP.md
Python API 集成
# https://github.com/OHF-Voice/piper1-gpl/blob/main/docs/API_PYTHON.md
训练自己的音色
# https://github.com/OHF-Voice/piper1-gpl/blob/main/docs/TRAINING.md
Piper这种项目我一直挺有好感。不炫技,不追热点,就是闷头把一件事做扎实。断网能跑,小语种也管,接口给全,代码随便改,就是那种"装上就忘不掉"的工具。
如果你正在捣鼓智能家居、树莓派小项目,或者单纯想给自己的程序加个开口说话的能力,不妨装上试试,说不定就成了你工具箱里的常驻选手。
项目地址:https://github.com/OHF-Voice/piper1-gpl