3 คะแนน โดย GN⁺ 2023-12-25 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

Storyteller: แพลตฟอร์มซิงก์อัตโนมัติสำหรับหนังสือเสียงและอีบุ๊ก

  • Storyteller เป็นแพลตฟอร์มแบบโฮสต์เองได้สำหรับซิงก์หนังสือเสียงและอีบุ๊กโดยอัตโนมัติ
  • แพลตฟอร์มนี้สร้างไฟล์อีบุ๊กที่สอดคล้องกับมาตรฐาน EPUB 3 ทำให้สามารถอ่านได้ด้วยเครื่องอ่านอีบุ๊กทุกชนิด (ทั้งซอฟต์แวร์และฮาร์ดแวร์) ที่รองรับ EPUB media overlay หรือใช้งานผ่านแอปมือถือ Storyteller โดยเฉพาะก็ได้
  • Storyteller เป็นระบบที่โฮสต์เองทั้งหมด และหนังสือทุกเล่มจะถูกเก็บไว้บนฮาร์ดแวร์ของผู้ใช้ จึงสามารถย้าย คัดลอก และสำรองข้อมูลได้อย่างอิสระตามต้องการ

ความเห็นของ GN⁺

  • Storyteller มีความสำคัญเพราะมอบแพลตฟอร์มที่ช่วยให้ซิงก์หนังสือเสียงและอีบุ๊กได้อย่างง่ายดาย เพื่อยกระดับประสบการณ์การอ่านของผู้ใช้
  • ความสามารถในการโฮสต์เอง ซึ่งทำให้ผู้ใช้ควบคุมข้อมูลของตนได้อย่างสมบูรณ์ สอดคล้องกับความกังวลสมัยใหม่ด้านความเป็นส่วนตัวและความเป็นเจ้าของข้อมูล
  • การสอดคล้องกับมาตรฐาน EPUB 3 ช่วยเพิ่มความเข้ากันได้และการเข้าถึง โดยทำให้ผู้ใช้อ่านหนังสือได้บนอุปกรณ์และซอฟต์แวร์ที่หลากหลาย

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

 
GN⁺ 2023-12-25
ความคิดเห็นบน Hacker News
  • น่าทึ่งมาก เมื่อหลายปีก่อนผมเคยทำเครื่องมือจัดแนวอีบุ๊กกับออดิโอบุ๊กที่คล้ายกันชื่อ https://github.com/r4victor/syncabook
    ตอนนั้นมองว่าวิธีจัดแนวข้อความ รวมถึงแบบที่ใช้ machine learning ใช้ทรัพยากรคำนวณสูงเกินไปและยังไม่ดีพอสำหรับข้อความยาว ๆ เลยเลือกวิธีสังเคราะห์ข้อความเป็นเสียง แล้วจัดแนว ลำดับเสียงสองชุด แทน
    Storyteller ดูเหมือนจะใช้วิธีจัดแนวข้อความ เลยสงสัยว่าการซิงก์หนังสือหนึ่งเล่มใช้เวลานานแค่ไหน
    อีกอย่าง เวอร์ชันเสียงกับข้อความมักต่างกันมากอยู่บ่อย ๆ เช่น ในเสียงอาจมีบทนำที่ไม่มีในข้อความ อยากรู้ว่า Storyteller จัดการกรณีแบบนี้ได้ดีแค่ไหน ต้องแก้ไขเสียง/ข้อความด้วยมือหรือไม่ หรือจัดการความแตกต่างโดยอัตโนมัติได้

    • syncabook เป็นงานที่ยอดเยี่ยม และ Storyteller ก็แทบจะเลือกแนวทาง ตรงกันข้าม ในเรื่อง forced alignment
      ในเอกสารผมเขียนรายละเอียดอัลกอริทึมการซิงก์ไว้แล้ว แต่ภาพรวมคือแบบนี้ Storyteller ใช้ Whisper ถอดเสียงเป็นข้อความ ซึ่งขั้นตอนนี้มีต้นทุนการคำนวณสูงที่สุด
      จากนั้นใช้ fuzzy search แบบอิงระยะ Levenshtein เพื่อค้นหาแต่ละบทในข้อความ ตรงนี้มีไว้เพื่อรองรับความแตกต่างระหว่างเวอร์ชันเสียงกับข้อความ
      สำหรับแต่ละบท ก็จะทำ fuzzy search กับผลถอดเสียงทั้งหมดอีกครั้ง เพื่อหาตำแหน่งเวลาเริ่ม/จบของแต่ละประโยค
      โดยรวมทำงานได้ค่อนข้างดี แต่เพราะใช้ไฟล์อีบุ๊กเป็นข้อมูลอ้างอิง ตอนนี้จึงยังอาจพลาดบทนำหรือส่วนท้ายของออดิโอบุ๊กได้บ้าง การรองรับการเรียกส่วนเหล่านั้นอย่างชัดเจนอยู่ในโรดแมป
    • ในเอกสารระบุว่าโดยปกติใช้เวลา 1–4 ชั่วโมง ขึ้นกับหนังสือและฮาร์ดแวร์: https://smoores.gitlab.io/storyteller/docs/syncing-books
      เอกสารยังอธิบายรายละเอียดอัลกอริทึมที่จัดการความแตกต่างระหว่างเสียงกับข้อความโดยอัตโนมัติไว้ด้วย
  • เจ๋งมาก เป็นสิ่งที่ก่อนหน้านี้ไม่เคยนึกถึงเลย
    ระหว่างเดินทางไป-กลับที่ทำงานผมเริ่มฟังออดิโอบุ๊ก และตอนกลางคืนก็อ่านหนังสือ ตอนนี้ใช้ 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 แต่มีฟีเจอร์ซิงก์อยู่

    • ทั้ง การซิงก์ตำแหน่งการอ่าน ฝั่งเซิร์ฟเวอร์และการเชื่อมต่อกับ KOReader ต่างก็อยู่ในโรดแมปจริง ๆ เป็นคำขอที่มีคนพูดถึงหลายครั้งแล้ว
    • Amazon มีทั้งหนังสือข้อความและเสียงจาก Audible แล้ว แต่ไม่มี ฟีเจอร์ซิงก์ ในรูปแบบใดเลย นี่มันไม่สมเหตุสมผล
      ทั้งที่น่าจะทำให้คนซื้อหนังสือทั้งสองแบบได้ด้วยซ้ำ มีหลายครั้งมากที่ผมอยากให้มี “handoff” ที่ส่งต่อไปยังเวอร์ชันเสียงได้อย่างเป็นธรรมชาติ ตอนอ่านอีบุ๊กอยู่แล้วอยากฟังต่อระหว่างขับรถ
  • เผลอแป๊บเดียวกระแสตอบรับเยอะมากเลย ถ้ามีใครลองตั้งค่าใช้งาน เชิญเข้ามาทักทายในช่อง Gitter (https://smoores.gitlab.io/storyteller/docs/say-hi) ขอความช่วยเหลือ หรือฝากฟีดแบ็กได้เลย

  • อยากให้มีข้อมูลมากกว่านี้ เช่น ลิงก์แอป iOS หรือภาพหน้าจอ รวมถึงฟีเจอร์ที่โปรเจกต์มีให้
    สงสัยว่าเป็น ไลบรารีอีบุ๊ก/ออดิโอบุ๊ก ที่มีการซิงก์แบบ audiobookshelf หรือเป็นแค่เครื่องมือสำหรับซิงก์อย่างเดียว: https://www.audiobookshelf.org/

    • เป็นข้อทักท้วงที่ถูกต้อง ผมจะลองเพิ่มข้อมูลเหล่านั้นเข้าไป ผมตั้งใจจะลิงก์ไปยังหน้า App Store จากเอกสาร และเพิ่งอัปเดตให้มีลิงก์แล้ว
      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/
    ดูดีมาก และขั้นต่อไปคือการสร้าง อีโคซิสเต็มซิงก์ครบวงจร สำหรับการจัดการหนังสือ

    • หมายถึงระบบอย่าง Audiobookshelf[0] หรือเปล่า? ส่วนตัวขอแนะนำอย่างยิ่ง มันทำงานเสถียรกว่าบริการเสียเงินทุกตัวที่ผมเคยใช้มาจนถึงตอนนี้
      [0] https://www.audiobookshelf.org/
    • ใช่ นั่นแหละคือเป้าหมาย การจัดการไลบรารี กับแอปอ่านมีอยู่แล้ว แต่โดยเฉพาะฝั่งการจัดการไลบรารียังมีงานต้องทำอีกเยอะ
  • สิ่งที่ผมอยากได้จริง ๆ จากยุค machine learning ใหม่นี้คือ TTS และ STT ระดับมนุษย์ที่โฮสต์เองได้
    อยากให้สามารถฟัง e-book แบบข้อความได้ และแปลง podcast ขนาดใหญ่หรือคอร์สวิดีโอ/เสียงบรรยายเป็นข้อความ เพื่อให้ค้นหาและอ้างอิงได้ง่าย
    สงสัยว่านี่คือสิ่งนั้นหรือเปล่า ของที่หาเจอมาจนถึงตอนนี้ไม่ก็ด้อยกว่ามนุษย์มาก ไม่ก็เป็นบริการออนไลน์ราคาแพง

  • ยอดเยี่ยม ผมอยากได้อะไรแบบนี้มาหลายปีแล้ว หวังว่า Libby จะผสานรวมเพื่อให้ใช้กับหนังสือที่ยืมมาได้ด้วย
    ถ้าเพิ่มลิงก์แอปใน App Store ด้วยก็ดี

    • ผมลืมใส่อันนี้อยู่เรื่อยเลย ลิงก์อยู่ที่นี่: https://apps.apple.com/us/app/storyteller-reader/id647446772...
      เดี๋ยวจะ push การเปลี่ยนแปลงให้รวมไว้ในเอกสารทันที
    • อยากรู้ว่าจะเอาไปใช้ทำอะไร