Pitchtron

- ชุดเครื่องมือการถ่ายโอนฉันทลักษณ์ซึ่งคุณสามารถสร้างสุนทรพจน์ที่มีสไตล์แม้ว่า DB การฝึกอบรมของคุณจะเป็นเสียงที่เป็นกลางจากคนทั่วไป
- เราสามารถถ่ายโอนภาษาเกาหลี (Kyongsang, Cheolla) และ Prosodies อารมณ์รวมถึงบทสนทนาที่เป็นกลาง
- Hard Pitchtron มีไว้สำหรับการถ่ายโอนฉันทลักษณ์อย่างเคร่งครัดดังนั้นโครงสร้างประโยคของเสียงอ้างอิงและประโยคเป้าหมายที่ดีกว่า
- Soft Pitchtron แสวงหาการถ่ายโอนที่ให้บริการตามธรรมชาติแม้กระทั่งเสียงอ้างอิงและประโยคเป้าหมายนั้นแตกต่างกันโดยสิ้นเชิงในเนื้อหา
- ฐานข้อมูลที่เราเปิดตัวด้วยโครงการนี้มีให้ที่ Emotion_TTS
- ตัวอย่างเสียง มีอยู่ที่ http://jsh-tts.tistory.com/entry/pitchtron
- Pitchtron Paper: https://arxiv.org/abs/2005.10456
ความแตกต่างของสามสาขา
- ทั้งสามสาขาที่ให้ไว้ที่นี่มีไว้สำหรับ การถ่ายโอนฉันทลักษณ์
- คุณสามารถสร้างคำพูดของสไตล์ที่ต้องการประโยคและเสียง
- ผู้บรรยายเสียงอ้างอิงสามารถเป็นใครก็ได้และบุคคลนั้นไม่จำเป็นต้องรวมอยู่ในข้อมูลการฝึกอบรม
- ลำโพงเป้าหมาย (เสียงของเสียงสังเคราะห์) จะต้องรวมอยู่ในข้อมูลการฝึกอบรม
- ด้วยการใช้ Pitchtorn ที่แข็งและอ่อนนุ่มคุณสามารถสังเคราะห์ในภาษา 'Kyongsang' ภาษา 'Cheolla' และสไตล์อารมณ์แม้ว่าโมเดลจะได้รับการฝึกฝนด้วยคำพูดธรรมดา ๆ
- ในทางกลับกันสำหรับโทเค็นสไตล์ระดับโลกคุณต้องใช้สไตล์ที่ต้องการในระหว่างการฝึกซ้อม
- ฉันเสนอ pitchtron นี้เพื่อพูดในภาษาเกาหลี Kyongsang ANC Cheolla
- DB ของภาษาเหล่านี้มี จำกัด มากและ 'Pitch Contour' เป็นกุญแจสำคัญในการอ้างอิงตามธรรมชาติ นี่เป็นความจริงของภาษาที่เน้นเสียงอื่น ๆ อีกมากมาย (ญี่ปุ่น), วรรณยุกต์ Langauge (ภาษาจีน) และสไตล์การพูดทางอารมณ์
| ความละเอียดชั่วคราว | การควบคุมเชิงเส้น | การปรับช่วงเสียง | การอ้างอิงที่ไม่ใช่แบบขนาน | การสนับสนุนสไตล์ที่มองไม่เห็น | ข้อกำหนดการวิเคราะห์มิติ |
|---|
| GST | x | x | x | โอ | x | โอ |
| Pitchtron นุ่ม | โอ | - | โอ | โอ | โอ | x |
| สนามสูง | โอ | โอ | โอ | - | โอ | x |
- *: Soft Pitchtron จะช่วยให้คุณควบคุมระดับเสียงได้ตราบเท่าที่มันฟังดูเป็นธรรมชาติ หากมันอยู่นอกช่วงของลำโพงเป้าหมายมันจะถูกตัดให้ทำเสียงที่เป็นธรรมชาติ
- **: Hard Pitchtron อนุญาตให้มีการอ้างอิงแบบไม่ขนาน จำกัด
- จำกัด ไม่ขนาน: ข้อความอาจแตกต่างกัน แต่โครงสร้างของประโยคจะต้องตรงกัน
| ประโยค |
|---|
| อ้างอิง | "아니요그짝허고이야기허고싶지않아요" |
| เป้า | "그래요친구허고나들이가고싶은것같아요" |
- ความละเอียดชั่วคราว: เราสามารถควบคุมสไตล์ที่แตกต่างกันได้หรือไม่?
- การควบคุมเชิงเส้น: ฉันสามารถควบคุมจำนวนสนาม (หมายเหตุ) ที่จะปรับขนาดได้หรือไม่? ฉันไม่จำเป็นต้องสำรวจพื้นที่ฝังตัวเพื่อหาการเปลี่ยนแปลงสเกลในมิติการฝังเมื่ออินพุตเปลี่ยนไป?
- การปรับช่วงแกนนำ: หากช่วงเสียงของลำโพงอ้างอิงและลำโพงเป้าหมายแตกต่างกันอย่างมากฉันสามารถอ้างอิงตามธรรมชาติในช่วงเสียงร้องของลำโพงเป้าหมายได้หรือไม่?
- การอ้างอิงที่ไม่ใช่แบบขนาน: หากประโยคอ้างอิงและประโยคเป้าหมายแตกต่างกันฉันสามารถสังเคราะห์ได้หรือไม่?
- การสนับสนุนสไตล์ที่มองไม่เห็น: หากเสียงอ้างอิงที่ต้องการเป็นสไตล์ที่ไม่เคยเห็นในระหว่างการฝึกอบรมจะสามารถถ่ายโอนได้ตามธรรมชาติหรือไม่?
- ข้อกำหนดการวิเคราะห์มิติ: ฉันต้องวิเคราะห์การควบคุมโทเค็น/มิติใดที่แอตทริบิวต์ใดที่จะควบคุมโมเดลนี้ได้หรือไม่?
1. Soft Pitchtron
- สาขานี้ให้การถ่ายโอนฉันทลักษณ์แบบขนานของประโยคที่ไม่ขนานและไม่ขนาน จำกัด
- ขนาน: การอ้างอิงประโยคเสียงและการจับคู่ประโยคการสังเคราะห์เป้าหมาย
- จำกัด ไม่ขนาน: ดังกล่าวข้างต้น
- ไม่ขนาน: ประโยคเสียงอ้างอิงและประโยคการสังเคราะห์เป้าหมายไม่จำเป็นต้องตรงกัน
- คล้ายกับโทเค็นสไตล์โลก แต่มีข้อดีหลายประการ
- มันแข็งแกร่งกว่าสำหรับสไตล์ที่มองไม่เห็นในระหว่างการฝึกอบรม
- ควบคุมได้ง่ายกว่ามาก
- คุณไม่จำเป็นต้องวิเคราะห์โทเค็นหรือมิติเพื่อดูว่าแต่ละโทเค็นทำอะไร
- คุณสามารถปรับขนาดช่วงเสียงอ้างอิงให้พอดีกับลำโพงเป้าหมายเพื่อให้การถ่ายโอนระหว่างเพศเป็นธรรมชาติมากขึ้น
- นอกจากนี้คุณยังสามารถควบคุมระดับเสียงสำหรับทุกฟอนิมอินพุต
- ช่วงเสียงของเสียงอ้างอิงจะถูกปรับขนาดให้พอดีกับลำโพงเป้าหมายเพื่อให้การถ่ายโอนระหว่างเพศเป็นธรรมชาติมากขึ้น
- การควบคุมระดับเสียงของคุณนั้นไม่เข้มงวดมากนักที่จะปรับขนาดเป็นปริมาณที่ฟังดูเป็นธรรมชาติเท่านั้น
2. Hard Pitchtron
- สาขานี้ให้การถ่ายโอนฉันทลักษณ์แบบขนานแบบขนานและ 'จำกัด ไม่ขนาน'
- แต่จังหวะและระดับเสียงนั้นเหมือนกับเสียงอ้างอิง
- ช่วงเสียงของเสียงอ้างอิงจะถูกปรับขนาดให้พอดีกับลำโพงเป้าหมายเพื่อให้การถ่ายโอนระหว่างเพศเป็นธรรมชาติมากขึ้น
- คุณมีการควบคุมอย่างเข้มงวดในช่วงระยะพิทช์จนถึงจำนวนที่จะขยายแม้ว่าจะส่งผลให้เกิดเสียงที่ผิดธรรมชาติ
3. โทเค็นสไตล์ระดับโลก
- การใช้โทเค็นสไตล์ระดับโลก โทเค็นสไตล์ระดับโลก
- ซึ่งแตกต่างจาก Pitchtron, Token สไตล์ระดับโลกมีแนวโน้มที่จะทำงานได้ดีสำหรับสไตล์ที่เห็นในระหว่างขั้นตอนการฝึกอบรม
- ช่วงพิทช์ไม่สามารถปรับขนาดได้ส่งผลให้เสียงดังถ้าเสียงอ้างอิงอยู่นอกช่วงเสียงของลำโพงเป้าหมาย
- เนื่องจากมันไม่แข็งแกร่งสำหรับรูปแบบใหม่ที่มองไม่เห็นในระหว่างการฝึกอบรมบางครั้งมันสร้างคำพูดด้วยพลังงานที่ดังเกินไปหรือหยุดชั่วคราวนานเกินไป
ขั้นตอนการประมวลผลล่วงหน้าเพื่อเรียกใช้สำหรับ TTS เกาหลีหลายลำโพง
python preprocess.py --dataset={following keywords}
เรียกใช้ตามลำดับต่อไปนี้ คุณสามารถยกเลิกบางส่วนขึ้นอยู่กับความต้องการของคุณ
- selvas_multispeaker_pron
- public_korean_pron
- integrate_dataset
- check_file_integrity
- generate_mel_f0
1. selvas_multispeaker_pron
- PCM ดิบถึง WAV_22050 ภายใต้ลำโพงแต่ละตัว
- src: '{data_root}/{ลำโพง}/raw/*. pcm'
- dst: '{data_root}/{ลำโพง}/wav_22050/*. wav'
- ตัดแต่งด้วย 25 ฐานข้อมูลยอดนิยม
- การแยกข้อมูล: สำหรับทุก ๆ 400 เสียงให้ประเมิน & เหมือนกันสำหรับการทดสอบ
- รถไฟ: 33194 WAVS
- eval: 83 wavs
- ทดสอบ: 84 wavs
- สร้างไฟล์ meta ด้วยสคริปต์ที่อยู่ใน phoneme *filelists/single_language_selvas/train_file_list_pron.txt
2. public_korean_pron
- ดาวน์โหลดได้ที่ไหน: 서울말발화말뭉치말뭉치
- อัตราการสุ่มตัวอย่างเป็นปกติถึง 22050 Hz (db นี้มี SR ผิดปกติ)
- ตัดแต่งด้วย 25 เดซิเบล
- แหล่งที่มา:
- wav_16000/{ลำโพง}/*. wav
- pron/{ลำโพง}/t **. txt
- แยกออกจากสคริปต์:
- ไม่รวมสคริปต์สำหรับการคลายซิปและย้าย WAVS ไปยัง WAV_16000 คุณต้องทำในรูปแบบนี้ด้วยตัวคุณเอง
- ไฟล์ข้อความสำหรับลำโพงทั้งหมดมีค่าเท่ากันในฐานข้อมูลนี้ดังนั้นฉันจึงแบ่งสคริปต์ที่ใช้ร่วมกันนี้ด้วยวรรณกรรมด้วยตนเอง (รวมถึงข้อผิดพลาดใหม่ที่ขาดหายไปดังนั้นฉันต้องทำด้วยตนเอง)
- นอกจากนี้ยังไม่รวมสคริปต์สำหรับ G2P
- ข้อผิดพลาดเพิ่มเติมในฐานข้อมูลนี้คือ
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- DST: WAV_22050/{ลำโพง}/*. WAV
3. integrate_dataset
- ฉันรวมกันเหนือสอง DBS เกาหลี
- สิ่งนี้สามารถนำไปใช้กับ TTs หลายภาษาที่มีหลายภาษาของภาษาที่แตกต่างกัน
- ดังนั้นรหัสภาษาที่มีความสัมพันธ์กับแต่ละ dB จะถูกผนวกเข้ากับไฟล์ข้อความเมตารวมที่สร้างขึ้นในขั้นตอนนี้
- วิธี
- แก้ไขรายการไฟล์ต้นฉบับ ('train_file_lists', 'eval_file_lists', 'test_file_lists') และรายการไฟล์เป้าหมาย (target_train_file_list, target_eval_file_list, target_test_file_list) จาก preprocess.
- คุณอาจต้องการแก้ไขเมธอด _integrate () เพื่อกำหนด รหัสภาษา สำหรับแต่ละเดซิเบล ขออภัยตอนนี้มีการเข้ารหัสยาก
- เรียกใช้ preprocess.py
python preprocess.py --dataset=integrate_dataset
4. check_file_integrity
- ขั้นตอนนี้สร้างไฟล์เมตาด้วยเส้นทาง WAV ที่ไม่สามารถอ่านได้
- คุณอาจต้องการลบพวกเขาออกจากผู้เขียนรายการสุดท้ายของคุณหรือผ่านการสอบสวน อยู่กับคุณ ขั้นตอนนี้ไม่ได้ลบไฟล์ที่ตรวจพบเหล่านี้ออกจาก FileLists
- OUT: ปัญหา _merge_korean_pron _ {}. txt
5. generate_mel_f0 (ไม่บังคับ)
- ขั้นตอนนี้เป็นทางเลือก ขั้นตอนนี้แยกคุณสมบัติสำหรับการฝึกอบรมและบันทึกเป็นไฟล์
- SRC: WAV_22050/*. WAV
- DST: mel/*. pt และ f0/*. pt
6. เริ่มต้นยุคแรก ๆ ด้วย DB ลำโพงเดี่ยว
- เตรียมรถไฟแยกต่างหากที่ถูกต้องสำหรับผู้พูดคนเดียว
- ไฟล์สำหรับการฝึกอบรมลำโพงเดี่ยวและการตรวจสอบยังรวมอยู่ใน filelists multispeaker
- ฉันทดลองการฝึกอบรมครั้งแรก 30 ครั้งด้วย DB ลำโพงเดี่ยวและช่วยเรียนรู้การจัดตำแหน่งเครื่องเข้ารหัสแบบ decoder เป็นจำนวนมาก
วิธีการฝึกอบรม?
1. คำสั่ง
python train.py {program arguments}
2. อาร์กิวเมนต์ของโปรแกรม
| ตัวเลือก | บังคับ | วัตถุประสงค์ |
|---|
| -o | โอ | เส้นทางไดเรกทอรีเพื่อบันทึกจุดตรวจ |
| -c | x | เส้นทางของจุดตรวจสอบก่อนที่จะโหลด |
| -l | โอ | บันทึกไดเรกทอรีเพื่อวางบันทึกสำหรับ tensorboard |
3. แบบจำลองที่ผ่านการฝึกอบรม
*แบบจำลองที่ผ่านการฝึกอบรมได้รับการฝึกฝนเกี่ยวกับหน่วยเสียง พวกเขาคาดหวังว่าฟอนิมเป็นอินพุตเมื่อคุณให้ข้อความเพื่อสังเคราะห์
| แบบอย่าง | ด่านตรวจสอบก่อน | การจับคู่พารามิเตอร์ hyperparameters |
|---|
| Pitchtron นุ่ม | Pitchtron นุ่ม | กำหนดค่า |
| สนามสูง | สนามสูง | กำหนดค่า |
| โทเค็นสไตล์ระดับโลก | GST | กำหนดค่า |
| นักร้อง | เครื่องเป่านก | - |
วิธีการสังเคราะห์?
1. Soft Pitchtron
python inferent_soft_pitchtron.py
2. Hard Pitchtron
python inference_hard_pitchtron.py
3. GST
python inference_gst_tts.py
เคล็ดลับ
- เพื่อป้องกันไม่ให้เสียงแคร็กช่วงเสียงอ้างอิงเสียงจะต้องถูกปรับขนาดให้เป็นช่วงเสียงร้องของลำโพงเป้าหมาย
- ส่วนนั้นถูกนำไปใช้ในรหัสของเรา แต่ช่วงแกนนำลำโพงเป้าหมายถูกคำนวณอย่างหยาบ ๆ โดยการสุ่มตัวอย่างเพียง 10 เสียงและใช้ Max-Min เป็นความแปรปรวน
- คุณจะได้รับ เสียงที่ดีขึ้นมาก หากคุณใช้ สถิติที่แม่นยำ ยิ่งขึ้นสำหรับช่วงเสียงร้องของลำโพงเป้าหมาย
กิตติกรรมประกาศ
- วัสดุนี้ขึ้นอยู่กับงานที่ได้รับการสนับสนุนจากกระทรวงการค้าอุตสาหกรรมและพลังงาน (Motie, Korea) ภายใต้โครงการนวัตกรรมเทคโนโลยีอุตสาหกรรม (ฉบับที่ 10080667 การพัฒนาเทคโนโลยีการสังเคราะห์การพูดการสนทนาเพื่อแสดงอารมณ์และบุคลิกภาพของหุ่นยนต์ผ่านการกระจายแหล่งที่ดี)
- ฉันได้รับความช่วยเหลือเกี่ยวกับ Grapheme to Phoneme coverion จากผู้ชายที่ยอดเยี่ยมนี้ => Jeongpil_lee
- ที่เก็บนี้เป็นการดำเนินการของผู้เขียนของกระดาษต่อไปนี้ => (pitchtron) https://arxiv.org/abs/2005.10456
- ที่เก็บข้อมูลอ้างอิง
| ผลงาน | url |
|---|
| Tacotron2 | https://github.com/nvidia/tacotron22 |
| หมากแฝด | https://github.com/nvidia/mellotron |
| เครื่องเป่านก | https://github.com/nvidia/waveglow |
| การประมวลผลข้อความเกาหลี | https://github.com/keithito/tacotron |