跳到主要内容
返回开发者精选

Kahya TTS:基于 VoxCPM2 微调的土耳其语声音克隆语音合成

作者:Alican Kiraz模型:VoxCPM2

基于 VoxCPM2 微调的土耳其语 TTS,支持参考音色克隆

Kahya TTS 是 Alican Kiraz 基于 OpenBMB VoxCPM2 微调出来的土耳其语文本转语音模型,仓库现在叫 Kızagan-TTS-v1.0。它输出 48 kHz 单声道语音,给一段参考录音就能克隆音色,仓库里还带了一个按句逐条生成音频的推理脚本。Hugging Face 上有一个可以点开就用的 Space 演示。

v1.0 打包的是评测过、已经合并好的 Step 1500 检查点。这次发布没有再微调,也没改权重,新增的是写清楚用法的推理方案、可以直接跑的命令,以及评测结果。

模型与训练来源​

项目内容
基础模型openbmb/VoxCPM2
微调检查点AlicanKiraz0/Kizagan-TTS-step_1500
数据集AlicanKiraz0/TR-Voice-TTS,私有的土耳其语单说话人语料
适配方式LoRA,rank 64、alpha 64,作用在 LM 与 DiT 的注意力投影上
发布格式完整合并权重,可以直接加载,不用再挂旧的 LoRA 适配器
推理精度 / 输出BF16 / 48 kHz 单声道

在线演示 Space 里的模型约 2.29B 参数,推理代码取自 OpenBMB/VoxCPM 仓库的一个固定版本。作者说原始的训练输入清单和优化器状态没能找回,所以模型卡并没有声称训练过程可以独立复现。

快速上手​

模型卡给的命令面向 Linux + NVIDIA CUDA GPU + Python 3.12,VoxCPM 锁定在评测时用的那个源码版本:

Bash
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu130
python -m pip install "voxcpm @ git+https://github.com/OpenBMB/VoxCPM.git@f772e498a45fbb5fb8e13fbf9b9c48be9fe33e69" "huggingface_hub==1.30.0"

hf download AlicanKiraz0/Kizagan-TTS-v1.0 --local-dir ./Kizagan-TTS-v1.0

拿一段干净的单声道参考录音克隆音色,再合成新文本:

Bash
python ./Kizagan-TTS-v1.0/inference.py \
--model ./Kizagan-TTS-v1.0 \
--reference ./speaker.wav \
--text "Merhaba, yeni bir metni referans sesle okuyorum." \
--output-dir ./Kizagan-voice-clone

每次运行会产出 audio.wav、逐句的 sentence_*.wav 和 metrics.json。脚本固定 CFG 2.0、16 步扩散、随机种子 42,关闭编译、降噪和自动重试,拼接时不加静音、不裁剪、也不做交叉淡化。按模型卡给的命令做冒烟测试,生成了一段 3.36 秒的 48 kHz 音频,可以试听。

声音克隆​

Kahya 推理时接收一段参考录音,以此为条件合成新文本。换一段录音不会训练新适配器,也不会改模型权重。参考录音的文字稿是可选的,打包的 inference.py 只用参考音频。

能力使用方式本次发布的验证情况
只用参考音频克隆--reference 或 Python 参数 reference_wav_path打包命令已经测过,有少量同说话人的听感结果
长文本保持同一参考--sentences-file,每行一句两次长文本听感测试中更受偏好
参考音频 + 文字稿Python 中同时传入 prompt_wav_path 与 prompt_text继承自 VoxCPM2 API(上游叫 Ultimate Cloning),只做了功能验证
带参考的情绪 / 语速引导在文本开头加括号形式的自然语言指令继承的控制格式,没评测风格准确度
无参考的声音设计在文本开头写声音描述继承的控制格式,没评测设计出来的音色质量
无参考的普通 TTSPython generate(text=...)继承的 API,没评测默认音色质量
流式输出音频块Python generate_streaming(...)Python 逐块产出;CLI 保存完整 WAV

使用时注意几点:

  • 用你自己的声音,或者已经拿到授权的录音。单人说话、环境安静、发音清楚,避开背景音乐、多人重叠和削波。评测用的参考音频长 6.175 秒,这只是示例,不是 API 要求的上下限。
  • VoxCPM2 内部会把参考音频重采样到 16 kHz,输出是 48 kHz。
  • 它的输入是文本,参考录音只用来定音色,不是语音到语音的变声器。
  • 长文本要准备“每行一句”的文件:每一行都从头用同一段原始参考重建缓存,上一句的生成结果不会当成下一句的提示。

实测性能​

下面这组数据来自一次固定的开发评测:NVIDIA RTX PRO 6000 Blackwell Workstation Edition(96 GB),CUDA BF16,CFG 2.0,16 步扩散,种子 42,同一段参考音频。只测了两段文本,算不上吞吐承诺。

示例句数生成音频调用耗时合计整体 RTFPyTorch 峰值预留显存
图书馆,151 词1268.16 s24.521 s0.3606,114 MiB
火车站台,149 词1366.72 s24.042 s0.3606,114 MiB

整体 RTF = 调用耗时之和 / 音频时长之和,不算模型加载、文件读写和最后拼接。更多细节见 evaluation/README.md。

听感评测​

一位土耳其语听者在两段新的开发文本上对比了“逐句生成”和“整段生成”,A/B 位置做了平衡,响度也对齐:

示例逐句生成:自然度 / 相似度整段生成:自然度 / 相似度偏好
图书馆5/5、5/51/5、1/5逐句
火车站台4/5、5/51/5、1/5逐句

听者反馈说,两段整段生成的输出在接近结尾时质量都掉了。固定 ASR 的词错误数(整段 / 逐句):图书馆文本 1/151 与 0/151,站台文本 2/149 与 2/149。作者强调这些只是给开发做参考的观察,不是群体 MOS,也不能保证换别的文本还是这个效果。

局限​

  • 微调数据是单说话人语料,听感评测也只针对这个说话人,陌生说话人、口音或其他语言的克隆相似度还没验证。
  • --text 是一次调用,不会自动分句;长段落请用逐句文件。
  • 脚本不会自动处理土耳其语缩写、数字和有歧义的句子边界,数字得按读法写出来。
  • 风格指令遵循、声音设计和流式这些高级模式只检查过能不能跑,没做听感评测。
  • 逐句拼接时不加停顿,也不做交叉淡化,句与句之间可能接得不顺。

相关链接​

项目作者:Alican Kiraz。基础模型 VoxCPM2 来自 OpenBMB。

项目信息

基于模型
VoxCPM2
作者
Alican Kiraz