python Piper 实现免费离线文字转语音


头像
烛臻
原创
发布时间: 2026-06-21 18:06:28 | 阅读数 0收藏数 0评论数 0
封面
在语音交互逐渐成为主流的今天,如何在完全离线、免费、跨平台的环境下实现高质量文字转语音(TTS),成为开发者关注的重点。 本文将带你从零开始,使用开源方案 Piper TTS 在 Python 中快速实现离线语音合成,无需 API、无需联网,也不依赖云服务,即可生成接近真人效果的语音输出。
1

下载依赖

输入命令 pip install piper-tts 下载依赖

2

导入模型

https://huggingface.co/rhasspy/piper-voices/tree/main/zh/zh_CN/huayan/medium

下载我们所需要的模型 如图所示点击下载 onnx 和 onnx.json都需要下载

然后新建一个model 文件夹 把这两个文件放进去

下载起来有点慢 大家也可以去附件里面下

JSON
zh_CN-huayan-medium.onnx.json
4.71KB
ONNX
zh_CN-huayan-medium.onnx
60.27MB
3

编写代码

import subprocess
from pathlib import Path

# ========== 路径 ==========
BASE_DIR = Path(__file__).parent

model_path = BASE_DIR / "model" / "zh_CN-huayan-medium.onnx"
output_path = BASE_DIR / "output.wav"

text = "你好,这是 Piper 离线文字转语音完整测试。"

# ========== Piper CLI 调用 ==========
cmd = [
"piper",
"--model", str(model_path),
"--output_file", str(output_path)
]

# Piper 从 stdin 读取文本
process = subprocess.run(
cmd,
input=text.encode("utf-8"),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)

# ========== 输出 ==========
if process.returncode == 0:
print("生成成功:", output_path)
else:
print("失败:")
print(process.stderr.decode("utf-8"))


4

演示效果

效果演示看视频

阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
头像
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报