แนะนำ HN: แพลตฟอร์มโอเพนซอร์สแบบโฮสต์เองได้สำหรับการซิงก์เสียงบรรยายกับอีบุ๊ก
(smoores.gitlab.io)Storyteller: แพลตฟอร์มซิงก์อัตโนมัติสำหรับหนังสือเสียงและอีบุ๊ก
- Storyteller เป็นแพลตฟอร์มแบบโฮสต์เองได้สำหรับซิงก์หนังสือเสียงและอีบุ๊กโดยอัตโนมัติ
- แพลตฟอร์มนี้สร้างไฟล์อีบุ๊กที่สอดคล้องกับมาตรฐาน EPUB 3 ทำให้สามารถอ่านได้ด้วยเครื่องอ่านอีบุ๊กทุกชนิด (ทั้งซอฟต์แวร์และฮาร์ดแวร์) ที่รองรับ EPUB media overlay หรือใช้งานผ่านแอปมือถือ Storyteller โดยเฉพาะก็ได้
- Storyteller เป็นระบบที่โฮสต์เองทั้งหมด และหนังสือทุกเล่มจะถูกเก็บไว้บนฮาร์ดแวร์ของผู้ใช้ จึงสามารถย้าย คัดลอก และสำรองข้อมูลได้อย่างอิสระตามต้องการ
ความเห็นของ GN⁺
- Storyteller มีความสำคัญเพราะมอบแพลตฟอร์มที่ช่วยให้ซิงก์หนังสือเสียงและอีบุ๊กได้อย่างง่ายดาย เพื่อยกระดับประสบการณ์การอ่านของผู้ใช้
- ความสามารถในการโฮสต์เอง ซึ่งทำให้ผู้ใช้ควบคุมข้อมูลของตนได้อย่างสมบูรณ์ สอดคล้องกับความกังวลสมัยใหม่ด้านความเป็นส่วนตัวและความเป็นเจ้าของข้อมูล
- การสอดคล้องกับมาตรฐาน EPUB 3 ช่วยเพิ่มความเข้ากันได้และการเข้าถึง โดยทำให้ผู้ใช้อ่านหนังสือได้บนอุปกรณ์และซอฟต์แวร์ที่หลากหลาย
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
น่าทึ่งมาก เมื่อหลายปีก่อนผมเคยทำเครื่องมือจัดแนวอีบุ๊กกับออดิโอบุ๊กที่คล้ายกันชื่อ https://github.com/r4victor/syncabook
ตอนนั้นมองว่าวิธีจัดแนวข้อความ รวมถึงแบบที่ใช้ machine learning ใช้ทรัพยากรคำนวณสูงเกินไปและยังไม่ดีพอสำหรับข้อความยาว ๆ เลยเลือกวิธีสังเคราะห์ข้อความเป็นเสียง แล้วจัดแนว ลำดับเสียงสองชุด แทน
Storyteller ดูเหมือนจะใช้วิธีจัดแนวข้อความ เลยสงสัยว่าการซิงก์หนังสือหนึ่งเล่มใช้เวลานานแค่ไหน
อีกอย่าง เวอร์ชันเสียงกับข้อความมักต่างกันมากอยู่บ่อย ๆ เช่น ในเสียงอาจมีบทนำที่ไม่มีในข้อความ อยากรู้ว่า Storyteller จัดการกรณีแบบนี้ได้ดีแค่ไหน ต้องแก้ไขเสียง/ข้อความด้วยมือหรือไม่ หรือจัดการความแตกต่างโดยอัตโนมัติได้
ในเอกสารผมเขียนรายละเอียดอัลกอริทึมการซิงก์ไว้แล้ว แต่ภาพรวมคือแบบนี้ Storyteller ใช้ Whisper ถอดเสียงเป็นข้อความ ซึ่งขั้นตอนนี้มีต้นทุนการคำนวณสูงที่สุด
จากนั้นใช้ fuzzy search แบบอิงระยะ Levenshtein เพื่อค้นหาแต่ละบทในข้อความ ตรงนี้มีไว้เพื่อรองรับความแตกต่างระหว่างเวอร์ชันเสียงกับข้อความ
สำหรับแต่ละบท ก็จะทำ fuzzy search กับผลถอดเสียงทั้งหมดอีกครั้ง เพื่อหาตำแหน่งเวลาเริ่ม/จบของแต่ละประโยค
โดยรวมทำงานได้ค่อนข้างดี แต่เพราะใช้ไฟล์อีบุ๊กเป็นข้อมูลอ้างอิง ตอนนี้จึงยังอาจพลาดบทนำหรือส่วนท้ายของออดิโอบุ๊กได้บ้าง การรองรับการเรียกส่วนเหล่านั้นอย่างชัดเจนอยู่ในโรดแมป
เอกสารยังอธิบายรายละเอียดอัลกอริทึมที่จัดการความแตกต่างระหว่างเสียงกับข้อความโดยอัตโนมัติไว้ด้วย
เจ๋งมาก เป็นสิ่งที่ก่อนหน้านี้ไม่เคยนึกถึงเลย
ระหว่างเดินทางไป-กลับที่ทำงานผมเริ่มฟังออดิโอบุ๊ก และตอนกลางคืนก็อ่านหนังสือ ตอนนี้ใช้ audiobookshelf[0] ฟังอีบุ๊กอยู่ ซึ่งรองรับอีบุ๊กด้วย
ผมคอมเมนต์ไว้ในประเด็นสนทนา[1] ว่า audiobookshelf จะอ่าน EPUB ที่ Storyteller สร้างได้หรือไม่
[0]: https://www.audiobookshelf.org/
[1]: https://github.com/advplyr/audiobookshelf/issues/189#issueco...
ผมอยากสลับไปมาระหว่างออดิโอบุ๊กกับ เวอร์ชันข้อความ ได้อย่างอิสระ ขอบคุณที่พูดถึง Storyteller ในประเด็นสนทนานั้น เดี๋ยวผมจะเข้าไปดูเอง
ชอบมากจริง ๆ แต่ภรรยาและลูก ๆ ของผมทุกคนอ่าน EPUB บน เครื่องอ่านอีบุ๊ก Kobo เลยอยากให้ซิงก์หน้าที่อ่านล่าสุดจาก Kobo ไปยัง Storyteller ได้ เพื่อจะได้มาฟังต่อเป็นออดิโอบุ๊กทีหลัง
ถ้าจำเป็นต่อการซิงก์ ผมก็โอเคที่จะติดตั้ง KOReader บน Kobo ทุกเครื่อง ดูเหมือน KOReader จะยังไม่รองรับ EPUB3 media overlays แต่มีฟีเจอร์ซิงก์อยู่
ทั้งที่น่าจะทำให้คนซื้อหนังสือทั้งสองแบบได้ด้วยซ้ำ มีหลายครั้งมากที่ผมอยากให้มี “handoff” ที่ส่งต่อไปยังเวอร์ชันเสียงได้อย่างเป็นธรรมชาติ ตอนอ่านอีบุ๊กอยู่แล้วอยากฟังต่อระหว่างขับรถ
เผลอแป๊บเดียวกระแสตอบรับเยอะมากเลย ถ้ามีใครลองตั้งค่าใช้งาน เชิญเข้ามาทักทายในช่อง Gitter (https://smoores.gitlab.io/storyteller/docs/say-hi) ขอความช่วยเหลือ หรือฝากฟีดแบ็กได้เลย
อยากให้มีข้อมูลมากกว่านี้ เช่น ลิงก์แอป iOS หรือภาพหน้าจอ รวมถึงฟีเจอร์ที่โปรเจกต์มีให้
สงสัยว่าเป็น ไลบรารีอีบุ๊ก/ออดิโอบุ๊ก ที่มีการซิงก์แบบ audiobookshelf หรือเป็นแค่เครื่องมือสำหรับซิงก์อย่างเดียว: https://www.audiobookshelf.org/
Storyteller เป็น ไลบรารีอีบุ๊ก/ออดิโอบุ๊ก แบบครบชุดที่รวมการซิงก์ไว้ด้วย เพียงแต่จนถึงตอนนี้เราให้ความสำคัญกับประสบการณ์การอ่านมากกว่าประสบการณ์การจัดการไลบรารีมาก
การปรับปรุงประสบการณ์การจัดการไลบรารีก็จะเริ่มทำในเร็ว ๆ นี้
https://apps.apple.com/us/app/storyteller-reader/id647446772...
เป็นโปรเจกต์ที่เจ๋งจริง ๆ
ถ้าทำการถอดเสียงด้วย AI อยู่แล้ว ถ้าทำไปถึง การสร้างเสียง AI ด้วย TTS ได้ก็คงดีมาก
ผมเคยสมัคร Audible แล้วเลิกไปหลายครั้ง เพราะออดิโอบุ๊กคุณภาพสูงมีน้อยเกินไป แม้แต่หนังสือที่ผู้เขียนอ่านเองก็มีหลายเล่มที่ไม่ดีนัก และส่วนใหญ่ก็ไม่ใช่นักพากย์มืออาชีพ
ถ้าเป็น AI ที่ดี ก็น่าจะยอดเยี่ยม เพราะรักษาพลัง น้ำเสียง และความเร็วเดิมไว้ได้หลายชั่วโมงโดยไม่ล้า
น่าสนใจทีเดียว
เมื่อก่อนผมเคยเขียนอะไรคล้าย ๆ กัน โดยเอาชุด e-book/audiobook มาสร้าง ชุดข้อมูล LJSPEECH แบบกำหนดเอง เพื่อสังเคราะห์เสียงผู้บรรยายที่ชอบด้วย coqui-tts และโมเดล VITS แล้วทำให้หนังสือที่ยังไม่เคยออกเป็น audiobook ถูก “ตีพิมพ์” ออกมา
ผมสามารถซิงก์เนื้อหาหนังสือให้ตรงกับ timestamp แบ่งเสียงเป็นระดับประโยค แล้วใช้ชุดผสมนั้นสร้างชุดข้อมูล LJSPEECH ได้
ผมใช้ aeneas[1] ซึ่งตั้งค่าค่อนข้างยุ่งยาก แต่พอผ่านไปสักพัก มันก็สามารถแมปภาษาอื่นที่ไม่ใช่อังกฤษ ในกรณีของผมคือภาษาเยอรมัน ได้ด้วยความแม่นยำเกิน 80%
มันทำงานได้ค่อนข้างดี และชุดข้อมูล LJSPEECH ก็ใช้ได้ แต่ตอนนั้นเทคโนโลยี TTS ยังไม่ดีพอ อาจถึงเวลาปัดฝุ่นขึ้นมาใหม่ด้วยแนวทางโมเดลที่ใหม่กว่าอย่าง XTTS แล้วก็ได้
[1]: https://www.readbeyond.it/aeneas/
อย่างที่ว่า มีหนังสือดี ๆ มากมาย แต่ปัญหาที่หนักกว่าคือ หนังสือยอดเยี่ยมที่คุณภาพการบรรยาย/การผลิตธรรมดา ตัวอย่างเช่น A Song of Ice and Fire บน Audible นี่แย่มากจริง ๆ ส่วน The Martian ของ Andy Weir นั้นยอดเยี่ยม
จะย้ายเสียงของ Will Wheaton หรือ Greg Tremblay ไปใส่ GOT ได้ไหม? จะให้ตัวละครหลายตัวถูกอ่านด้วยเสียงที่แตกต่างกันได้ไหม? ถ้าทำได้ก็น่าลองอีกครั้ง
ลิงก์หายไป: https://smoores.gitlab.io/storyteller/
ดูดีมาก และขั้นต่อไปคือการสร้าง อีโคซิสเต็มซิงก์ครบวงจร สำหรับการจัดการหนังสือ
[0] https://www.audiobookshelf.org/
สิ่งที่ผมอยากได้จริง ๆ จากยุค machine learning ใหม่นี้คือ TTS และ STT ระดับมนุษย์ที่โฮสต์เองได้
อยากให้สามารถฟัง e-book แบบข้อความได้ และแปลง podcast ขนาดใหญ่หรือคอร์สวิดีโอ/เสียงบรรยายเป็นข้อความ เพื่อให้ค้นหาและอ้างอิงได้ง่าย
สงสัยว่านี่คือสิ่งนั้นหรือเปล่า ของที่หาเจอมาจนถึงตอนนี้ไม่ก็ด้อยกว่ามนุษย์มาก ไม่ก็เป็นบริการออนไลน์ราคาแพง
ยอดเยี่ยม ผมอยากได้อะไรแบบนี้มาหลายปีแล้ว หวังว่า Libby จะผสานรวมเพื่อให้ใช้กับหนังสือที่ยืมมาได้ด้วย
ถ้าเพิ่มลิงก์แอปใน App Store ด้วยก็ดี
เดี๋ยวจะ push การเปลี่ยนแปลงให้รวมไว้ในเอกสารทันที