Downloads · 30 days
0
hustfyb/PocketTTS-ZH-6L
PocketTTS-ZH-6L is a text-to-speech model from hustfyb. Use it when you need text read aloud. It is set up for pocket-tts. The card lists the license as apache-2.0.
中文语音合成(TTS)模型,支持语音克隆与数字/中英混读,CPU 优先设计,权重原生 int8 量化。
Downloads · 30 days
0
Access
Public
Updated Sep 27, 2026
Repo size
675 MB
Likes
1
Public
Click a slice to open those files.
.pt233 MB · 99%
From the Hugging Face model README
中文语音合成(TTS)模型,支持语音克隆与数字/中英混读,CPU 优先设计,权重原生 int8 量化。
基于 Kyutai Pocket TTS 架构:6 层 FlowLM(d_model 1024)+ Mimi 神经音频编解码器(24 kHz),端到端流式推理。本版本(R21)相对上一代的核心变化:
368.5 → 三百六十八点五,16 位订单号逐位读出)English summary: A Mandarin Chinese TTS model with voice cloning, built on the Pocket TTS architecture (6-layer flow transformer + Mimi codec). Weights ship pre-quantized int8 (223 MB, no runtime conversion needed): 0.18× real-time single-threaded on an i7-12700KF (≈5.5× faster than real-time audio production), 0.16× with 4 threads. Built-in text normalization reads Arabic digits, amounts, dates and order numbers in Mandarin (digit-by-digit for serial numbers). 9174-token SentencePiece vocabulary. Intended for customer-service dialogue and short-form Mandarin speech. See Performance and Limitations below.
pip install pocket-tts soundfile wetext
cd <本目录>
python demo.py --prompt your_voice.wav --text "您的订单编号是20260918123456,退款368.5元预计三个工作日内到账。" --out out.wav
--no-tn 可关闭,.!?;: 会在合成前映射为 ,。!?;:(半角标点是英文 BPE token,中文训练数据未覆盖,会导致生成中途静音、EOS 不触发;此映射不受 --no-tn 影响)model_int8.pt),加载即用,无需 quantize=True或有界面演示(需 pip install gradio):
python demo.py --gradio
界面中可看到 TN 规范化后的文本,并可选关闭 TN。
Python API:
import sys
sys.path.insert(0, "<本目录>")
from demo import load # int8 加载 + TN
from tn import normalize_tn
model = load()
state = model.get_state_for_audio_prompt("your_voice.wav") # 3~10 秒干净普通话
text = normalize_tn("您的订单编号是20260918123456") # TN 显式调用(可选,demo.synthesize 默认已含)
audio = model.generate_audio(state, text)
temp=0.3(默认);文本越长对参考音频质量越敏感文本准确性用 whisper-small 对合成音频转写后计算字错误率(CER),每个场景 10 次独立采样取均值,生产配置(单步采样)。数值越低越好。
| 指标 | CER (n=10) |
|---|---|
| 客服长句(主指标) | 8.1%(上一代 13.65%) |
| 数字订单句(16 位订单号 + 金额) | 0%(ASR 逐字核对通过) |
| 中英混读句(APP/VIP/官网) | ASR 全对 |
| 文本 | CER (n=10) |
|---|---|
| 短句未见(9 字) | 17.1% |
| 中句未见(15 字) | 6.2% |
| 长句未见(31 字) | 6.4% |
测试环境:Intel i7-12700KF,生成 52 字客服长句(约 8.5 秒音频),每档 3 次取均值。
| 项目 | 数值 |
|---|---|
| CPU 推理速度(demo 默认,自动 4 线程) | 0.15~0.16× 实时(生成 1 秒音频约需 0.16 秒) |
| CPU 推理速度(单线程,库默认值) | 0.18× 实时 |
| CPU 推理速度(6/8 线程) | 0.20 / 0.18× 实时(超订阅反而更慢,勿调高) |
| 权重文件 | 223 MB(model_int8.pt,FlowLM int8 + Mimi fp32) |
| FlowLM 参数量 | 约 89M(注意力 + FFN 已 int8) |
| 采样率 | 24 kHz |
线程说明:
pocket_tts库在 import 时固定单线程;demo.py的load()已自动 设为min(4, CPU 核数),这是实测甜点(1t 0.179 / 2t 0.163 / 4t 0.155 / 6t 0.201 / 8t 0.182)。性能路线已于 2026-09-18 实测封板,详见仓库根目录INFERENCE_PERF_CLOSURE.md(ONNX 逐帧、Mimi 块解码等替代方案均劣于现状)。
参考音频:客服目标音色(kefu_long / digits_order / codeswitch / short_unseen)与 AISHELL-3 说话人 A/B(speakerA_long / speakerB_long,仅用于演示音色克隆,不在交付范围内)。均由交付的 int8 模型 + TN 默认配置生成。
| 场景 | 文本 | 试听 |
|---|---|---|
| 客服长句 | 您好,非常抱歉给您带来了不好的使用体验,麻烦您先提供一下订单编号,我这边马上帮您查询订单信息和售后政策。 | <audio controls src="samples/kefu_long.wav"></audio> |
| 数字订单 | 您的订单编号是20260918123456,退款368.5元预计三个工作日内到账。 | <audio controls src="samples/digits_order.wav"></audio> |
| 中英混读 | 请打开APP查看您的VIP会员状态,或者登录官网查询订单详情。 | <audio controls src="samples/codeswitch.wav"></audio> |
| 短句 | 今天天气很好,适合外出散步。 | <audio controls src="samples/short_unseen.wav"></audio> |
| 说话人 A | 请问您反映的问题我们已经记录下来,稍后会有专员与您联系,请保持电话畅通。 | <audio controls src="samples/speakerA_long.wav"></audio> |
| 说话人 B | 人工智能正在改变我们的生活方式。 | <audio controls src="samples/speakerB_long.wav"></audio> |
20260918123456 → 二零二六零九一八一二三四五六)--no-tn)时,请自行使用中文数字写法;词表虽有数字 token,但训练数据全部经过 TN,关闭后数字读法不受控| 文件 | 说明 |
|---|---|
model_int8.pt | 预量化 int8 权重(FlowLM int8 + Mimi fp32),223 MB |
config.yaml | 模型架构配置(自包含,不含权重路径依赖) |
tokenizer.model | SentencePiece 分词器(9174 词,含 byte_fallback) |
tn.py | 文本规范化(TN)模块,wetext + 业务规则 |
demo.py | 推理演示(int8 加载 + TN,CLI + Gradio) |
samples/ | 示例音频(见上表) |
README.md | 本文件 |