โมเดลคำพูดเชิงสร้างสรรค์สำหรับบทสนทนารายวัน
อังกฤษ |简体中文|日本語| รัสสกี้ | ภาษาสเปน | ฝรั่งเศส | เกาหลี
บันทึก
Repo นี้มีโครงสร้างพื้นฐานของอัลกอริทึมและตัวอย่างง่ายๆ
เคล็ดลับ
สำหรับผลิตภัณฑ์สำหรับผู้ใช้ปลายทางแบบขยาย โปรดดูที่ดัชนี repo Awesome-ChatTTS ที่ดูแลโดยชุมชน
ChatTTS เป็นรูปแบบการอ่านออกเสียงข้อความที่ออกแบบมาโดยเฉพาะสำหรับสถานการณ์การสนทนา เช่น ผู้ช่วย LLM
ภาษาอังกฤษ
ชาวจีน
เร็วๆ นี้...
คุณสามารถอ้างถึง วิดีโอนี้บน Bilibili สำหรับคำอธิบายโดยละเอียด
TTS การสนทนา : ChatTTS ได้รับการปรับให้เหมาะสมสำหรับงานตามบทสนทนา ทำให้สามารถสังเคราะห์คำพูดที่เป็นธรรมชาติและแสดงออกได้ รองรับลำโพงหลายตัว อำนวยความสะดวกในการสนทนาแบบโต้ตอบ
การควบคุมแบบละเอียด : แบบจำลองสามารถทำนายและควบคุมคุณสมบัติฉันทลักษณ์แบบละเอียด รวมถึงเสียงหัวเราะ การหยุดชั่วคราว และคำอุทาน
ฉันทลักษณ์ที่ดีกว่า : ChatTTS เหนือกว่าโมเดล TTS โอเพ่นซอร์สส่วนใหญ่ในแง่ของฉันทลักษณ์ เราจัดเตรียมแบบจำลองที่ได้รับการฝึกอบรมไว้ล่วงหน้าเพื่อสนับสนุนการวิจัยและพัฒนาเพิ่มเติม
สำคัญ
โมเดลที่เผยแพร่มีวัตถุประสงค์เพื่อการศึกษาเท่านั้น
โมเดลหลักได้รับการฝึกฝนด้วยข้อมูลเสียงภาษาจีนและอังกฤษมากกว่า 100,000 ชั่วโมง
เวอร์ชันโอเพ่นซอร์สบน HuggingFace เป็นโมเดลที่ผ่านการฝึกอบรมล่วงหน้า 40,000 ชั่วโมง โดยไม่มี SFT
โอเพ่นซอร์สโมเดลฐาน 40,000 ชั่วโมงและไฟล์ spk_stats
การสตรีมการสร้างเสียง
ตัวเข้ารหัส DVAE แบบโอเพ่นซอร์สและโค้ดที่อนุมานเป็นศูนย์
การควบคุมหลายอารมณ์
ChatTTS.cpp (ยินดีต้อนรับ repo ใหม่ใน 2noise
org)
รหัสนี้เผยแพร่ภายใต้ใบอนุญาต AGPLv3+
โมเดลนี้เผยแพร่ภายใต้ใบอนุญาต CC BY-NC 4.0
มีจุดมุ่งหมายเพื่อใช้ในการศึกษาและการวิจัย และไม่ควรใช้เพื่อวัตถุประสงค์ทางการค้าหรือผิดกฎหมาย ผู้เขียนไม่รับประกันความถูกต้อง ความครบถ้วน หรือความน่าเชื่อถือของข้อมูล ข้อมูลและข้อมูลที่ใช้ใน repo นี้มีวัตถุประสงค์เพื่อการศึกษาและการวิจัยเท่านั้น ข้อมูลที่ได้รับจากแหล่งที่เปิดเผยต่อสาธารณะ และผู้แต่งไม่ได้อ้างสิทธิ์ความเป็นเจ้าของหรือลิขสิทธิ์ใดๆ เหนือข้อมูล
ChatTTS เป็นระบบอ่านออกเสียงข้อความที่มีประสิทธิภาพ อย่างไรก็ตาม การใช้เทคโนโลยีนี้อย่างมีความรับผิดชอบและมีจริยธรรมเป็นสิ่งสำคัญมาก เพื่อจำกัดการใช้ ChatTTS เราได้เพิ่มเสียงรบกวนความถี่สูงจำนวนเล็กน้อยระหว่างการฝึกโมเดล 40,000 ชั่วโมง และบีบอัดคุณภาพเสียงให้มากที่สุดเท่าที่จะเป็นไปได้โดยใช้รูปแบบ MP3 เพื่อป้องกันไม่ให้ผู้ประสงค์ร้ายนำไปใช้ในทางอาญา วัตถุประสงค์ ในเวลาเดียวกัน เราได้ฝึกอบรมโมเดลการตรวจจับภายในและวางแผนที่จะเปิดแหล่งที่มาในอนาคต
ยินดีรับฟังปัญหา/PR ของ GitHub เสมอ
หากมีข้อสงสัยอย่างเป็นทางการเกี่ยวกับโมเดลและแผนงาน โปรดติดต่อเราที่ [email protected]
กลุ่มที่ 1 , 808364215
กลุ่มที่ 2 , 230696694
กลุ่มที่ 3 , 933639842
กลุ่มที่ 4 , 608667975
เข้าร่วมโดยคลิกที่นี่
โคลนคอมไพล์ https://github.com/2noise/ChatTTScd ChatTTS
pip ติดตั้ง --upgrade -r needs.txt
conda create -n chattts python=3.11 conda เปิดใช้งานแชท pip ติดตั้ง -r ข้อกำหนด.txt
pip ติดตั้งตัวป้องกัน vllm==0.2.7 torchaudio
คำเตือน
อย่าติดตั้ง! การปรับตัวของ TransformerEngine อยู่ระหว่างการพัฒนา และไม่สามารถทำงานได้อย่างถูกต้องในขณะนี้ ติดตั้งเพื่อวัตถุประสงค์ในการพัฒนาเท่านั้น ดูรายละเอียดเพิ่มเติมได้ที่ #672 #676
บันทึก
กระบวนการติดตั้งช้ามาก
pip ติดตั้ง git+https://github.com/NVIDIA/TransformerEngine.git@stable
คำเตือน
อย่าติดตั้ง! ขณะนี้ FlashAttention-2 จะชะลอความเร็วในการสร้างตามปัญหานี้ ติดตั้งเพื่อวัตถุประสงค์ในการพัฒนาเท่านั้น
บันทึก
ดูอุปกรณ์ที่รองรับได้ที่ Hugging Face Doc
pip ติดตั้ง flash-attn --no-build-isolation
ตรวจสอบให้แน่ใจว่าคุณอยู่ภายใต้ไดเร็กทอรีรากของโปรเจ็กต์เมื่อคุณดำเนินการคำสั่งเหล่านี้ด้านล่าง
ตัวอย่างหลาม/web/webui.py
มันจะบันทึกเสียงเป็น
./output_audio_n.mp3
python examples/cmd/run.py "ข้อความของคุณ 1" “ข้อความของคุณ 2”
ติดตั้งเวอร์ชันเสถียรจาก PyPI
pip ติดตั้ง ChatTTS
ติดตั้งเวอร์ชันล่าสุดจาก GitHub
pip ติดตั้ง git+https://github.com/2noise/ChatTTS
ติดตั้งจากไดเร็กทอรีท้องถิ่นในโหมด dev
pip ติดตั้ง -e
import ChatTTSimport torchimport torchaudiochat = ChatTTS.Chat()chat.load(compile=False) # ตั้งเป็น True เพื่อประสิทธิภาพที่ดีขึ้น texts = ["PUT YOUR 1st TEXT HERE", "PUT YOUR 2nd TEXT HERE"]wavs = chat.infer(texts) )for i in range(len(wavs)):""" ในบางเวอร์ชันของ torchaudio บรรทัดแรกใช้งานได้ แต่ในเวอร์ชันอื่นก็เช่นกัน บรรทัดที่สอง """try:torchaudio.save(f"basic_output{i}.wav", torch.from_numpy(wavs[i]).unsqueeze(0), 24000)ยกเว้น:torchaudio.save(f"basic_output{ i}.wav", torch.from_numpy(wavs[i]), 24000)
##################################### ตัวอย่างลำโพงจาก Gaussian.rand_spk = chat.sample_random_speaker()print (rand_spk) # บันทึกไว้เพื่อใช้ในภายหลัง recoveryparams_infer_code = ChatTTS.Chat.InferCodeParams(spk_emb = rand_spk, # เพิ่มอุณหภูมิลำโพงตัวอย่าง = .3, # โดยใช้อุณหภูมิที่กำหนดเองtop_P = 0.7, # decodetop P ด้านบน = 20, # ถอดรหัส K ด้านบน)###################### ############# สำหรับการควบคุมด้วยตนเองระดับประโยค # ใช้ oral_(0-9), laugh_(0-2), break_(0-7) # เพื่อสร้างโทเค็นพิเศษในข้อความถึง synthesize.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_6]', )wavs = chat.infer(ข้อความ,params_refine_text=params_refine_text,params_infer_code=params_infer_code, )#################################### สำหรับการควบคุมแบบแมนนวลระดับคำ = ' [uv_break คืออะไร] ]อาหารอังกฤษที่คุณชื่นชอบ?[หัวเราะ][lbreak]'wavs = chat.infer(text, skik_refine_text=True, params_refine_text=params_refine_text, params_infer_code=params_infer_code)"""ใน torchaudio บางเวอร์ชัน บรรทัดแรกใช้งานได้ แต่ในเวอร์ชันอื่น บรรทัดที่สองก็เช่นกัน"""try:torchaudio.save("word_level_output.wav", torch.from_numpy(wavs[0 ]).คลายการบีบอัด(0), 24000)ยกเว้น:torchaudio.save("word_level_output.wav", torch.from_numpy (wavs [0]), 24000)
inputs_en = """chat T T S เป็นรูปแบบข้อความเป็นคำพูดที่ออกแบบมาสำหรับแอปพลิเคชันบทสนทนา [uv_break] รองรับการป้อนข้อมูลภาษาผสม [uv_break] และนำเสนอความสามารถของลำโพงหลายตัวพร้อมการควบคุมองค์ประกอบฉันทลักษณ์อย่างแม่นยำ เช่น [uv_break]เสียงหัวเราะ[uv_break][laugh ], [uv_break]หยุดชั่วคราว, [uv_break]และน้ำเสียง [uv_break]ให้คำพูดที่เป็นธรรมชาติและแสดงออกได้[uv_break]ดังนั้นโปรด[uv_break] ใช้โปรเจ็กต์นี้ รับผิดชอบความเสี่ยงของคุณเอง[uv_break]""".replace('n', '') # English is still allowanceal.params_refine_text = ChatTTS.Chat.RefineTextParams(prompt='[oral_2][laugh_0][break_4]', )audio_array_en = chat.infer(inputs_en, params_refine_text=params_refine_text)torchaudio.save("self_introduction_output.wav", torch.from_numpy(audio_array_en[0]), 24000)
ผู้พูดชาย | ผู้พูดหญิง |
intro_en_m.webm | intro_en_f.webm |
สำหรับคลิปเสียงความยาว 30 วินาที จำเป็นต้องมีหน่วยความจำ GPU อย่างน้อย 4GB สำหรับ GPU 4090 สามารถสร้างเสียงที่สอดคล้องกับโทเค็นความหมายประมาณ 7 รายการต่อวินาที Real-Time Factor (RTF) อยู่ที่ประมาณ 0.3
นี่เป็นปัญหาที่มักเกิดขึ้นกับโมเดลการถดถอยอัตโนมัติ (สำหรับเปลือกไม้และหุบเขา) โดยทั่วไปแล้วเป็นการยากที่จะหลีกเลี่ยง สามารถลองตัวอย่างหลายๆ ตัวอย่างเพื่อหาผลลัพธ์ที่เหมาะสม
ในรุ่นที่วางจำหน่ายในปัจจุบัน หน่วยควบคุมระดับโทเค็นเพียงหน่วยเดียวคือ [laugh]
, [uv_break]
และ [lbreak]
ในเวอร์ชันต่อๆ ไป เราอาจใช้โมเดลโอเพ่นซอร์สที่มีความสามารถในการควบคุมอารมณ์เพิ่มเติม
bark, XTTSv2 และ valle แสดงให้เห็นถึงผลลัพธ์ TTS ที่น่าทึ่งโดยระบบแบบ autoregressive
คำพูดของปลาเผยให้เห็นความสามารถของ GVQ ในฐานะโทเค็นเสียงสำหรับการสร้างแบบจำลอง LLM
vocos ซึ่งใช้เป็น vocoder ที่ผ่านการฝึกอบรมมาแล้ว
ห้องปฏิบัติการ wlu-audio สำหรับการทดลองอัลกอริทึมเบื้องต้น