ตรวจสอบไฟล์ Changelog เพื่อให้มีภาพรวมทั่วโลกของการแก้ไขล่าสุด! -
├── custom_architectures
│ ├── tacotron2_arch.py : Tacotron-2 synthesizer architecture
│ └── waveglow_arch.py : WaveGlow vocoder architecture
├── custom_layers
├── custom_train_objects
│ ├── losses
│ │ └── tacotron_loss.py : custom Tacotron2 loss
├── example_outputs : some pre-computed audios (cf the ` text_to_speech ` notebook)
├── loggers
├── models
│ ├── encoder : the ` AudioEncoder ` is used as speaker encoder for the SV2TTS model *
│ ├── tts
│ │ ├── sv2tts_tacotron2.py : SV2TTS main class
│ │ ├── tacotron2.py : Tacotron2 main class
│ │ ├── vocoder.py : main functions for complete inference
│ │ └── waveglow.py : WaveGlow main class (both pytorch and tensorflow)
├── pretrained_models
├── unitests
├── utils
├── example_fine_tuning.ipynb
├── example_sv2tts.ipynb
├── example_tacotron2.ipynb
├── example_waveglow.ipynb
└── text_to_speech.ipynbตรวจสอบโครงการหลักสำหรับข้อมูลเพิ่มเติมเกี่ยวกับโมดูล / โครงสร้าง / คลาส / คลาสหลัก
* ตรวจสอบโครงการ ENCODERS สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโมเดล models/encoder
models.tts ):| คุณสมบัติ | การเป็นผ้า / ชั้นเรียน | คำอธิบาย |
|---|---|---|
| ข้อความเป็นคำพูด | tts | ดำเนินการ tts บนข้อความที่คุณต้องการด้วยรุ่นที่คุณต้องการ |
| ลำธาร | tts_stream | ดำเนินการ tts บนข้อความที่คุณป้อน |
| tts logger | loggers.TTSLogger | แปลงบันทึก logging เป็นเสียงและเล่นมัน |
สมุดบันทึก text_to_speech ให้การสาธิตที่เป็นรูปธรรมของฟังก์ชัน tts
สถาปัตยกรรมที่มีอยู่:
Synthesizer :SV2TTS )Vocoder :โมเดล SV2TTS ได้รับการปรับแต่งอย่างละเอียดจากโมเดล Tacotron2 Pretrained โดยใช้ขั้นตอน การเรียนรู้การถ่ายโอนบางส่วน (ดูรายละเอียดด้านล่าง) ซึ่งเพิ่มความเร็วในการฝึกอบรมมากมาย
| ชื่อ | ภาษา | ชุดข้อมูล | ซินธิไซเซอร์ | ผู้ร้อง | ตัวเข้ารหัสลำโพง | ผู้ฝึกสอน | น้ำหนัก |
|---|---|---|---|---|---|---|---|
| pretrained_tacotron2 | en | ljspeech | Tacotron2 | WaveGlow | - | Nvidia | Google Drive |
| tacotron2_siwis | fr | ชาวเมือง | Tacotron2 | WaveGlow | - | ฉัน | Google Drive |
| SV2TTS_TACOTRON2_256 | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | ฉัน | Google Drive |
| sv2tts_siwis | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | ฉัน | Google Drive |
| SV2TTS_TACOTRON2_256_V2 | fr | Siwis, Voxforge, Commonvoice | SV2TTSTacotron2 | WaveGlow | Google Drive | ฉัน | Google Drive |
| sv2tts_siwis_v2 | fr | ชาวเมือง | SV2TTSTacotron2 | WaveGlow | Google Drive | ฉัน | Google Drive |
แบบจำลองจะต้องคลายซิปใน pretrained_models/ ไดเรกทอรี!
หมายเหตุสำคัญ : รุ่น NVIDIA ที่มีอยู่ใน torch hub ต้องใช้ GPU ที่เข้ากันได้กับการกำหนดค่าที่ถูกต้องสำหรับ pytorch มันเป็นเหตุผลที่ทั้งสองรุ่นมีให้ในจุดตรวจ keras ที่คาดไว้?
รุ่น sv2tts_siwis เป็นเวอร์ชันที่ปรับแต่งของ sv2tts_tacotron2_256 ในชุดข้อมูล SIWIS (Single-Speaker) การปรับแต่งหลายลำโพงในชุดข้อมูลลำโพงเดียวมีแนวโน้มที่จะปรับปรุงความเสถียรและการผลิตเสียงที่มีน้ำเสียงมากขึ้นเมื่อเทียบกับการฝึกอบรมแบบจำลองลำโพงเดี่ยว
มีการสาธิต Google Colab ที่ลิงค์นี้!
นอกจากนี้คุณยังสามารถค้นหาเสียงที่สร้างขึ้นใน example_outputs/ หรือโดยตรงในสมุดบันทึก colab;)
ตรวจสอบคู่มือการติดตั้งนี้สำหรับคำแนะนำทีละขั้นตอน!
คุณอาจต้องติดตั้ง ffmpeg สำหรับการโหลด / บันทึกเสียง
Google Colab tensorflow 2.x batch_size รองรับ vocoder inference SV2TTS ที่ผ่านการฝึกฝนมาก่อน similarity loss เพื่อทดสอบขั้นตอนการฝึกอบรมใหม่สำหรับการปรับแต่งลำโพงเดี่ยว TTS บนเอกสาร (กำลังดำเนินการ) SV2TTS ตาม GE2E เข้ารหัสที่ได้รับการฝึก มีหลายวิธีในการเปิดใช้งานการสังเคราะห์คำพูด multi-speaker :
speaker ID ที่ฝังอยู่ในชั้น Embedding ที่เรียนรู้ได้ การฝังผู้พูดจะได้เรียนรู้ระหว่างการฝึกอบรมSpeaker Encoder (SE) เพื่อฝังเสียงจากลำโพงอ้างอิง สิ่งนี้มักถูกเรียกว่า zero-shot voice cloning เนื่องจากต้องใช้ตัวอย่างจากลำโพงเท่านั้น (โดยไม่ต้องฝึกอบรม)prompt-based ใหม่เพื่อควบคุมคำพูดด้วยพรอมต์SV2TTS หมายเหตุ: ในย่อหน้าถัดไป encoder หมายถึงส่วนของ Tacotron Encoder ในขณะที่ SE หมายถึงโมเดล speaker encoder (รายละเอียดด้านล่าง)
Speaker Encoder-based Text-To-Speech เป็นแรงบันดาลใจจากกระดาษ "จากการตรวจสอบลำโพงไปยังกระดาษเป็นคำพูด (SV2TTS)" ผู้เขียนได้เสนอส่วนขยายของสถาปัตยกรรม Tacotron-2 เพื่อรวมข้อมูลเกี่ยวกับเสียงของผู้พูด
นี่คือภาพรวมสั้น ๆ ของขั้นตอนที่เสนอ:
speaker verification รุ่นนี้ใช้เป็นอินพุตตัวอย่างเสียง (5-10 วินาที) จากลำโพงและเข้ารหัสมันบนเวกเตอร์ D -dimensional ชื่อ embedding การฝังตัวนี้มีวัตถุประสงค์เพื่อจับข้อมูลที่เกี่ยวข้องเกี่ยวกับเสียงของผู้พูด (เช่น frequencies , rythm , pitch , ... )Speaker Encoder (SE) นี้จะถูกใช้เพื่อเข้ารหัสเสียงของลำโพงเพื่อโคลนTacotron-2 เช่น Decoder สามารถเข้าถึงทั้งข้อความที่เข้ารหัสและการฝังลำโพง วัตถุประสงค์คือตัว Decoder จะเรียนรู้ที่จะใช้ speaker embedding เพื่อคัดลอกฉันทลักษณ์ / น้ำเสียง / ... เพื่ออ่านข้อความด้วยเสียงของลำโพงนี้
มีข้อ จำกัด บางประการกับวิธีการข้างต้น:
Speaker Encoder ต้องแยกลำโพงอย่างถูกต้องและเข้ารหัสเสียงของพวกเขาในวิธีที่มีความหมายสำหรับซินธิไซเซอร์เพื่อจัดการกับข้อ จำกัด เหล่านี้โซลูชันที่เสนอคือการฝึกอบรม 2 ขั้นตอน:
CommonVoice นี่เป็นหนึ่งในฐานข้อมูลหลายภาษาที่ใหญ่ที่สุดสำหรับเสียงที่ราคาเสียงที่มีเสียงดัง / ตัวแปรคุณภาพเสียง ดังนั้นจึงไม่เหมาะที่จะฝึกอบรมแบบจำลองคุณภาพดีในขณะที่การประมวลผลล่วงหน้ายังคงช่วยให้ได้เสียงที่เข้าใจได้ส่วน SE ควรจะสามารถแยกความแตกต่างของลำโพงและฝัง (เข้ารหัสในเวกเตอร์ 1-D) พวกเขาอย่าง มีความหมาย
แบบจำลองที่ใช้ในกระดาษเป็นรุ่น LSTM 3 ชั้นที่มีเลเยอร์การทำให้เป็นมาตรฐานที่ได้รับการฝึกฝนกับการสูญเสีย GE2E ข้อ จำกัด ที่สำคัญคือการฝึกอบรมแบบจำลองนี้ ช้ามาก และใช้เวลา 2 สัปดาห์ใน 4 GPU ในวิทยานิพนธ์ Corentinj Master (cf GitHub ของเขา)
โครงการนี้เสนอสถาปัตยกรรมที่ง่ายขึ้นตาม Convolutional Neural Networks (CNN) ซึ่งเร็วกว่ามากในการฝึกอบรมเมื่อเทียบกับเครือข่าย LSTM นอกจากนี้ระยะ euclidian ก็ถูกนำมาใช้มากกว่าตัวชี้วัด cosine ซึ่งแสดงให้เห็นถึงการบรรจบกันที่เร็วขึ้น นอกจากนี้ยังมีการเสนอเครื่องกำเนิดที่ใช้แคชที่กำหนดเองเพื่อเร่งการประมวลผลเสียง การปรับเปลี่ยนเหล่านี้อนุญาตให้ฝึกอบรมโมเดลความแม่นยำ 99% ภายใน 2-3 ชั่วโมงใน RTX 3090 GPU เดียว!
เพื่อหลีกเลี่ยงการฝึกอบรมแบบจำลอง SV2TTS ตั้งแต่เริ่มต้นซึ่งจะเป็นไปไม่ได้อย่างสมบูรณ์ใน GPU เดียวจะมีการเสนอขั้นตอน partial transfer learning ใหม่
ขั้นตอนนี้ใช้แบบจำลองที่ผ่านการฝึกอบรมมาก่อนด้วยสถาปัตยกรรมที่แตกต่างกันเล็กน้อยและถ่ายโอนน้ำหนักทั่วไปทั้งหมด (เช่นในการเรียนรู้การถ่ายโอนปกติ) สำหรับเลเยอร์ที่มีรูปร่างที่มีน้ำหนักแตกต่างกันมีเพียงส่วนทั่วไปเท่านั้นที่จะถูกถ่ายโอนในขณะที่น้ำหนักที่เหลือจะเริ่มต้นเป็นศูนย์ สิ่งนี้ส่งผลให้โมเดลใหม่ที่มีน้ำหนักแตกต่างกันเพื่อเลียนแบบพฤติกรรมของโมเดลดั้งเดิม
ในสถาปัตยกรรม SV2TTS การฝังลำโพงจะถูกส่งผ่านไปยังชั้นกำเริบของ Tacotron2 decoder สิ่งนี้ส่งผลให้รูปร่างอินพุตที่แตกต่างกันทำให้เมทริกซ์น้ำหนักของเลเยอร์แตกต่างกัน การเรียนรู้การถ่ายโอนบางส่วนช่วยให้โมเดลทำแบบจำลองเพื่อจำลองพฤติกรรมของโมเดล Tacotron2 ลำโพงเดี่ยวดั้งเดิม!
ผู้ติดต่อ:
[email protected]เป้าหมายของโครงการเหล่านี้คือการสนับสนุนและการศึกษาขั้นสูงและการวิจัยในเทคโนโลยีการเรียนรู้อย่างลึกซึ้ง เพื่ออำนวยความสะดวกในเรื่องนี้รหัสที่เกี่ยวข้องทั้งหมดจะมีให้ภายใต้ใบอนุญาตสาธารณะ GNU Affero ทั่วไป (AGPL) V3 ซึ่งเสริมด้วยประโยคที่ห้ามการใช้งานเชิงพาณิชย์ (cf ไฟล์ใบอนุญาต)
โครงการเหล่านี้ได้รับการปล่อยตัวเป็น "ซอฟต์แวร์ฟรี" ช่วยให้คุณสามารถใช้งานแก้ไขปรับใช้และแบ่งปันซอฟต์แวร์ได้อย่างอิสระหากคุณปฏิบัติตามข้อกำหนดของใบอนุญาต ในขณะที่ซอฟต์แวร์มีให้บริการอย่างอิสระ แต่ก็ไม่ใช่โดเมนสาธารณะและยังคงป้องกันลิขสิทธิ์ เงื่อนไขใบอนุญาตได้รับการออกแบบมาเพื่อให้แน่ใจว่าผู้ใช้ทุกคนสามารถใช้และแก้ไขรหัสเวอร์ชันใด ๆ สำหรับโครงการการศึกษาและการวิจัยของตนเอง
หากคุณต้องการใช้โครงการนี้ในความพยายามเชิงพาณิชย์ที่เป็นกรรมสิทธิ์คุณต้องได้รับใบอนุญาตแยกต่างหาก สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับกระบวนการนี้โปรดติดต่อฉันโดยตรง
สำหรับการป้องกันของฉันเป็นสิ่งสำคัญที่จะต้องทราบว่าโครงการทั้งหมดมีอยู่บนพื้นฐาน "ตามสภาพ" โดยไม่มีการรับประกันหรือเงื่อนไขใด ๆ ไม่ว่าจะชัดเจนหรือโดยนัย อย่างไรก็ตามอย่าลังเลที่จะรายงานปัญหาเกี่ยวกับโครงการที่เก็บหรือทำการร้องขอดึงเพื่อแก้ปัญหา?
หากคุณพบว่าโครงการนี้มีประโยชน์ในงานของคุณโปรดเพิ่มการอ้างอิงนี้เพื่อให้มองเห็นได้มากขึ้น! -
@misc{yui-mhcp
author = {yui},
title = {A Deep Learning projects centralization},
year = {2021},
publisher = {GitHub},
howpublished = {url{https://github.com/yui-mhcp}}
}
รหัสสำหรับโครงการนี้เป็นส่วนผสมของโครงการ GitHub หลายโครงการเพื่อให้มีการใช้งาน Tacotron-2 ที่ปรับเปลี่ยนได้อย่างสมบูรณ์
dynamic decoder ซึ่งตอนนี้ได้รับการปรับให้เหมาะสมและได้รับการปรับปรุงให้เข้ากันได้กับ Keras 3SV2TTS ที่ได้รับแรงบันดาลใจจากที่เก็บนี้มีความแตกต่างและการเพิ่มประสิทธิภาพเล็กน้อยเอกสาร: