Skip to content

About

阿里云百炼 CosyVoice 语音合成的 CLI + GUI 封装

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

6 Commits

Folders and files

Repository files navigation

CosyVoice Hub

阿里云百炼 CosyVoice(DashScope)与可选 MiniMax T2A V2 HTTP 的 CLI + GUI 封装。

这个项目的目标是:把官方能力做成“可直接生产使用”的本地工具,支持参数可视化、批量处理、计费预估和常见风控校验。


当前功能

  • 三种合成模式:sync(非流式)、stream(单向流式)、bidir(双向流式;MiniMax 下会合并为单次同步)
  • 可选后端:DashScope(默认) 或 MiniMax HTTP
  • 支持 SSML(sync / stream)
  • 计费字符数实时估算(汉字按 2,其余按 1,自动剥离 SSML 标签)
  • 批量 TXT 合成:选择 TXT 文件夹后,按文件名批量生成音频
  • 批量 TXT 格式校验:批量前可先校验 UTF-8 编码与空文件
  • 调用消费提醒:单次与批量都会在高消费场景提示确认
  • 非标准字符提醒:检测 emoji/控制符等字符并在合成前提示
  • 保留 UI 手动输入:可直接在主界面文本框输入内容,无需依赖文件
  • GUI 内播放音频:优先应用内播放(pygame),失败时回退系统默认播放器
  • 费用预估:按模型与计费字符数实时计算预估金额

模型价格(元 / 万计费字符)

模型 价格
v3-flash 1.0
v3.5-flash 0.8
v3-plus 2.0
v3.5-plus 1.5

说明:

  • 输入 cosyvoice-v3-flash 这类完整模型名时,会自动归一化为 v3-flash 后匹配价目表。
  • 若模型不在价目表内,GUI 会提示“当前模型不在价目表,请参考官网”。

环境管理(uv)

本项目以 uv 管理虚拟环境与依赖(根目录 uv.lock + .python-version)。

  1. 安装 uv(若尚未安装):见官方 安装说明。
  2. 进入项目根目录,创建/同步虚拟环境并安装依赖:
    • 仅运行时依赖:uv sync
    • 含开发工具(ruff / mypy / pytest):uv sync --extra dev
  3. 日常命令一律用 uv run ...,无需手动 activate 虚拟环境(PowerShell 示例见下文「运行」)。
  4. 修改 pyproject.toml 依赖后:执行 uv lock 更新锁文件,再 uv sync(或 uv sync --extra dev)。
  5. 与 .python-version 对齐的 Python:若本机无对应版本,可先执行 uv python install 3.12,再 uv sync。
  6. 若 .venv 已损坏(例如提示找不到旧版 Python):删除 .venv 后重新执行 uv sync:
    Remove-Item -Recurse -Force .venv
    uv sync --extra dev

安装

前提:Python >=3.10(推荐与 .python-version 一致,由 uv 自动安装/选用)。

在项目根目录执行(推荐带开发依赖,便于跑检查与测试):

uv sync --extra dev

仅需要运行 CLI/GUI、不需要 ruff/mypy/pytest 时:

uv sync

配置 DashScope(CosyVoice):

$env:DASHSCOPE_API_KEY = "sk-xxxxxxxxxxxxxxxx"

配置 MiniMax(可选后端):

$env:MINIMAX_API_KEY = "你的_MiniMax_接口密钥"

MiniMax 后端(T2A V2 HTTP)

在 CLI 或 GUI「配置」中选择 MiniMax 后,将使用 POST /v1/t2a_v2(标准库 urllib,无额外 HTTP 依赖),与 DashScope 共用同一套「模型 / 音色 / 语速 / 音量 / 音高 / 输出格式」控件名,但取值需符合 MiniMax 文档(例如 model=speech-2.8-hd、voice 填 MiniMax 的 voice_id)。

  • 鉴权:环境变量 MINIMAX_API_KEY,或取消勾选「使用环境变量」后在界面填写。
  • Base URL:默认 https://api.minimaxi.com;可在 GUI 或 --minimax-base-url 指定备用根地址(如 https://api-bj.minimaxi.com)。
  • 字符上限:剥离 SSML 标签后的文本长度须 小于 10000 字符(本工具按 9999 校验,超限抛出 CharLimitError);仍会与「计费字符」上限 --max-chars 一并校验。
  • HTTP 超时:未指定 --timeout-ms 时,MiniMax 使用约 300 秒 读超时(见 MINIMAX_DEFAULT_HTTP_TIMEOUT_S),避免长时间无响应占死进程。
  • 音频 URL:output_format 为 url 时,仅允许 https 且主机名包含 minimax 的下载地址,降低误跟随恶意链接的风险。
  • DashScope 专用项:选择 MiniMax 时,hot_fix、word_timestamp、instruction、seed 等不会发往 MiniMax;若已填写,运行日志中会汇总提示。
  • 扩展参数:MiniMax 路径下「高级选项」里的 extra_json 会合并进请求 JSON 顶层(如 pronunciation_dict、language_boost、subtitle_enable、output_format 等),不会传给 DashScope 的 additional_params。
  • 音频格式:可选用 CosyVoice 的 MP3_22050HZ_MONO_256KBPS 这类枚举名(会尽力映射为 audio_setting),或在 extra_json 里覆盖 audio_setting。
  • bidir 模式:MiniMax 无双向流式协议;选择双向时会把各段用换行符合并为 一次非流式 请求,并在日志中提示。

CLI 示例:

uv run cosyvoice-tts sync --provider minimax --model speech-2.8-hd --voice male-qn-qingse --text "你好" --out mm.mp3

运行

GUI

uv run cosyvoice-tts-gui

主界面关键操作:

  • 直接在“待合成文本”里输入内容 + 选择模式 + 设置输出路径 -> 开始合成
  • “批量 TXT”区域:可先点击“校验 TXT 格式”,再执行“按文件名批量合成”
  • 若检测到高消费或非标准字符,系统会先提醒并要求确认
  • “播放音频”:优先应用内播放,必要时自动回退系统播放器

CLI

# 非流式
uv run cosyvoice-tts sync --text "你好,世界" --out output.mp3

# 单向流式
uv run cosyvoice-tts stream --text "实时流式合成示例" --out output.mp3

# 双向流式(按行切分)
uv run cosyvoice-tts bidir --file long_text.txt --by-line --out output.mp3

常用参数

参数 说明 默认值
--provider dashscope 或 minimax dashscope
--minimax-base-url MiniMax API 根地址(可选) 默认官方主域名
--model 模型名称 cosyvoice-v3-flash
--voice 音色 ID longanling_v3
--format 音频格式 SDK 默认
--volume 音量(0-100) 50
--speech-rate 语速(0.5-2.0) 1.0
--pitch-rate 音高(0.5-2.0) 1.0
--seed 随机种子 0
--region 地域:cn/intl cn
--max-chars 计费字符数上限(MiniMax 另受明文 <10000 限制) 20000
--no-char-check 跳过字符数校验 关闭

目录结构(整理后)

cosyvoice-hub/
├── cosyvoice_hub/          # 核心源码
│   ├── gui_app.py          # GUI
│   ├── cli.py              # CLI
│   ├── engine.py           # 合成编排层
│   ├── synth.py            # DashScope SDK 调用封装
│   ├── minimax_t2a.py      # MiniMax T2A V2 HTTP
│   ├── pricing.py          # 价格估算
│   ├── text_rules.py       # 计费字符规则
│   ├── settings.py         # 环境与格式解析
│   ├── constants.py
│   ├── exceptions.py
│   ├── __init__.py
│   └── __main__.py
├── docs/
│   ├── README.md           # 文档索引
│   └── 文件规范.md
├── tests/                  # 单元测试(pytest)
│   └── test_minimax_t2a.py
├── output/
│   └── .gitkeep            # 输出目录占位
├── pyproject.toml
├── uv.lock
└── .gitignore

开发检查

uv run ruff check cosyvoice_hub/
uv run mypy cosyvoice_hub/
uv run pytest tests/ -q

参考资料

About

阿里云百炼 CosyVoice 语音合成的 CLI + GUI 封装

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages