Skip to content

TTS Benchmark

TianYuan edited this page Mar 1, 2022 · 22 revisions

TTS Benchmark

RTF

声学模型计算 RTF 的方式: 合成 mel 所需时间/(mel 帧长 * hop_size)

以下测试数据是 csmsc 最后 100 条文本为测试文本,不进行文本前端(调用 local/synthesize.sh 使用 dump/test/norm/metadata.jsonl),计算的 RTF 的平均值

测试环境:

8x Tesla A100-80GB, 24 core Intel(R) Xeon(R) Gold 6148, 100Gbps RDMA network(GPU 是在单卡上执行)

WaveRNN 的 RTF 与参数 targetoverlap 强相关,默认配置的 RTF 在 GPU 上是 55+, 在 CPU 上是 65+,完全无法用于实时合成,此处不做计算比较。

GPU:

am only pwgan mb_melgan style_melgan hifigan
voc only —— 0.01776 0.00347 0.01271 0.00599
speedyspeech 0.01239 0.03175 0.01729 0.02591 0.01978
fastspeech2 0.01358 0.03191 0.01831 0.02795 0.0218
tacotron2 0.3249 0.34935 0.3296 0.3408 0.33057

CPU:

am only pwgan mb_melgan style_melgan hifigan
voc only —— 2.2521 0.1958 2.9131 1.62216
speedyspeech 0.02458 2.3261 0.2282 2.9804 1.6730
fastspeech2 0.07090 2.371 0.2733 3.0314 1.7128
tacotron2 0.67911 2.9934 0.8752 3.6405 2.32058

综上:

  1. speedyspeech + GAN Vocoder 的速度略快于 fastspeech2 + GAN Vocoder ,但是还是差不多的(小数点后两位),差距不会大于换 Vocoder 的差距
  2. speedyspeech/fastspeech2 + mb_melgan 在 CPU 上的 RTF 能 <1,上述两个表格在 GPU 上的 RTF 都是可以 <1 的
  3. style melgan 不同于 GPU(pwgan 最慢),在 CPU 上是最慢的(TODO: 有时间可以看看这是为什么)
  4. GPU 上的声码器 RTF 基本上是 pwgan > style_melgan > hifigan > melgan
  5. mb_melgan 为什么 CPU 上的 RTF 比增加地其他声码器都少(不同声码器在 GPU 上相差不是那么大,为什么在 CPU 上相差那么大,是否和具体算子有关?),可能是因为 mb_melgan 只上采样 75 倍,其他模型上采样 300 倍
  6. CPU 上 RTF 相较于 GPU 上提升的倍数:mb_melgan 15 倍,pwgan 75 倍,hifigan 88 倍,style_melgan 119 倍
  7. 从听感上来看,fastspeech2 + mb_melgan > speedyspeech + mb_melgan,CPU RTF 相差也不是太大,综合考虑速度和效果可以优先选择 fastspeech2 + mb_melgan
  8. 对于 speedyspeech 和 fastspeech2 ,声码器选择 MB_melgan 时, GPU 上主要的耗时是在声学模型,CPU 上的主要耗时是在声码器上,对于 tacotron2,GPU 和 CPU 耗时都是主要在声学模型上,因为 tacotron2 本来就没有怎么利用 GPU 的并行功能
  9. Tacotron2 与 GAN Vocoder 组合的瓶颈是 Tacotron2 本身
  10. 声学模型 + 声码器的 RTF 是与 单独声学模型 和 单独声码器 的 RTF 之和相关的,可以从 单独声学模型 和 单独声码器 的 RTF 看出模型组合时瓶颈到底是声学模型和是声码器