Skip to content

TTS Benchmark

TianYuan edited this page Nov 7, 2022 · 22 revisions

TTS Benchmark

RTF 定义

TTS RTF = 输入音素并合成 samples 的时长 / 合成的语音时长
AM RTF  = 输入音素合成 frames 的时长 / (nframe * frame_shift)
Voc RTF = 输入 mel 并合成 samples 的时长 / 合成的语音时长
FFR = 首包相应时长
LFR = 尾包相应时长

测试数据

测试数据是 csmsc 最后 100 条文本为测试文本 csmsc_test.txt

Non-Streaming TTS RTF

Paddle 2.3

Paddle 2.3 优化了 Conv1D 的 unsqueeze 的方式、采用了新动态图,使语音合成模型推理速度大幅增加,推荐使用 paddle 2.3 进行推理

GPU:

am only pwgan mb_melgan style_melgan hifigan
voc only —— 0.01508
speedyspeech
fastspeech2
tacotron2

CPU:

am only pwgan mb_melgan style_melgan hifigan
voc only - 1.60 0.6
speedyspeech
fastspeech2
tacotron2

Paddle 2.2

python 版本: 3.7.0
paddle 版本: v2.2.2
机器: 8x Tesla V100-SXM2-32GB, 24 core Intel(R) Xeon(R) Gold 6148, 100Gbps RDMA network(GPU 是在单卡上执行)
模型: 纯离线推理。
备注: 不包含文本前端(调用 local/synthesize.sh 使用 dump/test/norm/metadata.jsonl

WaveRNN 的 RTF 与参数 targetoverlap 强相关,默认配置的 GPU RTF 是 55+, CPU RTF 是 65+ , RTF >>1 后续未统计。

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. GPU 上所有模型 RTF < 1
  2. speedyspeech + GAN Vocoder 的速度略快于 fastspeech2 + GAN Vocoder ,但是还是差不多的(小数点后两位)
  3. NAR 模型中 Vocoder 耗时占比高。 AR模型中 AM 耗时占比高。
  4. speedyspeech/fastspeech2 + mb_melgan CPU 上 RTF < 1
  5. style melgan CPU上最慢,GPU上第二(PWGAN最慢)
  6. GPU 上 Vocoder RTF mb_melgan < hifigan < style_melgan < pwgan
  7. mb_melgan CPU 上的 RTF 比其他声码器都小(不同声码器在 GPU 上相差不大,为什么在 CPU 上相差大,是否和具体算子有关?),可能是因为 mb_melgan 只上采样 75 倍,其他模型上采样 300 倍
  8. CPU RTF 相较于 GPU 慢:mb_melgan 15 倍,pwgan 75 倍,hifigan 88 倍,style_melgan 119 倍
  9. 从听感上来看,fastspeech2 + mb_melgan > speedyspeech + mb_melgan,CPU RTF 相差也不是太大,综合考虑速度和效果可以优先选择 fastspeech2 + mb_melgan
  10. 对于 speedyspeech 和 fastspeech2 ,声码器选择 mb_melgan 时, GPU 上主要的耗时是在声学模型,CPU 上的主要耗时是在声码器;对于 tacotron2,GPU 和 CPU 耗时都是主要在声学模型上,因为 tacotron2 本来就没有怎么利用 GPU 的并行功能

Streaming TTS RTF

Device: cpu; merge_sentences=True; cpu_thread=4;

AM:

  • fastspeech2_cnndecoder_onnx
  • am_block=72, am_pad=12

Vocoder:

  • hifigan_onnx
  • voc_block=36, voc_pad=14

ONNXRuntime 版本:1.10.0

机器 1(服务器):

  • CPU:28 Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
    • cpu 核数:2
    • 逻辑 cpu(线程):28
  • 内存:188G

机器 2(Windows10 笔记本):

  • CPU:Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
    • cpu 核数:4
    • 逻辑 cpu(线程):8
  • 内存:8G

机器 3(Mac 笔记本):

  • Intel(R) Core(TM) i5-8257U CPU @ 1.40GHz
    • cpu核数:4
    • 逻辑 cpu (线程):8
  • 内存:8G

server 端和 client 端均在同一台机器开启。

protocol 机器编号 CPU型号 平均首包响应时长 平均尾包响应时长 平均音频时长 RTF 总包数 延迟包数 延迟率 平均延迟时间
http 1 E5-2680 v4 0.233 s 1.841 s 3.776 s 0.488 1768 0 0 0
http 2 i5-8250U 0.311 s 2.353 s 3.777 s 0.623 1770 0 0 0
http 3 i5-8257U 0.405 s 2.192 s 3.777 s 0.580 1770 5 0.282% 0.106 s
websocket 1 E5-2680 v4 0.221 s 1.832 s 3.776 s 0.485 1768 0 0 0
websocket 2 i5-8250U 0.278 s 2.223 s 3.777 s 0.588 1770 0 0 0
websocket 3 i5-8257U 0.420 s 2.204 s 3.777 s 0.584 1770 9 0.508% 0.0735

结论

  1. 该配置参数在 CPU 上均能较好的达到实时
  2. 使用 http 协议和 websocket 协议整体效果相差不大,可根据应用场景自行选择