3 คะแนน โดย GN⁺ 2026-01-10 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Sopro TTS คือ โมเดลแปลงข้อความเป็นเสียงพูด ขนาดเบาที่ใช้ภาษาอังกฤษเป็นหลัก รองรับการโคลนเสียงแบบซีโร่ช็อตและการสร้างเสียงแบบสตรีมมิง
  • มี พารามิเตอร์ 169 ล้านตัว และสามารถสร้างเสียงความยาว 30 วินาทีได้ในเวลาประมาณ 7.5 วินาทีที่ความเร็ว 0.25 RTF บน CPU
  • สามารถโคลนเสียงผู้พูดได้ด้วย เสียงอ้างอิงยาวเพียง 3~12 วินาที และใช้สถาปัตยกรรม dilated conv สไตล์ WaveNet และ lightweight cross-attention
  • เป็นโปรเจ็กต์งบต่ำที่ฝึกด้วย GPU L40S เพียงตัวเดียว และยังมีโอกาสเพิ่มประสิทธิภาพได้หากปรับปรุงคุณภาพข้อมูล
  • รองรับทั้ง โหมดสตรีมมิงและไม่สตรีมมิง, CLI, Python API และเว็บเดโม จึงเหมาะกับทั้ง การทดลองและการผสานใช้งานของนักพัฒนา

ภาพรวมของ Sopro TTS

  • Sopro แปลว่า ‘ลมหายใจ’ ในภาษาโปรตุเกส และถูกพัฒนาเป็น โมเดล TTS ภาษาอังกฤษขนาดเบา
    • ใช้โครงสร้างที่ผสาน dilated convolution และ cross-attention แทน Transformer
    • เป็นโปรเจ็กต์ส่วนตัวที่ฝึกด้วย GPU L40S เพียงตัวเดียว
  • คุณสมบัติหลัก
    • 169M พารามิเตอร์, รองรับสตรีมมิง, โคลนเสียงแบบซีโร่ช็อต
    • สร้างเสียง 30 วินาทีได้ใน 7.5 วินาทีที่ 0.25 RTF บน CPU
    • โคลนเสียงได้จาก อ้างอิงเสียงยาว 3~12 วินาที

การติดตั้งและการรัน

  • ระบุเพียงเวอร์ชันขั้นต่ำของ dependency จึงติดตั้งได้โดยไม่ต้องสร้าง environment แยก
    • ตัวอย่าง: torch==2.6.0 ให้ประสิทธิภาพดีขึ้นราว 3 เท่าบน M3 CPU
  • วิธีติดตั้ง
    • PyPI: pip install sopro
    • GitHub repository: git clone แล้วตามด้วย pip install -e .

ตัวอย่างการใช้งาน

  • ตัวอย่างการรันผ่าน CLI
    • ระบุข้อความ, เสียงอ้างอิง และไฟล์เอาต์พุตได้
    • มีพารามิเตอร์ควบคุมละเอียด เช่น --style_strength, --no_stop_head, --stop_threshold, --stop_patience
  • ตัวอย่าง Python API
    • โหลดโมเดลด้วย SoproTTS.from_pretrained("samuel-vitorino/sopro", device="cpu")
    • รองรับทั้งแบบ ไม่สตรีมมิง และ สตรีมมิง
    • ในโหมดสตรีมมิง สามารถนำชังก์เสียงที่สร้างได้มาต่อกันตามลำดับ

เดโมสตรีมมิงแบบอินเทอร์แอ็กทีฟ

  • หลังติดตั้งแล้วสามารถรันเซิร์ฟเวอร์ภายในเครื่องด้วยคำสั่ง uvicorn demo.server:app
  • หรือจะ build และรันด้วย Docker ก็ได้
    • docker build -t sopro-demo .
    • docker run --rm -p 8000:8000 sopro-demo
  • เปิดเบราว์เซอร์ไปที่ http://localhost:8000 เพื่อดูเดโมได้

ข้อควรระวังและข้อจำกัด

  • อาจมีปัญหาเรื่อง ความสม่ำเสมอของเอาต์พุต และอาจต้องปรับพารามิเตอร์
  • คุณภาพการโคลนเสียง ขึ้นอยู่มากกับคุณภาพไมโครโฟนและเสียงรบกวนรอบข้าง
  • เวอร์ชันไม่สตรีมมิงให้คุณภาพเสียงสูงกว่า
  • จำกัดความยาวการสร้างไว้ที่ประมาณ 32 วินาที (400 เฟรม) และหากเกินอาจเกิดเอาต์พุตหลอน
  • การใช้ torchaudio ต้องมี ffmpeg, โดยแนะนำให้ใช้ soundfile
  • ข้อมูลฝึกอยู่ในรูปแบบ pre-tokenized และไฟล์เสียงต้นฉบับถูกลบทิ้งเพราะข้อจำกัดด้านพื้นที่จัดเก็บ
  • มีการกล่าวถึงแผนในอนาคตที่จะ เปิดเผยโค้ดสำหรับการฝึก และขยายการรองรับหลายภาษา

ข้อมูลฝึก

  • ใช้ชุดข้อมูล Emilia YODAS, LibriTTS-R, Mozilla Common Voice 22, MLS

ข้อมูลอ้างอิงและเทคโนโลยีพื้นฐาน

  • อ้างอิงงานวิจัยและโค้ดจาก Mimi Codec (Kyutai), WaveNet, Attentive Stats Pooling, AudioLM, CSM เป็นต้น

1 ความคิดเห็น

 
GN⁺ 2026-01-10
ความคิดเห็นจาก Hacker News
  • เป็นโปรเจ็กต์ที่เจ๋งและมีประโยชน์มาก
    ส่วนตัวคิดว่า Chatterbox-TTS-Server คือทางเลือกที่ดีที่สุด
    ถึงจะช้า แต่คุณภาพเสียงค่อนข้างสูง

    • ฉันชอบ IndexTTS2 มากกว่า
      โมเดลนี้รองรับการโคลนเสียงและการควบคุมอารมณ์แบบแมนนวลผ่านเวกเตอร์อารมณ์ จึงรู้สึกว่าเป็นเครื่องมือที่ทรงพลังมาก
      มันมีประโยชน์มากในโปรเจ็กต์ orchestration ของโมเดลที่กำลังทำอยู่ตอนนี้
      โมเดลจำแนกอารมณ์ภายนอกควบคุมทั้ง persona ของ LLM และเอาต์พุตของ TTS พร้อมกันเพื่อรักษาความสม่ำเสมอ
      ความน่าจะเป็นในการค้นคืน "ความทรงจำ" ก็เปลี่ยนไปตามสภาวะอารมณ์ด้วย และแทบไม่มี TTS ตัวไหนที่ควบคุมได้ละเอียดเท่า IndexTTS2
    • แต่คุณภาพเอาต์พุตของ Chatterbox-TTS ดีกว่ามาก
      เอาต์พุตของ Sopro TTS ตามวิดีโอใน GitHub แย่มากจนใช้งานจริงไม่ได้
      ในทางกลับกัน Chatterbox ให้ผลลัพธ์ที่น่าทึ่ง
      GPU ของฉันคือ RTX5090 และใช้เวลารันประมาณ 2 วินาทีต่อการสร้างเสียง 1 วินาที จึงถือว่าเร็วมาก
      ดูได้จากตัวอย่างแรกและตัวอย่างที่สอง โดยตัวอย่างหลังเป็นเดโมโคลนเสียงของยูทูบเบอร์ ArbitorIan
  • เจ๋งมากจริง ๆ!
    ฉันใช้ Kokoro (82M) บนเครื่องอยู่ ซึ่งทำงานเร็วและคุณภาพเสียงก็ดีเยี่ยม

    • มีใครรู้จักสแตกผู้ช่วยเสียงโอเพนซอร์สที่ดีบ้างไหม?
      ฉันใช้ ricky0123/vad จัดการการตรวจจับเสียงพูด แล้วใช้ Web Speech API สำหรับการรู้จำแบบเร็ว ก่อนจะตามด้วย TTS เชิงพาณิชย์
      แต่ฝั่งโอเพนซอร์สยังไม่เจอตัวที่เร็วพอ
    • ฉันเคยลอง Kokoro-JS ที่รันในเบราว์เซอร์ด้วย แต่latencyสูงเกินไปและไม่รองรับภาษาที่ต้องการ จึงค่อนข้างน่าเสียดาย
  • สงสัยว่า “zero-shot” หมายถึงอะไร

    • zero-shot คือวิธีใช้งานโมเดลด้วยพรอมป์ต์เดียว (หรือมีบริบทเพิ่มเติมในรูปไฟล์)
      ส่วน few-shot คือการให้ตัวอย่างไม่กี่แบบเพื่อชี้นำโมเดล และ multi-shot คือการผ่านหลายรอบของการพรอมป์ต์และแก้ไข
    • ในกรณีนี้ดูเหมือนจะหมายถึงการได้โคลนที่ดีโดยไม่ต้องให้ตัวอย่างเสียงอื่นเพิ่มเติม
  • ให้ความรู้สึกเหมือนทำ voice cloning ระดับ Mission Impossible ได้โดยไม่ต้องคอมไพล์ยาวนาน
    เลยขอแชร์ทั้งวิดีโอ YouTubeที่เกี่ยวข้องและบทกวีเล่นคำ

  • ฉันทดลองเป็นภาษาอังกฤษแล้วและค่อนข้างประทับใจ
    ถือว่าให้ผลลัพธ์น่าทึ่งมากสำหรับโปรเจ็กต์งบต่ำ และใช้งานก็ง่ายมาก

    • แต่เพราะรองรับเฉพาะภาษาอังกฤษ จึงยังลองภาษาอื่นไม่ได้
      ถ้ามีเวอร์ชันภาษาเยอรมันฉันคงอยากใช้มาก
  • เมื่อคำนึงถึงข้อจำกัดแล้ว ถือว่าให้ผลลัพธ์ที่น่าประทับใจมาก
    แต่อยากรู้ว่ามีแผนจะปล่อยเวอร์ชันที่แรงกว่านี้ไหม (มี artifact น้อยลงแต่ใช้คอมพิวต์มากขึ้น)
    ปกติฉันใช้ Chatterbox เป็นหลัก แต่ถ้าตัวนี้พัฒนาไปถึงระดับเสียงคุณภาพสูงได้ ก็น่าจะเป็นอีกทางเลือกที่ดี

    • นี่คือโปรเจ็กต์ข้างเคียงของฉัน
      ต้นทุนคอมพิวต์ค่อนข้างแพง แต่ถ้ากระแสตอบรับจากชุมชนดี ก็คิดว่าจะพัฒนาต่อ
      และ Chatterbox ก็เป็นทั้งโมเดลที่ยอดเยี่ยมและเป็นแรงบันดาลใจสำคัญ
  • สงสัยความหมายของ “zero-shot”

    • ฉันคิดว่าคำตระกูล *-shot พวกนี้เป็นศัพท์วงการที่แทบไม่มีความหมาย
      ตามอำเภอใจยิ่งกว่า Big O notation เสียอีก
    • ตามนิยามใน Wikipedia zero-shot คือการตั้งปัญหาที่ให้ทำนายตัวอย่างของคลาสที่ไม่เคยเห็นระหว่างการฝึกในตอนทดสอบ
      กล่าวคือ ถ้าโมเดลเรียนรู้ความน่าจะเป็นมีเงื่อนไข P(Audio|Voice) และสามารถสุ่มตัวอย่างสำหรับคลาสเสียงที่ไม่เคยเห็นระหว่างการฝึกได้ ก็ถือว่าเป็น zero-shot
      การให้เสียงอ้างอิงไม่ได้เป็นการเปลี่ยนน้ำหนักของโมเดล แต่เป็นการให้บริบท
  • ฉันลองฟังเสียงแล้วตกใจมาก เพราะคุณภาพเสียงแย่มาก
    มันแย่ยิ่งกว่าเสียงคอมพิวเตอร์เมื่อ 15 ปีก่อน และไม่เข้าใจเลยว่าทำไมคนถึงบอกว่าดี
    ฉันทดสอบหลายเบราว์เซอร์แล้วก็เหมือนเดิม

    • เสียงอ้างอิงบางตัวอาจทำให้คุณภาพแย่ลงได้
      ถ้ามันรุนแรงขนาดนั้น อาจมีปัญหาอื่นด้วย และฉันก็อยากช่วยดูไปด้วยกัน
    • ถ้านี่คือเสียงตัวอย่างที่ดีที่สุดในเดโมนั้น การออกเสียงเพี้ยนก็หนักมากจนทำให้ปัดทิ้งได้ทันที
    • ตอนแรกฉันนึกว่าเป็นเสียงของ RFK
    • ฉันลองหลายเสียงแล้ว แต่เสียงที่สร้างออกมาไม่เหมือนเลย และไม่ใช่เสียงที่ใช้ได้จริงด้วย
    • ฉันก็แทบไม่อยากเชื่อตอนฟังเหมือนกัน ฟังเกิน 1 นาทีแทบไม่ไหว เพราะเป็นคุณภาพเสียงที่ชวนไม่สบายหูมาก
  • เป็นเทคโนโลยีที่เจ๋งมาก
    น่าจะดีขึ้นอีกในอนาคต
    แต่ในระหว่างนี้ อย่างน้อยก็น่าจะเพิ่ม post-processing เสียงแบบง่าย ๆ เพื่อลดความแหบหยาบ (razziness) ลงบ้าง

  • สงสัยว่ามีโมเดลแนวนี้ตัวไหนที่ทำงานเป็นตัวแปลงเสียงแบบ speech-to-speechได้บ้างไหม
    กล่าวคือ รับทั้งตัวอย่างเสียงคงที่หนึ่งชุด (พรอมป์ต์) และสตรีมเสียงอินพุตแบบเรียลไทม์ แล้วแปลงเสียงอินพุตให้มีโทนและเนื้อเสียงแบบพรอมป์ต์
    สำหรับพวก V-tuber น่าจะไม่ต้องเปลี่ยนพรอมป์ต์บ่อยนัก จึงอาจเป็นไปได้ที่จะใช้ fine-tuning ครั้งเดียวเพื่อกำหนดเนื้อเสียงแบบคงที่

    • Chatterbox TTS รองรับสิ่งนี้ในโหมด “voice cloning”
      แต่คุณต้องทำระบบสตรีมมิงเอง
      มันรับออดิโอ A (สไตล์) และ B (คอนเทนต์) แล้วรวมเนื้อเสียงของ A เข้ากับการออกเสียงและน้ำเสียงของ B
      โมเดลแบบนี้จริง ๆ แล้วควรมองว่าเป็น S+STS (speech+style to speech) มากกว่าจะเป็น “TTS”
    • ฉันไม่รู้ฝั่งโอเพนซอร์ส แต่ ElevenLabs ทำแนวคิดนี้มานานแล้ว
      อธิบายไว้ละเอียดในบล็อกทางการ
    • RVC (Retrieval Voice Conversion) ก็เป็นตัวแปลงเสียงโอเพนซอร์สที่ดี
      แต่มีปัญหาความขัดแย้งระหว่างผู้สร้างเดิมกับนักพัฒนา จึงควรหลีกเลี่ยง main fork และหาฟอร์กล่าสุดที่มีการดูแลเป็นภาษาอังกฤษแทน
    • ในความเป็นจริง V-tuber จำนวนมากก็ใช้เทคโนโลยีลักษณะนี้อยู่แล้ว ดังนั้นน่าจะมีโซลูชันที่เสถียรอยู่แน่นอน