
Comparação de cinco modelos de TTS emocional para japonês e chinês com seis emoções, SenseVoice, emotion2vec anchors, CER, naturalidade, runtime e exemplos de áudio.
Modelos e referências:
Resumo
Benchmarkamos cinco sistemas de TTS emocional para japonês e chinês em seis emoções alvo: neutral, happy, sad, angry, fear e disgust. As frases são neutras para que a emoção venha do estilo de fala.
O candidato mais equilibrado é o Qwen3-TTS CustomVoice 1.7B: CER baixo, melhor anchor hit rate, boa naturalidade e o compromisso mais prático em japonês/chinês.
CosyVoice 300M Instruct lidera em naturalidade, mas o controle emocional é fraco. IndexTTS-2 parece forte no pooled SenseVoice score, mas o CER japonês é alto demais. Chinês é mais fácil que japonês, e fear e disgust seguem sem solução.
Motivação
TTS emocional não é apenas produzir uma voz natural. O modelo precisa dizer a frase correta, soar bem e expressar a emoção pedida. Por isso esta avaliação combina reconhecimento de emoção, anchors emocionais, CER, naturalidade, runtime e exemplos de áudio.
- A frase pretendida em japonês ou chinês deve permanecer correta.
- A fala deve soar natural o suficiente para escuta real.
- A voz gerada deve expressar a emoção solicitada, sem cair em fala neutra ou em uma emoção próxima.
Metodologia de avaliação
O benchmark usa uma grade equilibrada por idioma, emoção e texto. A mesma frase é reutilizada nas seis emoções para forçar o modelo a expressar emoção por prosódia e estilo vocal.
Conjunto de prompts
Exemplos de prompts em japonês:
| ID | Frase |
|---|---|
ja_001 | 会議は午前十時に始まります。 |
ja_002 | 資料は机の上に置いてあります。 |
ja_003 | 明日の予定を確認してください。 |
ja_004 | 電車は三番線から出発します。 |
ja_005 | 受付で名前を伝えてください。 |
Exemplos de prompts em chinês:
| ID | Frase |
|---|---|
zh_001 | 会议将在上午十点开始。 |
zh_002 | 资料已经放在桌子上。 |
zh_003 | 请确认明天的日程安排。 |
zh_004 | 列车将从三号站台出发。 |
zh_005 | 请在前台告知您的姓名。 |
Controle de emoção
| Target emotion | Control text |
|---|---|
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. |
Métricas
- Precisão emocional SenseVoice: métrica principal de triagem automática.
- Anchor hit e margin do emotion2vec: diagnóstico secundário baseado em centroides de anchors de fala emocional.
- CER: taxa de erro de caracteres entre a transcrição e o prompt original.
- NISQA-TTS e UTMOS: métricas de diagnóstico de naturalidade e qualidade da voz sintetizada.
- RTF: real-time factor para medir a velocidade de síntese.
Resultados
Uso de recursos
As métricas de recursos vêm de 600 gerações bem-sucedidas. GPU, VRAM, wall time e RTF estão preenchidos em todas as linhas concluídas; CPU nem sempre é capturado para adapters server-backed.
| Model | Median wall time | Median RTF | Median peak VRAM | GPU util | GPU power | CPU | Median peak 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 é o mais rápido e usa menos VRAM, mas não é o melhor candidato para controle emocional. Qwen3-TTS usa mais VRAM que CosyVoice, porém é muito mais rápido que IndexTTS-2 e VoxCPM2 e mantém melhor equilíbrio.
Visão geral das métricas JA/ZH
Esta tabela separa japonês e chinês em três verificações principais: precisão SenseVoice, CER e alinhamento de anchors emotion2vec.
| Model | 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 |
Chinês é geralmente mais fácil nas métricas emocionais automáticas, mas CER e precisão emocional nem sempre andam juntos. Qwen3-TTS mantém CER baixo nos dois idiomas; IndexTTS-2 tem o maior SenseVoice japonês e também o pior CER japonês.
Fidelidade textual (CER)
Em fidelidade textual, Qwen3-TTS é o resultado mais estável: CER japonês 8,6% e CER chinês 9,7%. IndexTTS-2 é o alerta, com CER japonês de 91,0%.
Precisão emocional
SenseVoice
Neste setup automático, chinês é claramente mais fácil que japonês. Para Qwen3-TTS, a precisão SenseVoice em chinês é 53,3% e em japonês 15,0%, mesmo com CER baixo nos dois idiomas.
fear e disgust são os rótulos mais difíceis. O recall SenseVoice é 0,0% para ambos em todos os pares modelo/idioma, frequentemente caindo para sad, neutral, angry ou unknown.
As linhas são emoções alvo e as colunas são previsões SenseVoice. As caixas verdes marcam a diagonal ideal.
| Caso | O que aconteceu | Por que importa |
|---|---|---|
indextts-2 / ja | happy -> sad 4/10; fear -> sad 5/10; disgust -> angry 10/10. | Rótulos emocionais podem parecer plausíveis mesmo quando a qualidade textual japonesa é pouco confiável. |
qwen3_tts_customvoice_1_7b / zh | happy -> neutral 5/10; fear -> sad 9/10; disgust -> neutral 9/10. | Qwen é o candidato mais equilibrado, mas emoções difíceis ainda colapsam. |
cosyvoice_300m_instruct / ja | happy -> unknown 10/10; fear -> unknown 9/10; disgust -> unknown 8/10. | Naturalidade não garante controle emocional reconhecível. |
fish_audio_s1_mini / zh | happy -> neutral 10/10; fear -> neutral 9/10; disgust -> neutral 8/10. | Marcadores emocionais inline não mudaram a prosódia de forma confiável. |
voxcpm2 / zh | happy -> neutral 7/10; fear -> neutral 6/10; disgust -> neutral 10/10. | Controle por prompt frequentemente caiu em fala neutra. |
emotion2vec anchors
A métrica de anchors conta história parecida: anchors chineses são mais favoráveis que japoneses. Margem positiva significa que o áudio está mais perto do centroide da emoção alvo. Qwen3-TTS tem margem positiva em chinês, enquanto todas as margens japonesas são negativas.
Naturalidade
| Model | Mean NISQA-TTS | Low NISQA-TTS <3.0 | Mean UTMOS | Low 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% |
Naturalidade e correção emocional são perguntas diferentes. CosyVoice vence em naturalidade, mas não em controle emocional. Qwen3-TTS fica um pouco atrás em NISQA-TTS, porém equilibra melhor emoção, texto e velocidade.
Exemplos de áudio
A tabela abaixo usa o mesmo prompt index para amostras happy e angry em japonês e chinês. Estes clipes não são teste humano, mas anchors qualitativos para interpretar as métricas.
| Model | Language | Target | SenseVoice prediction | Sample |
|---|---|---|---|---|
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 |
Limitações
- Rótulos emocionais automáticos não são julgamento humano. SenseVoice é útil por suportar japonês e chinês, mas pode ter bias de classificador e desequilíbrio por idioma.
- Métricas anchor dependem dos datasets anchor. Anchors japoneses vêm do JVNV e chineses do CSEMOTIONS;
ja/neutralezh/disgustestavam ausentes neste run. - IndexTTS-2 em japonês é diagnóstico. O pooled score parece forte, mas o CER japonês é alto demais neste setup.
Pesquisa futura
- Rodar um MOS/CMOS pequeno com falantes nativos para Qwen3-TTS e CosyVoice.
- Tratar IndexTTS-2 como candidato chinês por enquanto, ou rodar novamente após corrigir o tokenizer/text path japonês.
- Adicionar ou curar anchors ausentes
ja/neutralezh/disgust. - Fazer checagem humana em chinês para
sad,angry,fearedisgust. - Manter SenseVoice como triagem automática, mas tomar decisões de produção com testes humanos de escuta.
Conclusão
Para TTS emocional em japonês e chinês, Qwen3-TTS CustomVoice 1.7B é o modelo mais equilibrado deste benchmark. Ele não resolve todas as emoções, mas oferece o mix mais prático de reconhecimento emocional, CER baixo, anchor hit rate, naturalidade e runtime.