EfficientSPeech หรือ ES สำหรับระยะสั้นเป็นแบบจำลองข้อความประสาทต่อการพูด (TTS) ที่มีประสิทธิภาพ มันสร้าง MEL spectrogram ด้วยความเร็ว 104 (MRTF) หรือ 104 วินาทีต่อวินาทีต่อวินาทีบน RPI4 รุ่นเล็ก ๆ ของมันมีค่าใช้จ่ายเพียง 266K พารามิเตอร์ - ประมาณ 1% ของ TTS ที่ทันสมัยเช่น Mixertts การสร้างคำพูด 6 วินาทีใช้ 90 MFLOPS เท่านั้น
EfficientsPeech เป็นหม้อแปลงปิรามิดตื้น (2 บล็อก!) คล้ายกับ U-NET การสุ่มตัวอย่างทำได้โดยการแปลงที่แยกออกจากกันอย่างลึกซึ้ง
ติดตั้ง
ขณะนี้ ES กำลังย้ายไปที่ Pytorch 2.0 และ Lightning 2.0 คาดว่าจะมีคุณสมบัติที่ไม่แน่นอน
pip install -r requirements.txt
ตัวเลือกที่รวบรวมได้รับการสนับสนุนโดยใช้ --compile ระหว่างการฝึกอบรมหรือการอนุมาน สำหรับการฝึกอบรมโหมดกระตือรือร้นเร็วขึ้น การฝึกอบรมรุ่นเล็ก ๆ คือ ~ 17 ชั่วโมงบน A100 สำหรับการอนุมานเวอร์ชันที่รวบรวมได้เร็วขึ้น ด้วยเหตุผลที่ไม่ทราบสาเหตุตัวเลือกคอมไพล์คือการสร้างข้อผิดพลาดเมื่อ --infer-device cuda
โดยค่าเริ่มต้น Pytorch 2.0 ใช้เธรด CPU 128 รายการ (AMD, 4 ใน RPI4) ซึ่งทำให้เกิดการชะลอตัวระหว่างการอนุมาน ในระหว่างการอนุมานขอแนะนำให้ตั้งค่าเป็นจำนวนที่ต่ำกว่า ตัวอย่างเช่น: --threads 24
Pytorch 2.0 ช้าลงบน RPI4 โปรดใช้การสาธิตการเปิดตัวและน้ำหนักรุ่น ICASSP2023
RTF บน Pytorch 2.0 คือ ~ 1.0 RTF บน pytorch 1.12 คือ ~ 1.7
อีกทางเลือกหนึ่งโปรดใช้เวอร์ชัน ONNX:
python3 demo.py --checkpoint https://github.com/roatienza/efficientspeech/releases/download/pytorch2.0.1/tiny_eng_266k.onnx
--infer-device cpu --text "the primary colors are red, green, and blue." --wav-filename primary.wav
รองรับความยาวฟอนิมอินพุตคงที่เท่านั้น การขยายหรือการตัดทอนจะถูกนำไปใช้หากจำเป็น แก้ไขโดยใช้ --onnx-insize=<desired value> ความยาว max phoneme เริ่มต้นคือ 128 ตัวอย่างเช่น:
python3 convert.py --checkpoint tiny_eng_266k.ckpt --onnx tiny_eng_266k.onnx --onnx-insize 256
เลือกโฟลเดอร์ชุดข้อมูล: เช่น <data_folder> = /data/tts - ไดเรกทอรีที่จะจัดเก็บชุดข้อมูล
ดาวน์โหลดชุดข้อมูล KSS ที่กำหนดเอง:
cd efficientspeech
mkdir ./data/kss
ดาวน์โหลดชุดข้อมูล KSS ที่กำหนดเองได้ที่นี่
เตรียมชุดข้อมูล: <parent_folder> - โดยที่ EfficientsPeech ถูกโคลน GIT
cd <parent_folder>/efficientspeech
แก้ไข config/LJSpeech/preprocess.yaml :
>>>>>>>>>>>>>>>>>
path:
corpus_path: "./data/tts/kss"
lexicon_path: "lexicon/korean-lexicon.txt"
raw_path: "./data/tts/kss/wavs"
preprocessed_path: "./preprocessed_data/kss"
>>>>>>>>>>>>>>>>
แทนที่ /data/tts ด้วย <data_folder> ของคุณ
ดาวน์โหลดข้อมูลการจัดตำแหน่งเพื่อ preprocessed_data/KSS/TextGrid จากที่นี่
เตรียมชุดข้อมูล:
python prepare_align.py config/kss/preprocess.yaml
python preprocess.py config/kss/preprocess.yaml
จะใช้เวลาหนึ่งชั่วโมงหรือมากกว่านั้น
สำหรับข้อมูลเพิ่มเติม: การใช้งาน FastSpeech2 เพื่อเตรียมชุดข้อมูล
ES เล็ก
โดยค่าเริ่มต้น:
--precision=16 ตัวเลือกอื่น ๆ : "bf16-mixed", "16-mixed", 16, 32, 64--accelerator=gpu--infer-device=cuda--devices=1utils/tools.py python3 train.py
ES ขนาดเล็ก
python3 train.py --n-blocks 3 --reduction 2
ฐาน ES
python3 train.py --head 2 --reduction 1 --expansion 2 --kernel-size 5 --n-blocks 3 --block-depth 3
python3 demo.py --checkpoint ./lightning_logs/version_2/checkpoints/epoch=4999-step=485000.ckpt --text "그는 괜찮은 척하려고 애 쓰는 것 같았다." --wav-filename base.wav
es vs fs2 vs portaspeech vs lightspeech
สำหรับข้อมูลเพิ่มเติมโปรดดูที่เก็บต่อไปนี้:
synthesize.py text2phoneme ของเกาหลี [✅]หากคุณพบว่างานนี้มีประโยชน์โปรดอ้างอิง:
@inproceedings{atienza2023efficientspeech,
title={EfficientSpeech: An On-Device Text to Speech Model},
author={Atienza, Rowel},
booktitle={ICASSP 2023-2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
pages={1--5},
year={2023},
organization={IEEE}
}