Tortoise เป็นโปรแกรมข้อความเป็นคำพูดที่สร้างขึ้นพร้อมลำดับความสำคัญต่อไปนี้:
repo นี้มีรหัสทั้งหมดที่จำเป็นในการเรียกใช้ Tortoise TTS ในโหมดการอนุมาน
Colab เป็นวิธีที่ง่ายที่สุดในการลองทำสิ่งนี้ ฉันได้รวบรวมสมุดบันทึกที่คุณสามารถใช้ได้ที่นี่: https://colab.research.google.com/drive/1wvvqqqwidbuvewwounglpghu3hg_cbr?usp=sharing
หากคุณต้องการใช้สิ่งนี้ในคอมพิวเตอร์ของคุณเองคุณต้องมี Nvidia GPU
ขั้นแรกให้ติดตั้ง pytorch โดยใช้คำแนะนำเหล่านี้: https://pytorch.org/get-started/locally/ บน Windows ฉัน ขอ แนะนำให้ใช้เส้นทางการติดตั้ง Conda ฉันได้รับแจ้งว่าถ้าคุณไม่ทำเช่นนี้คุณจะใช้เวลาในการไล่ล่าปัญหาการพึ่งพา
ถัดไปติดตั้งเต่าและการพึ่งพา:
git clone https://github.com/neonbjb/tortoise-tts.git
cd tortoise-tts
python setup.py install หากคุณอยู่บน Windows คุณจะต้องติดตั้ง pysoundfile: conda install -c conda-forge pysoundfile
สคริปต์นี้ช่วยให้คุณสามารถพูดวลีเดียวด้วยเสียงหนึ่งเสียงขึ้นไป
python tortoise/do_tts.py --text " I'm going to speak this " --voice random --preset fastสคริปต์นี้มีเครื่องมือสำหรับการอ่านข้อความจำนวนมาก
python tortoise/read.py --textfile < your text to be read > --voice randomสิ่งนี้จะทำให้ข้อความไฟล์เป็นประโยคแล้วแปลงเป็นคำพูดทีละครั้ง มันจะส่งออกชุดคลิปพูดตามที่สร้างขึ้น เมื่อคลิปทั้งหมดถูกสร้างขึ้นมันจะรวมเข้ากับไฟล์เดียวและเอาต์พุตที่เช่นกัน
บางครั้งเต่าสกรูเอาต์พุต คุณสามารถสร้างคลิปที่ไม่ดีได้อีกครั้งโดย read.py ซ้ำ py ด้วยการโต้แย้ง-Regenerate
เต่าสามารถใช้งานเป็นโปรแกรมได้เช่น:
reference_clips = [ utils . audio . load_audio ( p , 22050 ) for p in clips_paths ]
tts = api . TextToSpeech ()
pcm_audio = tts . tts_with_preset ( "your text here" , voice_samples = reference_clips , preset = 'fast' )เต่าได้รับการฝึกฝนโดยเฉพาะให้เป็นแบบจำลองหลายลำโพง มันทำสิ่งนี้ให้สำเร็จโดยการให้คำปรึกษาคลิปอ้างอิง
คลิปอ้างอิงเหล่านี้คือการบันทึกของผู้พูดที่คุณให้เพื่อเป็นแนวทางในการสร้างคำพูด คลิปเหล่านี้ใช้เพื่อกำหนดคุณสมบัติมากมายของเอาท์พุทเช่นระดับเสียงและเสียงของเสียงความเร็วในการพูดและแม้แต่การพูดข้อบกพร่องเช่นเสียงกระเพื่อมหรือการพูดติดอ่าง คลิปอ้างอิงยังใช้เพื่อกำหนดแง่มุมที่ไม่เกี่ยวข้องกับเสียงของเอาต์พุตเสียงเช่นระดับเสียงรบกวนพื้นหลังคุณภาพการบันทึกและเสียงสะท้อน
ฉันได้รวมคุณสมบัติที่สร้างเสียงแบบสุ่ม เสียงเหล่านี้ไม่มีอยู่จริงและจะสุ่มทุกครั้งที่คุณเรียกใช้ ผลลัพธ์ค่อนข้างน่าสนใจและฉันขอแนะนำให้คุณเล่นกับมัน!
คุณสามารถใช้เสียงสุ่มโดยส่งผ่าน 'สุ่ม' เป็นชื่อเสียง เต่าจะดูแลส่วนที่เหลือ
สำหรับผู้ที่อยู่ในพื้นที่ ML: สิ่งนี้ถูกสร้างขึ้นโดยการฉายเวกเตอร์แบบสุ่มลงบนพื้นที่แฝงเครื่องปรับอากาศ
repo นี้มาพร้อมกับเสียงที่บรรจุไว้ล่วงหน้าหลายครั้ง เสียงที่เติมเต็มด้วย "Train_" มาจากชุดการฝึกอบรมและทำงานได้ดีกว่าคนอื่น ๆ หากเป้าหมายของคุณคือการพูดที่มีคุณภาพสูงฉันขอแนะนำให้คุณเลือกหนึ่งในนั้น หากคุณต้องการดูว่าเต่าสามารถทำอะไรได้บ้างสำหรับการเลียนแบบแบบไม่มีการยิงลองดูที่คนอื่น ๆ
ในการเพิ่มเสียงใหม่ลงในเต่าคุณจะต้องทำสิ่งต่อไปนี้:
ดังที่ได้กล่าวมาแล้วคลิปอ้างอิงของคุณมีผลกระทบอย่างลึกซึ้งต่อผลผลิตของเต่า ต่อไปนี้เป็นเคล็ดลับในการเลือกคลิปที่ดี:
เต่าเป็นแบบจำลองตัวถอดรหัสแบบอัตโนมัติรวมกับแบบจำลองการแพร่กระจาย ทั้งสองนี้มีลูกบิดจำนวนมากที่สามารถเปลี่ยนได้ซึ่งฉันได้แยกออกไปเพื่อประโยชน์ในการใช้งาน ฉันทำสิ่งนี้โดยการสร้างคลิปหลายพันคลิปโดยใช้การเรียงลำดับการตั้งค่าที่หลากหลายและใช้ตัวชี้วัดสำหรับความสมจริงและความเข้าใจในการวัดเอฟเฟกต์ของพวกเขา ฉันตั้งค่าเริ่มต้นเป็นการตั้งค่าโดยรวมที่ดีที่สุดที่ฉันสามารถค้นหาได้ สำหรับกรณีการใช้งานที่เฉพาะเจาะจงอาจมีประสิทธิภาพในการเล่นกับการตั้งค่าเหล่านี้ (และเป็นไปได้มากที่ฉันพลาดอะไรไป!)
การตั้งค่าเหล่านี้ไม่สามารถใช้ได้ในสคริปต์ปกติที่บรรจุด้วยเต่า อย่างไรก็ตามมีอยู่ใน API ดู api.tts สำหรับรายการทั้งหมด
บางคนค้นพบว่าเป็นไปได้ที่จะทำวิศวกรรมที่รวดเร็วด้วยเต่า! ตัวอย่างเช่นคุณสามารถทำให้เกิดอารมณ์โดยรวมถึงสิ่งต่าง ๆ เช่น "ฉันเศร้าจริงๆ" ก่อนข้อความของคุณ ฉันได้สร้างระบบ Redaction อัตโนมัติที่คุณสามารถใช้เพื่อใช้ประโยชน์จากสิ่งนี้ มันทำงานได้โดยพยายามที่จะ redact ข้อความใด ๆ ในพรอมต์ที่ล้อมรอบด้วยวงเล็บ ตัวอย่างเช่นพรอมต์ "[ฉันเศร้าจริงๆ] โปรดให้อาหารฉัน" จะพูดคำว่า "โปรดให้อาหารฉัน" เท่านั้น (ด้วยโทนเสียงเศร้า)
Tortoise Ingests คลิปอ้างอิงโดยการให้อาหารพวกเขาผ่านเป็นรายบุคคลผ่าน submodel ขนาดเล็กที่สร้างจุดแฝงของจุดจากนั้นใช้ค่าเฉลี่ยของแฝงที่ผลิตทั้งหมด การทดลองที่ฉันทำได้ระบุว่าจุดแฝงเหล่านี้ค่อนข้างแสดงออกส่งผลกระทบต่อทุกสิ่งตั้งแต่น้ำเสียงจนถึงอัตราการพูดไปจนถึงความผิดปกติของการพูด
สิ่งนี้ให้กลอุบายที่เรียบร้อย ตัวอย่างเช่นคุณสามารถรวมฟีดสองเสียงที่แตกต่างกันเข้ากับเต่าและมันจะส่งออกสิ่งที่คิดว่า "เฉลี่ย" ของเสียงทั้งสองนั้นดูเหมือน
ใช้สคริปต์ get_conditioning_latents.py เพื่อแยกแฝงปรับอากาศสำหรับเสียงที่คุณติดตั้ง สคริปต์นี้จะทิ้งแฝงไปยังไฟล์. pickle. ไฟล์จะมี tuple เดียว (autoregressive_latent, diffusion_latent)
หรือใช้ api.texttospeech.get_conditioning_latents () เพื่อดึงแฝง
หลังจากที่คุณเล่นกับพวกเขาคุณสามารถใช้พวกเขาเพื่อสร้างคำพูดโดยการสร้างไฟล์ย่อยในเสียง/ ด้วยไฟล์ ".pth" เดียวที่มีแฝงปรับอากาศดองเป็น tuple (autoregressive_latent, diffusion_latent)
จากความกังวลว่ารุ่นนี้อาจถูกนำไปใช้ในทางที่ผิดฉันได้สร้างตัวจําแนกที่บอกโอกาสที่คลิปเสียงมาจากเต่า
ตัวจําแนกนี้สามารถทำงานบนคอมพิวเตอร์เครื่องใดก็ได้การใช้งานมีดังนี้:
python tortoise/is_this_from_tortoise.py --clip=<path_to_suspicious_audio_file>
รุ่นนี้มีความแม่นยำ 100% ต่อเนื้อหาของผลลัพธ์/ และเสียง/ โฟลเดอร์ใน repo นี้ ยังคงรักษาตัวจําแนกนี้เป็น "สัญญาณที่แข็งแกร่ง" ตัวจําแนกสามารถถูกหลอกได้และมันก็เป็นไปไม่ได้ที่ตัวจําแนกนี้จะแสดงผลบวกที่ผิดพลาด
Tortoise TTS ได้รับแรงบันดาลใจจาก Dalle ของ Openai นำไปใช้กับข้อมูลการพูดและใช้ตัวถอดรหัสที่ดีกว่า ประกอบด้วยโมเดลแยกต่างหาก 5 รุ่นที่ทำงานร่วมกัน: https://nonint.com/2022/04/25/tortoise-architectural-design-doc/