这是一个优化后的VoxCPM文本到语音(TTS)系统,具有更好的模块化结构和扩展性。VoxCPM是由ModelBest开发的创新端到端TTS模型,旨在生成高度富有表现力的语音。
- 模块化设计,易于扩展和维护
- 支持多种输入格式(单行文本、文本文件、SRT字幕文件、参考音频目录)
- 支持语音克隆功能
- 支持批量处理
- 完善的日志记录系统
- 配置管理
- 单元测试覆盖
- 支持SRT字幕文件生成
VoxCPM/
├── config/ # 配置文件
│ ├── __init__.py
│ └── settings.py # 系统配置
├── core/ # 核心工具
│ ├── __init__.py
│ └── logger.py # 日志系统
├── scripts/ # 运行脚本
│ └── run_inference.py # 主程序入口
├── tests/ # 单元测试
│ ├── __init__.py
│ └── test_text_processor.py
├── voxcpm_inference/ # 核心推理模块
│ ├── __init__.py
│ ├── audio_processor.py # 音频处理
│ ├── file_handler.py # 文件处理
│ ├── inference_engine.py # 推理引擎
│ └── text_processor.py # 文本处理
├── .gitignore # Git忽略文件
├── .pre-commit-config.yaml # Pre-commit配置
├── CHANGELOG.md # 更新日志
├── pyproject.toml # 项目配置
├── README.md # 项目说明
└── requirements.txt # 依赖列表
确保已安装Python 3.8或更高版本。
pip install -r requirements.txtpython scripts/run_inference.py --text "Hello, this is a test." --output output.wavpython scripts/run_inference.py --text_file input.txt --output_dir outputs/ --batch_processpython scripts/run_inference.py --srt_file subtitle.srt --srt_output_dir srt_outputs/python scripts/run_inference.py --reference_dir reference_audio/ --reference_output_dir reference_outputs/python scripts/run_inference.py --text "Hello, this is a test." --prompt_wav_path reference.wav --prompt_text "Reference text" --output cloned_output.wav--text: 要合成的文本--output: 输出wav文件路径--model_name: 模型名称或路径(可选)--prompt_wav_path: 用于语音克隆的参考音频路径--prompt_text: 参考音频对应的文本--batch_process: 启用批量处理模式--text_file: 批量处理的文本文件路径--output_dir: 批量处理的输出目录--reference_dir: 包含参考音频和字幕文件的目录--reference_output_dir: 参考音频处理的输出目录--srt_file: 单个SRT文件路径--srt_output_dir: 单个SRT文件处理的输出目录
可以通过环境变量或直接修改 config/settings.py 文件来配置系统参数:
MODEL_NAME: 模型名称或路径 (默认: "OpenBMB/VoxCPM-0.5B")SAMPLE_RATE: 输出音频采样率 (默认: 16000)CFG_VALUE: 控制对提示的遵循程度 (默认: 2.0)INFERENCE_TIMESTEPS: 推理步数,越高结果越好但速度越慢 (默认: 10)NORMALIZE: 是否标准化音频 (默认: True)DENOISE: 是否去噪 (默认: True)RETRY_BADCASE: 是否重试失败案例 (默认: True)RETRY_BADCASE_MAX_TIMES: 最大重试次数 (默认: 3)RETRY_BADCASE_RATIO_THRESHOLD: 重试比率阈值 (默认: 0.75)
本项目使用pre-commit钩子来确保代码质量。在提交代码前会自动运行Ruff代码检查和格式化。
安装pre-commit:
pip install pre-commit设置git钩子:
pre-commit install手动运行所有钩子:
pre-commit run --all-filespython -m pytest tests/本项目配置了GitLab CI/CD流程,包括:
- Linting: 代码风格检查
- Testing: 单元测试和覆盖率检查
- Building: 构建Python包
- Deploying: 自动部署到PyPI(仅master分支)
pip install .安装后可以使用命令行工具:
voxcpm-inference --text "Hello world"本项目基于 VoxCPM,相关许可证请参考 VoxCPM 官方仓库。