Skip to content

Repository files navigation

prosodia

CI Python License: MIT Code style: ruff

提示可控的情感 / 韵律语音合成框架。 用文本、风格与情感提示驱动 TTS,生成 情感与韵律可控的语音,并支持流式推理

把「怎么读」从「读什么」里解耦出来:你用一句自然语言描述语气,prosodia 把它 翻译成可解释的控制量,再合成对应的语音。

特性

  • 🗣️ 提示驱动:中英双语自然语言提示 → 可解释的控制量(情感 / 语速 / 基频 / 能量)。
  • 🎭 情感可控:8 类内置情感 + 连续 VAD 情感空间,支持强度调节与情感插值。
  • 🎚️ 韵律可控:时长 / 基频 / 能量在推理期可乘性缩放,配合分类器无关引导(CFG)。
  • 流式推理:梅尔谱按帧切块、逐块出声,重叠相加消除边界咔哒,降低首包延迟。
  • 🧩 可插拔声码器:默认 Griffin-Lim(无需权重、离线可跑),可替换为神经声码器。
  • 🀄 中英混排:拼音 g2p + 英文字素回退,标点转停顿。

安装

git clone https://github.com/weijietan09/prosodia.git
cd prosodia
pip install -e ".[dev]"
# 如需 CPU 版 torch:
pip install torch --index-url https://download.pytorch.org/whl/cpu

要求 Python ≥ 3.10。

快速开始

离线合成

from prosodia import Synthesizer

synth = Synthesizer()
wav = synth.synthesize("今天天气真好,我们出去走走吧。", prompt="温柔而缓慢地说")

流式合成

from prosodia import StreamingSynthesizer

streamer = StreamingSynthesizer()
for chunk in streamer.stream("很高兴见到你!我们来聊聊可控语音合成。", prompt="开心、语速偏快"):
    play(chunk)   # 拿到一块就能播一块

命令行

prosodia synth "你好世界" -o out.wav --prompt "开心地说"
prosodia stream "你好世界,欢迎使用 prosodia。" -o stream.wav
prosodia prompt "非常生气地大声质问"     # 只看解析结果
prosodia emotions                         # 列出内置情感与 VAD 锚点

工作原理

文本 ─▶ 前端(规整+g2p) ─▶ 音素 ─┐
提示 ─▶ 提示系统 ─▶ 控制量/风格 ─┤
                                 ▼
     编码器 ─▶ 情感/风格条件化 ─▶ 方差适配器 ─▶ 解码器 ─▶ 梅尔谱 ─▶ 声码器 ─▶ 波形

细节见 docs/architecture.md

文档

项目状态

早期阶段(Alpha)。内置模型为随机初始化的参考实现,用于跑通链路与验证结构, 不代表音质;训练脚本与预训练权重仍在推进中。API 在 1.0 前可能变动。

许可证

MIT © Cheng Jiawei

About

可控情感与韵律的语音合成框架:文本 / 风格 / 情感提示驱动的 TTS,支持流式推理

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages