Fork From: https://github.com/huakunyang/summertts
การแนะนำ
โครงการดั้งเดิมรองรับการออกเสียงภาษาจีนบริสุทธิ์หรือภาษาอังกฤษบริสุทธิ์เท่านั้นดังนั้นรูปแบบจึงถูกผสมที่นี่เพื่อประมวลผลตำราภาษาจีนและภาษาอังกฤษผสม อย่างไรก็ตามเนื่องจากโทนเสียงที่แตกต่างกันของทั้งสองรุ่นเสียงโดยรวมนั้นไม่สอดคล้องกันเล็กน้อย
ไฟล์โมเดลถูกดาวน์โหลดที่ https://github.com/jark006/summertts/releases หรือคุณสามารถดาวน์โหลดได้จากผู้เขียนต้นฉบับ Baidu Network Disk: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq
ขั้นตอน
ใช้ VisualStudio 2022 เพื่อเปิด SummerTTS_VS.sln เพื่อรวบรวมและสร้างไฟล์ที่เรียกใช้งานได้ที่ ./x64/Release/SummerTTS_VS.exe
# 命令行执行
. S ummerTTS_VS.exe textPath CN_modelPath EN_modelPath outputPath
# 例如
. S ummerTTS_VS.exe . t est.txt D: S ummerTTSModels s ingle_speaker_fast.bin D: S ummerTTSModels s ingle_speaker_english_fast.bin out.wav
อื่น
โครงการนี้เหมาะสำหรับ Windows / VisualStudio 2022 มีที่เก็บอื่นสำหรับ Linux, Win(mingw64/ucrt64) ลิงค์: https://github.com/jark006/summertts
Summertts ใช้เพื่อรำลึกถึงการมาถึงและผ่านช่วงฤดูร้อนของปี 2023
อธิบาย
- Summertts เป็นโปรแกรมการสังเคราะห์คำพูดที่รวบรวมได้อย่างอิสระ (TTS) มันสามารถทำงานได้ในพื้นที่โดยไม่จำเป็นต้องใช้เครือข่ายและไม่มีการพึ่งพาเพิ่มเติม การรวบรวมหนึ่งคลิกสามารถใช้สำหรับการสังเคราะห์คำพูดภาษาจีนและภาษาอังกฤษ
- ไลบรารีการคำนวณพื้นฐานของ Summertts ใช้ eigen ซึ่งเป็นชุดของฟังก์ชั่นที่กำหนดแม่แบบ ในกรณีส่วนใหญ่จำเป็นต้องรวมไฟล์ส่วนหัวเท่านั้นดังนั้นโครงการนี้จึงไม่มีการพึ่งพาอื่นและสามารถรวบรวมและทำงานได้อย่างอิสระในสภาพแวดล้อม C ++
- โครงการนี้ใช้ไลบรารีเมทริกซ์ที่จัดทำโดย Eigen เพื่อใช้ผู้ดำเนินการเครือข่ายประสาทและไม่จำเป็นต้องพึ่งพาสภาพแวดล้อมการทำงานของ NN อื่น ๆ เช่น Pytorch, Tensorflow, NCNN ฯลฯ
- โครงการนี้รวบรวมและดำเนินการบน Ubuntu แพลตฟอร์มที่มีลักษณะคล้าย Linux อื่น ๆ เช่น Android, Raspberry Pi ฯลฯ ไม่ควรมีปัญหาสำคัญใด ๆ ยังไม่ได้รับการทดสอบบน Windows และอาจต้องมีการเปลี่ยนแปลงเล็กน้อย
- แบบจำลองของโครงการนี้ขึ้นอยู่กับอัลกอริทึมการสังเคราะห์เสียงพูดและอิงจากวิศวกรรม C ++ จะดำเนินการกับมัน
อัพเดทบันทึก
- 2023-06-16: อัปเดตเพื่อเพิ่มโมเดลการสังเคราะห์เสียงภาษาอังกฤษที่เร็วขึ้น: single_speaker_english_fast.bin หรือบนดิสก์เครือข่ายต่อไปนี้ความเร็วเร็วขึ้นและคุณภาพเสียงสังเคราะห์จะไม่ลดลงอย่างมีนัยสำคัญ:
ลิงค์: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h รหัสการสกัด: 2d5h - 2023-06-15: สนับสนุนการสังเคราะห์การออกเสียงภาษาอังกฤษบริสุทธิ์และคุณต้องซิงโครไนซ์รหัสล่าสุด ใช้ไฟล์โมเดลในดิสก์เครือข่ายต่อไปนี้: single_speaker_english.bin และสังเคราะห์การออกเสียงภาษาอังกฤษด้วยวิธีต่อไปนี้:
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
เส้นทางของดิสก์เครือข่ายมีดังนี้ การสังเคราะห์การออกเสียงภาษาจีนก่อนหน้านี้และการใช้งานจะไม่ได้รับผลกระทบ ควรสังเกตว่าการอัปเดตนี้สนับสนุนการสังเคราะห์การออกเสียงภาษาอังกฤษบริสุทธิ์เท่านั้นและภาษาอังกฤษผสมภาษาจีนไม่สนับสนุนในขณะนี้
ลิงค์: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2vvq?pwd=2d5h รหัสการสกัด: 2d5h - 2023-06-09: มีการเพิ่มโมเดลลำโพงเดี่ยวขนาดกลาง: single_speaker_mid.bin ซึ่งช้ากว่ารุ่นก่อนหน้าเล็กน้อย แต่คุณภาพเสียงสังเคราะห์ดูเหมือนจะดีกว่า (หูของฉันไม่ไวและฉันรู้สึกดีขึ้น รหัสไม่จำเป็นต้องได้รับการอัปเดตเพียงดาวน์โหลด single_speaker_mid.bin ในดิสก์เครือข่ายก่อนหน้าและใช้งาน
- 2023-06-08: แก้ไขการทดสอบ/main.cpp เพื่อสนับสนุนการสังเคราะห์ newLines และข้อความทั้งหมด
- 2023-06-03: การแก้ไขมีข้อผิดพลาดในเวอร์ชันของเมื่อวานนี้ ขอบคุณ Netizen Telen ที่กระตือรือร้นสำหรับการทดสอบและเบาะแส จำเป็นต้องมีการอัปเดตรหัสเท่านั้นและไม่จำเป็นต้องอัปเดตแบบจำลอง
- 2023-06-02: ความแม่นยำของการสังเคราะห์การออกเสียงโพลีโฟนิกได้รับการปรับปรุงอย่างมาก จำเป็นต้องใช้โมเดลใหม่ใน Baidu Netdisk เพื่อใช้การออกเสียงโพลีโฟนิกที่ดีขึ้นและการทำให้เป็นมาตรฐานข้อความ (การทำให้เป็นมาตรฐานข้อความ) รหัสที่อัปเดตในวันนี้ไม่สามารถใช้โมเดลก่อนหน้านี้มิฉะนั้นอาจนำไปสู่ความผิดพลาด
- 2023-05-30: WetextProcessing แบบบูรณาการเป็นโมดูลการทำให้เป็นมาตรฐานข้อความส่วนหน้าปรับปรุงการสังเคราะห์การออกเสียงที่ถูกต้องอย่างมากของตัวเลขสกุลเงินอุณหภูมิวันที่ ฯลฯ คุณต้องได้รับรุ่นใหม่ใน Baidu NetDisk ด้านล่างด้านล่าง
- 2023-5-23: การใช้อัลกอริทึมใหม่ได้ปรับปรุงความเร็วการสังเคราะห์เสียงของลำโพงเดี่ยวอย่างมาก
- 2023-4-21: การสร้างเบื้องต้น
คำแนะนำสำหรับการใช้งาน
การโคลนนิ่งรหัสของโครงการนี้ในพื้นที่โดยเฉพาะอย่างยิ่งสภาพแวดล้อม Ubuntu Linux
ดาวน์โหลดโมเดลจากที่อยู่ดิสก์เครือข่าย Baidu ต่อไปนี้และใส่ไว้ในไดเรกทอรีโมเดลของโครงการนี้: ลิงค์: https://pan.baidu.com/s/1ryhtznoyqh7m8g-xz_2VQ
หลังจากวางไฟล์โมเดลโครงสร้างไดเรกทอรีโมเดลมีดังนี้:
รุ่น/
├── multi_speakers.bin
├ดุ single_speaker_mid.bin
├ดุ single_speaker_english.bin
├ดุ single_speaker_english_fast.bin
└ดุ single_speaker_fast.bin
ป้อนไดเรกทอรีบิลด์และดำเนินการคำสั่งต่อไปนี้:
cmake ..
ทำ
หลังจากการรวบรวมเสร็จสมบูรณ์แล้วผู้ดำเนินการ TTS_TEST จะถูกสร้างขึ้นในไดเรกทอรี Build
เรียกใช้คำสั่งต่อไปนี้เพื่อทดสอบการสังเคราะห์คำพูดภาษาจีน (TTS):
./tts_test ../test.txt ../models/single_speaker_fast.bin out.wav
เรียกใช้คำสั่งต่อไปนี้เพื่อทดสอบการสังเคราะห์คำพูดภาษาอังกฤษ (TTS):
./tts_test ../test_eng.txt ../models/single_speaker_english.bin out_eng.wav
ในบรรทัดคำสั่งนี้:
พารามิเตอร์แรกคือพา ธ ไปยังไฟล์ข้อความซึ่งมีข้อความที่ต้องสังเคราะห์สำหรับการพูด
พารามิเตอร์ที่สองคือเส้นทางไปยังโมเดลดังกล่าว เดี่ยวและหลายจุดเริ่มต้นของชื่อไฟล์ระบุว่าโมเดลมีลำโพงตัวเดียวหรือลำโพงหลายตัว โมเดลลำโพงเดี่ยวที่แนะนำ: single_speaker_fast.bin ความเร็วการสังเคราะห์เร็วขึ้นและคุณภาพเสียงของการสังเคราะห์ก็โอเคเช่นกัน พารามิเตอร์ที่สามคือไฟล์เสียงสังเคราะห์ หลังจากโปรแกรมทำงานแล้วสามารถเปิดได้ด้วยผู้เล่น
โปรแกรมการทดสอบข้างต้นถูกนำไปใช้ใน test/main.cpp และอินเตอร์เฟสสังเคราะห์เฉพาะถูกกำหนดไว้ใน Integal/synthesizertrn.h ดังต่อไปนี้:
int16_t * อนุมาน (สตริง const & line, int32_t sid, float lengthscale, int32_t & datalen)
อินเทอร์เฟซ:
พารามิเตอร์แรกคือสตริงของคำพูดที่จะสังเคราะห์
พารามิเตอร์ที่สองระบุว่า ID ของลำโพงถูกใช้เพื่อสังเคราะห์คำพูด พารามิเตอร์นี้ใช้ได้สำหรับโมเดลหลายลำโพงและแก้ไขเป็น 0 สำหรับโมเดลลำโพงเดี่ยว จำนวนลำโพงสามารถส่งคืนได้โดยอินเตอร์เฟส int32_t getSpeakernum () และ ID ที่ถูกต้องคือ 0 และจำนวนลำโพงที่ส่งกลับไปยังอินเตอร์เฟสจะลดลง 1
พารามิเตอร์ที่สาม LengthScale แสดงถึงความเร็วในการพูดของคำพูดสังเคราะห์และค่าที่ใหญ่กว่านั้นบ่งบอกว่าความเร็วในการพูดช้าลง
ข้อความที่จะสังเคราะห์อาจมีตัวเลขอาหรับและการเว้นวรรค แต่เนื่องจากโมดูล Text Text Regulatization (TN) ของโครงการนี้ยังคงหยาบมากจึงจะถูกละเว้นสำหรับอักขระภาษาอังกฤษ นอกจากนี้เนื่องจากโมดูล Text Regulatization (TN) ยังคงหยาบมากการออกเสียงของอักขระ polyphonic ในบริบทที่แตกต่างกันบางครั้งไม่ถูกต้อง
การพัฒนาติดตามผล
- สคริปต์การฝึกอบรมและการแปลงจะเปิดในภายหลัง
- ในอนาคตเราจะพยายามฝึกอบรมและให้แบบจำลองที่มีคุณภาพเสียงที่ดีขึ้น
ติดต่อผู้เขียน
- หากคุณมีคำถามเพิ่มเติมหรือต้องการคุณสามารถส่งอีเมลไปที่ [email protected] หรือเพิ่ม WeChat: HWANG_2011 ฉันจะพยายามอย่างเต็มที่เพื่อตอบกลับ
ปลื้มปีติ
โครงการนี้ใช้รูปแบบต่อไปนี้ในแง่ของซอร์สโค้ดและอัลกอริทึม ขอบคุณที่นี่ หากปัญหาทางกฎหมายใด ๆ เกิดขึ้นโปรดติดต่อฉันทันเวลาเพื่อประสานงานและแก้ไขปัญหา
- ไอเท็น
- VITS (https://github.com/jaywalnut310/vits)
- vits_chinese (https://github.com/uehqzxi/vits_chinese)
- mb-istft-vits (https://github.com/masayakawamura/mb-istft-vits)
- WetextProcessing (https://github.com/wenet-e2e/wetextprocessing)
- glog (https://github.com/google/glog)
- gflags (https://github.com/gflags/gflags)
- OpenFST (https://github.com/kkm000/openfst)
- ตัวละครจีนถึงพินอิน (https://github.com/yangyangwithgnu/hanz2piny)
- cppjieba (https://github.com/yanyiwu/cppjieba)
- g2p_en (https://github.com/kyubyong/g2p)
- English-to-IPA (https://github.com/mphilli/English-to-Ipa)
- โมเดลลำโพงเดี่ยวของจีนของโครงการนี้ขึ้นอยู่กับการฝึกอบรมชุดข้อมูลโอเพนซอร์ส Biaobei โมเดลหลายลำโพงจะขึ้นอยู่กับการฝึกอบรมชุดข้อมูลโอเพนซอร์ส Aishell3 และโมเดลลำโพงภาษาอังกฤษนั้นใช้ชุดข้อมูลคำพูด LJ