-
Notifications
You must be signed in to change notification settings - Fork 1.9k
TTS Benchmark
TianYuan edited this page Nov 7, 2022
·
22 revisions
TTS RTF = 输入音素并合成 samples 的时长 / 合成的语音时长
AM RTF = 输入音素合成 frames 的时长 / (nframe * frame_shift)
Voc RTF = 输入 mel 并合成 samples 的时长 / 合成的语音时长
FFR = 首包相应时长
LFR = 尾包相应时长
测试数据是 csmsc 最后 100 条文本为测试文本 csmsc_test.txt。
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 |
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 与参数
target
和overlap
强相关,默认配置的 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 |
- GPU 上所有模型 RTF < 1
- speedyspeech + GAN Vocoder 的速度略快于 fastspeech2 + GAN Vocoder ,但是还是差不多的(小数点后两位)
- NAR 模型中 Vocoder 耗时占比高。 AR模型中 AM 耗时占比高。
- speedyspeech/fastspeech2 + mb_melgan CPU 上 RTF < 1
- style melgan CPU上最慢,GPU上第二(PWGAN最慢)
- GPU 上 Vocoder RTF mb_melgan < hifigan < style_melgan < pwgan
- mb_melgan CPU 上的 RTF 比其他声码器都小(不同声码器在 GPU 上相差不大,为什么在 CPU 上相差大,是否和具体算子有关?),可能是因为 mb_melgan 只上采样 75 倍,其他模型上采样 300 倍
- CPU RTF 相较于 GPU 慢:mb_melgan 15 倍,pwgan 75 倍,hifigan 88 倍,style_melgan 119 倍
- 从听感上来看,fastspeech2 + mb_melgan > speedyspeech + mb_melgan,CPU RTF 相差也不是太大,综合考虑速度和效果可以优先选择 fastspeech2 + mb_melgan
- 对于 speedyspeech 和 fastspeech2 ,声码器选择 mb_melgan 时, GPU 上主要的耗时是在声学模型,CPU 上的主要耗时是在声码器;对于 tacotron2,GPU 和 CPU 耗时都是主要在声学模型上,因为 tacotron2 本来就没有怎么利用 GPU 的并行功能
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 |
- 该配置参数在 CPU 上均能较好的达到实时
- 使用 http 协议和 websocket 协议整体效果相差不大,可根据应用场景自行选择