
面向日语和中文六种目标情绪,对五个情感文本转语音模型进行 SenseVoice、emotion2vec 锚点、CER、自然度、运行时间和试听样本评估。
模型与参考资料:
- Qwen3-TTS CustomVoice 1.7B - 支持显式情绪提示的自定义音色 TTS。
- CosyVoice 300M Instruct / CosyVoice2 - instruction 风格 TTS 基线,带日语和中文内置说话人。
- Fish Audio S1-mini - 使用内联情绪标记的表现力 TTS 模型。
- VoxCPM2 - 多语言提示驱动 TTS 模型。
- IndexTTS-2 - 本文作为日语/中文实验对比对象评估的情感零样本 TTS 模型。
摘要
本文评估了五个面向日语和中文的情感文本转语音系统,目标情绪包括 neutral、happy、sad、angry、fear 和 disgust。评估使用语义中性的提示句,因此模型必须通过语音风格表达情绪,而不是依赖文本本身的情绪词。每个模型生成120个样本,五个完成模型共形成600个 WAV 文件的主基准语料。
综合表现最均衡的候选模型是 Qwen3-TTS CustomVoice 1.7B:在日语和中文文本输出可信的模型中,它拥有最好的综合 SenseVoice 准确率、最低平均 CER、最佳锚点命中率,以及较强的 NISQA-TTS 自然度。CosyVoice 300M Instruct 是自然度领先者,但情绪识别较弱,尤其是在日语中。IndexTTS-2 的综合 SenseVoice 分数较高,但日语 CER 过高,因此不能把该结果视为可靠的日语 TTS 证据。
最重要的模式是语言和情绪的不平衡:在该自动评估设置下,中文始终比日语更容易,而 fear 和 disgust 在所有被评估模型中仍未解决。
动机
情感 TTS 不只是自然度问题。模型可以听起来流畅、悦耳,却无法表达指定风格。对于多语言虚拟人、客服语音、训练模拟、富表现力语音翻译等产品场景,我们需要确认 TTS 系统能否同时保持三件事一致:
- 说出目标日语或中文句子。
- 听起来足够自然。
- 表达指定情绪,而不是退化为中性语音或相近情绪。
CLAP 风格的音频文本相似度适合宽泛检索,但对六标签情感 TTS 基准来说过于间接。因此,本评估结合了离散情绪识别、连续情绪锚点、转写正确性、自然度预测、运行时间和试听样本。目标不是仅凭自动指标宣布最终生产模型,而是筛选出值得进入人工听测的系统。
评估方法
本基准使用按语言、情绪和提示文本均衡组合的生成网格:
同一个句子会在六种情绪下重复使用。这样可以让任务保持干净:如果日语句子是“会議は午前十時に始まります。”,中文句子是“资料已经放在桌子上。”,模型就不能依赖带情绪色彩的文本内容,而必须通过语音表达目标情绪。
提示集
日语提示示例:
| ID | 句子 |
|---|---|
ja_001 | 会議は午前十時に始まります。 |
ja_002 | 資料は机の上に置いてあります。 |
ja_003 | 明日の予定を確認してください。 |
ja_004 | 電車は三番線から出発します。 |
ja_005 | 受付で名前を伝えてください。 |
中文提示示例:
| ID | 句子 |
|---|---|
zh_001 | 会议将在上午十点开始。 |
zh_002 | 资料已经放在桌子上。 |
zh_003 | 请确认明天的日程安排。 |
zh_004 | 列车将从三号站台出发。 |
zh_005 | 请在前台告知您的姓名。 |
情绪控制
| 目标情绪 | 控制文本 |
|---|---|
neutral | Speak in a clear, neutral, natural voice. |
happy | Speak in a happy, warm, bright voice. |
sad | Speak in a sad, soft, slow, gentle voice. |
angry | Speak in an angry, tense, forceful voice. |
fear | Speak in a fearful, tense, trembling voice. |
disgust | Speak in a disgusted, displeased, rejecting voice. |
每个模型接收相同的目标标签和文本,但实际控制接口因模型而异。
| 模型 | 使用的说话人/参考输入 | 情绪控制 |
|---|---|---|
qwen3_tts_customvoice_1_7b | 预定义 CustomVoice 说话人 Ryan。 | 原始句子加自然语言控制指令。 |
cosyvoice_300m_instruct | 命名内置说话人:日语 日语男,中文 中文男。 | 原始句子加自然语言控制指令。 |
fish_audio_s1_mini | 无说话人或情绪参考 WAV。 | 使用 (joyful)、(sad)、(angry)、(scared)、(disgusted) 等内联标记。 |
voxcpm2 | 主实验中无 prompt/reference WAV。 | 在文本前内联加入控制指令。 |
indextts-2 | 数据集来源的说话人 prompt WAV:日语使用 JVNV,中文使用 CSEMOTIONS。 | 原始句子加 emo_text 文本情绪条件。 |
指标
- SenseVoice 情绪准确率:主要自动筛选指标。SenseVoice 预测被映射到六个基准标签;
surprised和unknown计为不匹配。 - emotion2vec 锚点命中率和 margin:辅助诊断指标,使用 CSEMOTIONS 中文情感语音锚点中心和 JVNV 日语锚点中心。
- CER:使用 faster-whisper-large-v3 转写并与原始提示文本对比,用于确认情绪表达没有破坏发音内容。
- NISQA-TTS:合成语音自然度的主要诊断指标。
- UTMOS:辅助质量诊断指标;可作为警示信号,但对日语/中文较严格且更偏域外。
- RTF:合成速度的实时因子。
结果
资源使用
资源指标来自600条成功生成记录对应的 metrics/generation_runs.csv。这些指标应作为运行诊断,而不是严格硬件基准:GPU、VRAM、wall time 和 RTF 在所有完成记录中都有值;而对运行在采样进程树之外的服务端适配器,CPU 指标没有被捕获。
| 模型 | 中位 wall time | 中位 RTF | 中位峰值 VRAM | GPU 使用率 | GPU 功耗 | CPU | 中位峰值 RSS |
|---|---|---|---|---|---|---|---|
cosyvoice_300m_instruct | 2.26s | 0.85 | 3.96 GB | 30.3% avg / 39.0% peak | 145.0W avg / 155.6W peak | 127.8% peak; 100% coverage | 5.54 GB |
qwen3_tts_customvoice_1_7b | 4.20s | 1.58 | 8.13 GB | 22.9% avg / 25.0% peak | 126.3W avg / 127.1W peak | 138.1% peak; 100% coverage | 6.22 GB |
fish_audio_s1_mini | 7.06s | 3.47 | 13.05 GB | 25.3% avg / 69.0% peak | 150.4W avg / 183.7W peak | not captured; 0% coverage | 0.80 GB |
indextts-2 | 26.39s | 6.97 | 7.29 GB | 18.2% avg / 100.0% peak | 131.3W avg / 199.6W peak | not captured; 0% coverage | 7.69 GB |
voxcpm2 | 28.44s | 9.84 | 12.79 GB | 12.3% avg / 100.0% peak | 106.7W avg / 191.5W peak | not captured; 0% coverage | 10.65 GB |
CosyVoice 在本次运行中最快、VRAM 最低,但不是最强的情绪控制候选。Qwen3-TTS 比 CosyVoice 需要更多 VRAM,但比 IndexTTS-2 和 VoxCPM2 快得多,同时保持了情绪识别和文本忠实度之间最好的平衡。Fish Audio 的进程 RSS 很小,但 GPU 显存占用是完成模型中最大的。
JA/ZH 指标概览
这张拆分表是对比日语和中文行为的最快方式,涵盖三个核心自动检查:SenseVoice 情绪准确率、CER 文本忠实度、emotion2vec 锚点对齐。
| 模型 | JA SenseVoice | ZH SenseVoice | JA CER | ZH CER | JA anchor hit | ZH anchor hit | JA anchor margin | ZH anchor margin |
|---|---|---|---|---|---|---|---|---|
qwen3_tts_customvoice_1_7b | 15.0% | 53.3% | 8.6% | 9.7% | 40.0% | 64.0% | -0.06645 | 0.04480 |
indextts-2 | 43.3% | 16.7% | 91.0% | 10.3% | 38.0% | 30.0% | -0.08293 | -0.04063 |
voxcpm2 | 6.7% | 35.0% | 18.6% | 4.4% | 40.0% | 36.0% | -0.04479 | -0.02693 |
cosyvoice_300m_instruct | 1.7% | 36.7% | 43.9% | 11.1% | 24.0% | 72.0% | -0.05481 | 0.03796 |
fish_audio_s1_mini | 6.7% | 16.7% | 12.7% | 16.8% | 20.0% | 24.0% | -0.08972 | -0.09542 |
从自动情绪指标看,中文整体更容易。但 CER 与情绪准确率并不总是同步变化。Qwen3-TTS 在两种语言上都保持较低 CER,而 IndexTTS-2 既有最高的日语 SenseVoice 分数,也有最差的日语 CER。
文本忠实度(CER)
在文本忠实度方面,Qwen3-TTS 是最稳定的 JA/ZH 结果:日语 CER 为8.6%,中文 CER 为9.7%。IndexTTS-2 是需要警惕的案例。它的综合情绪分数看起来有竞争力,但日语 CER 达到91.0%,说明在该设置下日语文本路径并不可靠。
情绪准确率
SenseVoice
在这个自动评估设置中,中文明显比日语更容易。以 Qwen3-TTS 为例,中文 SenseVoice 准确率为53.3%,日语为15.0%,尽管两种语言的 CER 都较低。这说明问题不只是可懂度:SenseVoice 能识别到的日语情绪线索更弱,或与目标标签不够一致。
fear 和 disgust 是最难的标签。所有模型/语言组合中,SenseVoice 对这两个情绪的召回率都是0.0%。这些标签经常退化为 sad、neutral、angry 或 unknown。
行表示目标情绪,列表示 SenseVoice 预测。绿色框标出理想对角线。
主要失败模式:
| 案例 | 发生了什么 | 为什么重要 |
|---|---|---|
indextts-2 / ja | happy -> sad 4/10; fear -> sad 5/10; disgust -> angry 10/10. | 即使日语文本质量不可靠,情绪标签仍可能看起来合理。 |
qwen3_tts_customvoice_1_7b / zh | happy -> neutral 5/10; fear -> sad 9/10; disgust -> neutral 9/10. | Qwen 是平衡性最强的模型,但困难情绪仍会坍缩。 |
cosyvoice_300m_instruct / ja | happy -> unknown 10/10; fear -> unknown 9/10; disgust -> unknown 8/10. | 自然度并不能保证可识别的情绪控制。 |
fish_audio_s1_mini / zh | happy -> neutral 10/10; fear -> neutral 9/10; disgust -> neutral 8/10. | 内联情绪标记没有可靠地改变生成语音韵律。 |
voxcpm2 / zh | happy -> neutral 7/10; fear -> neutral 6/10; disgust -> neutral 10/10. | 提示驱动控制经常坍缩为中性语音。 |
emotion2vec 锚点
锚点指标与 SenseVoice 显示出类似趋势:中文锚点比日语更有利。正 margin 表示生成音频比最近的非目标情绪中心更接近目标情绪中心。Qwen3-TTS 在中文上有正 margin,而所有日语 margin 都为负。
与 SenseVoice 不同,锚点诊断是中心相似度检查,而不是标签分类器。因此,有用的可视化是命中率/margin 拆分图,而不是混淆矩阵。
自然度
| 模型 | 平均 NISQA-TTS | 低 NISQA-TTS <3.0 | 平均 UTMOS | 低 UTMOS <3.0 |
|---|---|---|---|---|
cosyvoice_300m_instruct | 4.267 | 0.0% | 3.282 | 20.8% |
indextts-2 | 4.063 | 11.7% | 2.078 | 93.3% |
qwen3_tts_customvoice_1_7b | 4.007 | 0.8% | 2.939 | 51.7% |
fish_audio_s1_mini | 3.935 | 3.3% | 2.932 | 55.8% |
voxcpm2 | 3.788 | 8.3% | 2.596 | 76.7% |
自然度和情绪正确性是两个不同问题。CosyVoice 是最明确的自然度赢家,但不是情绪控制赢家。Qwen3-TTS 的 NISQA-TTS 略低于 CosyVoice,但在情绪识别和文本可懂度的平衡上明显更好。
试听样本
下表在日语和中文的 happy 与 angry 中使用相同提示编号。这些片段不是人工听测,而是帮助理解自动指标的定性锚点。
| 模型 | 语言 | 目标 | SenseVoice 预测 | 样本 |
|---|---|---|---|---|
qwen3_tts_customvoice_1_7b | JA | happy | unknown | |
qwen3_tts_customvoice_1_7b | JA | angry | angry | |
qwen3_tts_customvoice_1_7b | ZH | happy | neutral | |
qwen3_tts_customvoice_1_7b | ZH | angry | angry | |
cosyvoice_300m_instruct | JA | happy | unknown | |
cosyvoice_300m_instruct | JA | angry | unknown | |
cosyvoice_300m_instruct | ZH | happy | happy | |
cosyvoice_300m_instruct | ZH | angry | neutral | |
indextts-2 | JA | happy | sad | |
indextts-2 | JA | angry | surprised | |
indextts-2 | ZH | happy | neutral | |
indextts-2 | ZH | angry | neutral | |
fish_audio_s1_mini | JA | happy | happy | |
fish_audio_s1_mini | JA | angry | happy | |
fish_audio_s1_mini | ZH | happy | neutral | |
fish_audio_s1_mini | ZH | angry | neutral | |
voxcpm2 | JA | happy | unknown | |
voxcpm2 | JA | angry | angry | |
voxcpm2 | ZH | happy | happy | |
voxcpm2 | ZH | angry | angry |
局限性
- 自动情绪标签不是人类判断。 SenseVoice 很有用,因为它支持日语和中文,并输出可以映射到基准标签的情绪标签,但它可能存在分类器偏差和语言不平衡。
- 锚点指标依赖锚点数据集。 日语锚点来自 JVNV,中文锚点来自 CSEMOTIONS;本次运行中缺少
ja/neutral和zh/disgust锚点。 - IndexTTS-2 的日语结果只适合作诊断参考,不能作为生产证据。 它的综合情绪分数看起来较强,但该设置下日语 CER 过高。
后续研究
- 对 Qwen3-TTS 和 CosyVoice 进行小规模母语听者 MOS/CMOS 测试,并分别评价自然度、情绪正确性和文本可懂度。
- 暂时将 IndexTTS-2 视为中文专用,或在修复日语 tokenizer/文本路径后重新运行。
- 添加或整理缺失的
ja/neutral和zh/disgust情绪锚点。 - 对
sad、angry、fear和disgust做聚焦中文人工检查,因为自动指标显示这些标签之间差异明显。 - 继续将 SenseVoice 作为自动筛选指标,但最终生产决策应基于人工听测。
总结
对于日语和中文情感 TTS,Qwen3-TTS CustomVoice 1.7B 是本基准中最均衡的模型。它并没有解决所有情绪,但在情绪识别、低 CER、锚点命中率、自然度和运行时间之间取得了最实用的组合。
CosyVoice 300M Instruct 是自然度领先者,值得进入人工听测,但不应被视为已经解决六情绪控制。IndexTTS-2 在诊断上很有意思,尤其是中文部分;但在修复文本路径之前,日语结果不应被信任。
最大的开放问题不是原始自然度,而是可靠且跨语言一致的情绪控制。在该设置中,中文比日语更容易,而 fear 和 disgust 在所有被评估模型中仍然是开放问题。


