การร้องเพลงตัวอักษรควรจะเป็นสิ่งที่เสียง AI ทำได้ง่ายที่สุด A-B-C-D-E-F-G เสียงที่แยกจากกันเจ็ดเสียง ซึ่งเด็กทุกคนบนโลกคุ้นเคยดี แต่ใครก็ตามที่เคยทดลองใช้การสร้างเพลงด้วย AI จะรู้ว่าความจริงนั้นยุ่งเหยิงกว่านั้นมาก เมื่อสั่งให้โมเดลร้องเพลงตัวอักษร ตัวอักษร L, M, N, O และ P มักจะรวมกันกลายเป็นพยางค์ที่พร่ามัวเพียงพยางค์เดียว "Elemmennopee" ไม่ใช่ตัวอักษร แต่มันคืออาการของปัญหา

นี่คือปัญหา LMNOP และมันขยายวงกว้างไปไกลกว่าแค่เพลงกล่อมเด็ก วันในสัปดาห์ คำสั่งที่เป็นตัวเลข และรายการลำดับใดๆ ก็ตาม ต่างก็เผยให้เห็นจุดอ่อนเดียวกันนี้ นักพัฒนาคนหนึ่งเพิ่งทดสอบเรื่องนี้โดยการสร้างเพลงแปดเพลงผ่าน AI pipeline และวัดผลลัพธ์ด้วย mlx-whisper ซึ่งเป็นเครื่องมือจดจำเสียงพูดอัตโนมัติ แทนที่จะพึ่งพาการฟังด้วยความรู้สึกส่วนตัว พวกเขาให้ซอฟต์แวร์ถอดความรายงานสิ่งที่ AI ร้องออกมาจริงๆ ผลลัพธ์ที่ได้นั้นชัดเจนมาก การไล่เรียงลำดับทำให้คนร้องสังเคราะห์สะดุดในแบบที่ภาษาปกติไม่เป็น

ทำไมรายการลำดับถึงทำให้เสียง AI พัง

ภาษาพูดมีบริบท หากใครบางคนพึมพำว่า "I'm taking the dog to the park" และคุณพลาดคำว่า "dog" ประโยคก็ยังคงสื่อความหมายได้ คำรอบข้างจะช่วยเติมเต็มช่องว่าง แต่รายการลำดับไม่มีตาข่ายรองรับแบบนั้น แต่ละรายการดำรงอยู่ด้วยตัวเอง หากโมเดลออกเสียง "B" และ "D" พร่ามัวจนแยกไม่ออก ผู้ฟังจะไม่ได้รับความหมายบางส่วน แต่จะได้ยินเพียงเสียงรบกวน

ในเพลงตัวอักษร กลุ่ม LMNOP คือจุดที่ล้มเหลวชัดเจนที่สุด โมเดลเสียงจะปฏิบัติกับลำดับนี้เหมือนเป็นกลุ่มเสียงที่รวมกันเป็นก้อนเดียว แทนที่จะเป็นตัวอักษรห้าตัวที่แยกจากกัน หากไม่มีคำใบ้ทางบริบทเพื่อยึดแต่ละเสียงไว้ เครื่องสังเคราะห์เสียงจะคาดเดาการเปลี่ยนผ่านระหว่างพยัญชนะ ซึ่งมักจะเดาผิด สิ่งเดียวกันนี้เกิดขึ้นกับวันในสัปดาห์หรือขั้นตอนที่เป็นตัวเลข โมเดลจะรีบเร่งผ่านลำดับนั้น และบีบอัดรายการที่แตกต่างกันให้กลายเป็นเสียงที่ปนเปกันจนฟังไม่ออก

การวัดความเสียหาย

เพื่อศึกษาเรื่องนี้อย่างเป็นกลาง นักพัฒนาได้สร้างเพลงแปดเพลงและนำไปผ่าน mlx-whisper เพื่อให้คะแนนความถูกต้องของเนื้อร้อง กระบวนการนั้นตรงไปตรงมา: เขียน prompt, สร้างเสียง, ถอดความผลลัพธ์ และเปรียบเทียบข้อความที่ถอดความได้กับเนื้อร้องที่ตั้งใจไว้

สำหรับเนื้อเพลงแบบเล่าเรื่องทั่วไป ผลลัพธ์ค่อนข้างแม่นยำ คำต่างๆ อยู่ในตำแหน่งที่ควรจะเป็น แต่เมื่อ prompt มีรายการ ลำดับตัวอักษร หรือการไล่เรียงลำดับ mlx-whisper จะคืนค่าออกมาเป็นคำที่ไม่มีความหมาย ตัวอักษรหายไปหรือรวมกัน ตัวเลขกลายเป็นพยางค์ที่จำไม่ได้ การทดลองยืนยันว่าเนื้อเพลงที่มีรายการจำนวนมากมีความชัดเจนในการฟังแย่กว่าร้อยแก้วอย่างเห็นได้ชัด

โครงสร้าง Prompt ที่ช่วยได้

คุณไม่สามารถพึ่งพาการประมวลผลภายหลัง (post-processing) เพื่อแก้ไขรายการที่ฟังไม่รู้เรื่องได้ การแก้ไขต้องเกิดขึ้นก่อนที่โน้ตตัวแรกจะถูกสร้างขึ้น Prompt แรกที่สร้างขึ้นอย่างระมัดระวังสามารถบังคับให้โมเดลออกเสียงได้ชัดเจนขึ้น การปรับเปลี่ยนเหล่านี้ไม่มีค่าใช้จ่าย แต่จะเปลี่ยนวิธีที่โมเดลหายใจและเว้นวรรค

  • แบ่งกลุ่มยาวๆ ให้เป็นกลุ่มย่อย แทนที่จะเป็น A-B-C-D-E ให้จัดโครงสร้างบรรทัดเป็น A-B-C-D และ E-F-G การรีเซ็ตเล็กๆ ระหว่างกลุ่มช่วยให้โมเดลมีโอกาสออกเสียงพยัญชนะได้ถูกต้อง แทนที่จะทำให้เสียงปนกัน

  • สะกดตัวเลขเป็นคำ ใช้ "thirty" แทน "30" ตัวเลขที่เขียนเป็นสัญลักษณ์เป็นสิ่งที่เป็นนามธรรม บางครั้งโมเดลจะบีบอัดพวกมันให้กลายเป็นเสียงรบกวนที่สั้นและไม่มีเสียงก้อง การใช้คำภาษาอังกฤษแบบเต็มจะช่วยให้มีเนื้อเสียงทางสัทศาสตร์

  • ใส่ช่องว่างทางสายตารอบตัวอักษร เขียน "A - B - C" โดยใช้เครื่องหมายยัติภังค์หรือช่องว่าง แทนที่จะเป็น "ABC" การแยกออกจากกันทางสายตาจะส่งสัญญาณให้โมเดลรู้ว่าสิ่งเหล่านี้เป็นรายการที่แยกจากกัน ไม่ใช่คำย่อหรือคำเดียว

  • กำหนดจำนวนพยางค์ให้คงที่ รักษาแต่ละบรรทัดให้อยู่ระหว่างหกถึงสิบพยางค์ ความผันผวนที่มากเกินไปจะทำให้โมเดลรีบเร่งในบรรทัดที่สั้นและลากยาวในบรรทัดที่ยาว รายการลำดับต้องการความแม่นยำอยู่แล้ว จังหวะที่ไม่สม่ำเสมอจะทำให้การออกเสียงที่ถูกต้องแทบจะเป็นไปไม่ได้

  • ตัดคำว่า "and" ออกจากรายการ ในการพูดปกติ "and" ทำหน้าที่เป็นคำสันธาน แต่ในรายการที่ถูกร้อง มันจะเพิ่มพยางค์ที่นุ่มนวลซึ่งมักจะกลืนกินเสียงหนักของรายการก่อนหน้า "Monday, Tuesday, Wednesday" จะฟังดูชัดเจนกว่า "Monday, Tuesday, and Wednesday"

กับดักของการสร้างใหม่

นี่คือจุดที่สัญชาตญาณของมนุษย์ให้ผลตรงกันข้าม สำหรับเนื้อเพลงทั่วไป การใช้ prompt ซ้ำๆ (iterative prompting) มักจะให้ผลลัพธ์ที่ดีขึ้น เมื่อคุณได้ยินวลีที่ผิดเพี้ยน คุณก็ปรับเปลี่ยนคำพูดและสร้างใหม่ เวอร์ชันถัดไปก็จะฟังดูดีขึ้น การทดสอบแสดงให้เห็นว่าแนวทางนี้ใช้ได้กับเพลงที่ไม่มีการไล่เรียงลำดับ แต่สำหรับเพลงที่มีรายการ การเขียน prompt ใหม่กลับทำให้ผลลัพธ์ เข้าใจยากขึ้น

ข้อมูลนั้นชัดเจน เพลงที่ไม่มีรายการดีขึ้นหลังจากแก้ไข prompt แต่เพลงที่มีการไล่เรียงลำดับกลับแย่ลง

ตัวการคือ acoustic seed ในโมเดลเปลี่ยนเนื้อเพลงเป็นเพลง (lyrics-to-song models) การเปลี่ยน prompt ไม่ใช่แค่การแก้ไขเสียงที่มีอยู่เดิม แต่มันเป็นการสลับโครงสร้างพื้นฐานของการสร้างสรรค์ (generative foundation) ใหม่ทั้งหมด โมเดลจะสร้างการแสดงใหม่ตั้งแต่ต้น สำหรับข้อความเชิงบรรยาย การสุ่มใหม่ (dice roll) อาจจะได้เทคที่ชัดเจนกว่าเดิม แต่สำหรับรายการ (lists) คุณมักจะเจอกับการออกเสียงที่รัวหรือเพี้ยนยิ่งกว่าเดิม คุณอาจจะแก้จังหวะของตัวอักษรหนึ่งตัวได้ แต่กลับต้องมาดูโมเดลทำตัว "J," "K," และ "L" พังยับเยินในการพยายามครั้งถัดไป ผลลัพธ์เดิมอาจจะมีข้อผิดพลาด แต่การแก้ไขมักจะเป็นการเปลี่ยนจากความเละเทะทางเสียงหนึ่งไปสู่อีกแบบหนึ่งแทน

เวิร์กโฟลว์ที่ชาญฉลาดกว่าเดิมสำหรับเนื้อเพลงที่มีรายการเยอะๆ

เนื่องจากการสร้างใหม่มีความเสี่ยงที่จะทำลายความชัดเจน กระบวนการของคุณจึงต้องเปลี่ยนไป เลิกไล่ตามการเขียนใหม่ที่สมบูรณ์แบบ แต่ให้ปฏิบัติกับ prompt แรกเหมือนกับการคัดตัวนักแสดง (casting call)

สร้างเวอร์ชันต่างๆ จาก prompt เดิมเป๊ะๆ โดยใช้ random seeds ที่ต่างกัน อย่าไปแตะต้องข้อความ ให้คงเนื้อเพลงไว้เหมือนเดิมแล้วปล่อยให้โมเดลเปลี่ยนรูปแบบการแสดงเอง คุณกำลังทำการออดิชัน ไม่ใช่การนั่งแก้ไขงาน

จากนั้นให้คะแนนผู้สมัครแต่ละคน นำแต่ละเวอร์ชันไปผ่าน mlx-whisper หรือเครื่องมือถอดความ (transcription tool) ที่คล้ายกัน แล้ววัดว่าเทคไหนตรงตาม prompt ของคุณมากที่สุด เลือกผู้ชนะโดยดูจากความถูกต้องของเนื้อเพลง แม้ว่าดนตรีประกอบหรือโทนเสียงร้องจะดูไม่เนี้ยบเท่าก็ตาม สำหรับเนื้อหาที่มีรายการเยอะๆ ความสามารถในการฟังออก (intelligibility) สำคัญกว่าบรรยากาศ (vibe)

สิ่งที่สำคัญที่สุดคือ ให้จัดการแก้ไขตั้งแต่ขั้นตอนแรก ใช้กฎการเว้นวรรค การจำกัดจำนวนพยางค์ และการจัดกลุ่ม ก่อนที่คุณจะกด generate อย่าเขียนเพลงตัวอักษรด้วยภาษาอังกฤษธรรมดาๆ แล้วค่อยมาตามแก้ทีหลัง โมเดลจะให้อภัยการแก้ไขย้อนหลังได้ยากขึ้นเมื่อเกี่ยวข้องกับรายการ (lists) A