അക്ഷരമാല പാടുക എന്നത് ഒരു AI ശബ്ദത്തിന് ചെയ്യാവുന്ന ഏറ്റവും എളുപ്പമുള്ള കാര്യമായിരിക്കണം. A-B-C-D-E-F-G. ഭൂമിയിലെ ഏതൊരു കുട്ടിക്കും പരിചിതമായ ഏഴ് വ്യത്യസ്ത ശബ്ദങ്ങൾ. എന്നിരുന്നാലും, AI സംഗീത നിർമ്മാണവുമായി പരീക്ഷണങ്ങൾ നടത്തിയ ആർക്കും ഇതിന്റെ യാഥാർത്ഥ്യം അത്ര എളുപ്പമല്ലെന്ന് അറിയാം. അക്ഷരമാല പാടാൻ ഒരു മോഡലിനോട് ആവശ്യപ്പെട്ടാൽ, L, M, N, O, P എന്നീ അക്ഷരങ്ങൾ പലപ്പോഴും ഒരു അവ്യക്തമായ ശബ്ദമായി ഒന്നിച്ച് ചേർന്നുപോകുന്നു. "Elemmennopee" എന്നത് ഒരു അക്ഷരമല്ല, മറിച്ച് ഒരു പ്രശ്നത്തിന്റെ ലക്ഷണമാണ്.
ഇതാണ് LMNOP പ്രശ്നം, ഇത് വെറുമൊരു താരാട്ടുപാട്ടുകളിൽ മാത്രം ഒതുങ്ങുന്നതല്ല. ആഴ്ചയിലെ ദിവസങ്ങൾ, നമ്പറുകൾ അടങ്ങിയ നിർദ്ദേശങ്ങൾ, ഏതൊരു ക്രമബദ്ധമായ പട്ടികയും ഇതേ പോരായ്മ വെളിപ്പെടുത്തുന്നു. ഒരു ഡെവലപ്പർ അടുത്തിടെ എട്ട് പാട്ടുകൾ ഒരു AI പൈപ്പ്ലൈൻ വഴി നിർമ്മിക്കുകയും mlx-whisper എന്ന ഓട്ടോമാറ്റിക് സ്പീച്ച് റെക്കഗ്നിഷൻ ടൂൾ ഉപയോഗിച്ച് അവ പരിശോധിക്കുകയും ചെയ്തു. കേൾവിക്കാരന്റെ വ്യക്തിപരമായ അഭിപ്രായത്തിന് പകരം, AI പാടിയത് കൃത്യമായി റിപ്പോർട്ട് ചെയ്യാൻ ട്രാൻസ്ക്രിപ്ഷൻ സോഫ്റ്റ്വെയറിനെ അദ്ദേഹം അനുവദിച്ചു. ഫലങ്ങൾ ഞെട്ടിക്കുന്നതായിരുന്നു. സാധാരണ ഭാഷയിൽ സംഭവിക്കാത്ത രീതിയിൽ, ക്രമബദ്ധമായ പട്ടികകൾ (enumeration) കൃത്രിമ ഗായകർക്ക് വെല്ലുവിളിയാകുന്നു.
എന്തുകൊണ്ടാണ് പട്ടികകൾ AI ശബ്ദങ്ങളെ തകരാറിലാക്കുന്നത്?
സംസാരിക്കുന്ന ഭാഷയ്ക്ക് ഒരു സന്ദർഭമുണ്ട് (context). ആരെങ്കിലും "ഞാൻ നായയെ പാർക്കിലേക്ക് കൊണ്ടുപോകുകയാണ്" എന്ന് മന്ത്രിക്കുമ്പോൾ, അതിൽ "നായയെ" എന്ന വാക്ക് നിങ്ങൾക്ക് നഷ്ടപ്പെട്ടാലും വാചകം അർത്ഥവത്തായിരിക്കും. ചുറ്റുമുള്ള വാക്കുകൾ ആ വിടവ് നികത്തുന്നു. എന്നാൽ പട്ടികകൾക്ക് അത്തരമൊരു സുരക്ഷാ വലയില്ല. ഓരോ ഇനവും ഒറ്റപ്പെട്ടവയാണ്. മോഡൽ "B", "D" എന്നിവ തമ്മിലുള്ള വ്യത്യാസം വ്യക്തമാക്കുന്നതിൽ പരാജയപ്പെട്ടാൽ, കേൾവിക്കാരന് ഭാഗികമായ അർത്ഥം ലഭിക്കില്ല; പകരം ലഭിക്കുന്നത് വെറും ശബ്ദകോലാഹലങ്ങൾ മാത്രമായിരിക്കും.
അക്ഷരമാല പാട്ടിൽ, LMNOP എന്ന കൂട്ടമാണ് ഏറ്റവും വലിയ പരാജയമായി മാറുന്നത്. അഞ്ച് വ്യത്യസ്ത അക്ഷരങ്ങൾക്ക് പകരം വോയ്സ് മോഡൽ ആ ക്രമത്തെ ഒരു ഒറ്റപ്പെട്ട ശബ്ദമായിട്ടാണ് കാണുന്നത്. ഓരോ ശബ്ദത്തെയും കൃത്യമായി നിലനിർത്താൻ ആവശ്യമായ സന്ദർഭപരമായ സൂചനകൾ ഇല്ലാത്തതിനാൽ, വ്യഞ്ജനാക്ഷരങ്ങൾക്കിടയിലുള്ള മാറ്റങ്ങൾ സിന്തസൈസർ ഊഹിച്ചാണ് നിർമ്മിക്കുന്നത്. അത് പലപ്പോഴും തെറ്റായിരിക്കും. ആഴ്ചയിലെ ദിവസങ്ങൾക്കോ നമ്പറുകൾക്കോ ഇത് സംഭവിക്കാം. മോഡൽ ആ ക്രമത്തിലൂടെ വേഗത്തിൽ കടന്നുപോകുകയും, വ്യത്യസ്തമായ ഇനങ്ങളെ അവ്യക്തമായ ഒരു ശബ്ദമായി ചുരുക്കുകയും ചെയ്യുന്നു.
നാശനഷ്ടങ്ങൾ അളക്കുന്നു
ഇതിനെ വസ്തുനിഷ്ഠമായി പഠിക്കുന്നതിനായി, ഡെവലപ്പർ എട്ട് പാട്ടുകൾ നിർമ്മിക്കുകയും വരികളുടെ കൃത്യത അളക്കാൻ mlx-whisper ഉപയോഗിക്കുകയും ചെയ്തു. പ്രക്രിയ ലളിതമായിരുന്നു: ഒരു പ്രോംപ്റ്റ് എഴുതുക, ഓഡിയോ നിർമ്മിക്കുക, ഫലം ട്രാൻസ്ക്രിബ് ചെയ്യുക, തുടർന്ന് ട്രാൻസ്ക്രിബ് ചെയ്ത ടെക്സ്റ്റിനെ ഉദ്ദേശിച്ച വരികളുമായി താരതമ്യം ചെയ്യുക.
സാധാരണ വിവരണാത്മകമായ വരികളിൽ (narrative lyrics), ഔട്ട്പുട്ട് തികച്ചും കൃത്യമായിരുന്നു. വാക്കുകൾ കൃത്യമായ സ്ഥാനങ്ങളിൽ വന്നു. എന്നാൽ പ്രോംപ്റ്റുകളിൽ പട്ടികകളോ അക്ഷരമാലയോ നമ്പറുകളോ ഉൾപ്പെടുത്തിയപ്പോൾ, mlx-whisper അർത്ഥശൂന്യമായ വാക്കുകളാണ് നൽകിയത്. അക്ഷരങ്ങൾ അപ്രത്യക്ഷമാവുകയോ അല്ലെങ്കിൽ പരസ്പരം ലയിച്ചുചേരുകയോ ചെയ്തു. നമ്പറുകൾ തിരിച്ചറിയാൻ കഴിയാത്ത ശബ്ദങ്ങളായി മാറി. പട്ടികകൾ കൂടുതലായി അടങ്ങിയ വരികൾക്ക് സാധാരണ ഗദ്യത്തേക്കാൾ (prose) കുറഞ്ഞ വ്യക്തതയാണുള്ളതെന്ന് പരീക്ഷണം സ്ഥിരീകരിച്ചു.
സഹായിക്കുന്ന പ്രോംപ്റ്റ് നിർമ്മാണ രീതികൾ
തെറ്റായ രീതിയിൽ വന്ന ഒരു പട്ടിക ശരിയാക്കാൻ പോസ്റ്റ്-പ്രോസസ്സിംഗിനെ മാത്രം ആശ്രയിക്കാൻ കഴിയില്ല. ആദ്യത്തെ നോട്ട് ഉൽപ്പാദിപ്പിക്കുന്നതിന് മുമ്പ് തന്നെ പരിഹാരം കാണണം. ശ്രദ്ധാപൂർവ്വം തയ്യാറാക്കിയ ഒരു പ്രോംപ്റ്റ് മോഡലിനെ കൂടുതൽ വ്യക്തമായ ഉച്ചാരണം നടത്താൻ പ്രേരിപ്പിക്കും. ഈ മാറ്റങ്ങൾക്ക് അധിക ചിലവില്ലെങ്കിലും, മോഡൽ എങ്ങനെ ശ്വസിക്കുന്നുവെന്നും എവിടെ നിർത്തി പാടുന്നുവെന്നും ഇത് മാറ്റുന്നു.
നീളമുള്ള വരികളെ ചെറിയ ഗ്രൂപ്പുകളായി തിരിക്കുക. A-B-C-D-E എന്ന് പറയുന്നതിന് പകരം, വരികളെ A-B-C-D എന്നും E-F-G എന്നും ക്രമീകരിക്കുക. ഗ്രൂപ്പുകൾക്കിടയിലുള്ള ഈ ചെറിയ ഇടവേളകൾ, അക്ഷരങ്ങൾ തമ്മിൽ കലരാതെ കൃത്യമായ വ്യഞ്ജനാക്ഷരങ്ങൾ ഉച്ചരിക്കാൻ മോഡലിന് അവസരം നൽകുന്നു.
നമ്പറുകൾ അക്ഷരങ്ങളിൽ എഴുതുക. "30" എന്നതിന് പകരം "thirty" എന്ന് ഉപയോഗിക്കുക. എഴുതപ്പെട്ട അക്കങ്ങൾ അമൂർത്തമായ ചിഹ്നങ്ങളാണ്; മോഡൽ അവയെ ചിലപ്പോൾ വേഗത്തിൽ ഉച്ചരിക്കുകയും ശബ്ദം വ്യക്തമാകാതെ പോകുകയും ചെയ്യും. ഒരു പൂർണ്ണമായ ഇംഗ്ലീഷ് വാക്ക് ഉപയോഗിക്കുന്നത് ശബ്ദത്തിന് വ്യക്തത നൽകുന്നു.
അക്ഷരങ്ങൾക്ക് ചുറ്റും വിടവ് നൽകുക. "ABC" എന്ന് എഴുതുന്നതിന് പകരം ഹൈഫനുകളോ സ്പേസോ ഉപയോഗിച്ച് "A - B - C" എന്ന് എഴുതുക. ഇത് ഓരോന്നും ഒറ്റപ്പെട്ട ഇനങ്ങളാണെന്നും ഒരു ഒറ്റപ്പെട്ട വാക്കോ ചുരുക്കപ്പേരോ അല്ലെന്നും മോഡലിന് മനസ്സിലാക്കി കൊടുക്കുന്നു.
സിലബിൾ എണ്ണം നിയന്ത്രിക്കുക. ഓരോ വരിയും ആറ് മുതൽ പത്ത് സിലബിളുകൾ വരെയായിരിക്കാൻ ശ്രദ്ധിക്കുക. വരികളിലെ വലിയ വ്യത്യാസങ്ങൾ കാരണം മോഡൽ ചെറിയ വരികൾ വേഗത്തിലും വലിയ വരികൾ വലിച്ചുനീട്ടിയും പാടാൻ സാധ്യതയുണ്ട്. പട്ടികകൾക്ക് കൃത്യത ആവശ്യമാണ്; താളത്തിലെ അസമത്വം കൃത്യമായ ഉച്ചാരണം അസാധ്യമാക്കുന്നു.
പട്ടികകളിൽ നിന്ന് "and" ഒഴിവാക്കുക. സാധാരണ സംസാരത്തിൽ "and" ഒരു സംയോജകമായി പ്രവർത്തിക്കുന്നു. എന്നാൽ പാട്ടുകളിൽ ഒരു പട്ടിക പറയുമ്പോൾ, അത് ഒരു അധിക ശബ്ദം നൽകുകയും മുൻപത്തെ ഇനത്തിന്റെ വ്യക്തത നഷ്ടപ്പെടുത്തുകയും ചെയ്യുന്നു. "Monday, Tuesday, and Wednesday" എന്നതിനേക്കാൾ "Monday, Tuesday, Wednesday" എന്നത് കൂടുതൽ വ്യക്തത നൽകുന്നു.
പുനർനിർമ്മാണ കെണി
ഇവിടെയാണ് മനുഷ്യന്റെ സഹജവാസന തെറ്റായി പ്രവർത്തിക്കുന്നത്. സാധാരണ വരികളിൽ, പ്രോംപ്റ്റുകൾ ആവർത്തിച്ച് മാറ്റുന്നത് (iterative prompting) ഫലം മെച്ചപ്പെടുത്താറുണ്ട്. ഒരു വരി തെറ്റാണെന്ന് തോന്നിയാൽ, വാക്കുകൾ മാറ്റി വീണ്ടും നിർമ്മിക്കുക. അടുത്ത പതിപ്പ് കൂടുതൽ നന്നായിരിക്കും. പട്ടികകൾ ഇല്ലാത്ത പാട്ടുകളിൽ ഈ രീതി ഫലപ്രദമാണെന്ന് പരീക്ഷണം കാണിച്ചു. എന്നാൽ പട്ടികകൾ അടങ്ങിയ പാട്ടുകളിൽ, പ്രോംപ്റ്റ് വീണ്ടും എഴുതുന്നത് ഔട്ട്പുട്ടിനെ കൂടുതൽ മനസ്സിലാക്കാൻ പ്രയാസമുള്ളതാക്കി മാറ്റി.
വിവരങ്ങൾ വ്യക്തമായിരുന്നു. പട്ടികകൾ ഇല്ലാത്ത പാട്ടുകൾ പ്രോംപ്റ്റ് മാറ്റങ്ങളിലൂടെ മെച്ചപ്പെട്ടപ്പോൾ, പട്ടികകൾ അടങ്ങിയ പാട്ടങ്ങളുടെ ഗുണനിലവാരം കുറയുകയായിരുന്നു.
കുറ്റക്കാരൻ അക്കോസ്റ്റിക് സീഡ് (acoustic seed) ആണ്. വരികളിൽ നിന്ന് പാട്ട് നിർമ്മിക്കുന്ന മോഡലുകളിൽ (lyrics-to-song models), പ്രോംപ്റ്റ് മാറ്റുന്നത് നിലവിലുള്ള ഓഡിയോ എഡിറ്റ് ചെയ്യുക മാത്രമല്ല ചെയ്യുന്നത്. അത് മുഴുവൻ ജനറേറ്റീവ് അടിത്തറയെയും പുനഃക്രമീകരിക്കുന്നു. മോഡൽ ആ പെർഫോമൻസ് ആദ്യം മുതൽ വീണ്ടും നിർമ്മിക്കുന്നു. വിവരണാത്മകമായ ടെക്സ്റ്റുകൾക്ക് (narrative text), പുതിയ ഡൈസ് റോൾ കൂടുതൽ വ്യക്തമായ ഒരു വേർഷനിൽ എത്തിച്ചേർന്നേക്കാം. എന്നാൽ ലിസ്റ്റുകളുടെ കാര്യത്തിൽ, നിങ്ങൾ സാധാരണയായി കൂടുതൽ മോശമായ ഉച്ചാരണ പിശകുകൾക്കാണ് സാധ്യത വരുത്തുന്നത്. ഒരു അക്ഷരത്തിന്റെ ടൈമിംഗ് ശരിയാക്കിയേക്കാം, എന്നാൽ അടുത്ത ശ്രമത്തിൽ മോഡൽ "J," "K," "L" എന്നീ അക്ഷരങ്ങളെ വ്യക്തതയില്ലാതെ പാടിപ്പോകുന്നത് നിങ്ങൾ കാണേണ്ടി വന്നേക്കാം. ആദ്യത്തെ വേർഷൻ പിഴവുകൾ നിറഞ്ഞതായിരുന്നു, എന്നാൽ തിരുത്തലുകൾ പലപ്പോഴും ഒരു ഉച്ചാരണ പിശകിന് പകരം മറ്റൊരു പിശക് തന്നെ നൽകുന്നു.
ലിസ്റ്റുകൾ കൂടുതലുള്ള വരികൾക്കായി കൂടുതൽ സ്മാർട്ട് ആയ ഒരു വർക്ക്ഫ്ലോ
വീണ്ടും ജനറേറ്റ് ചെയ്യുന്നത് വ്യക്തത നഷ്ടപ്പെടാൻ കാരണമായേക്കാതുകൊണ്ട്, നിങ്ങളുടെ രീതിയിൽ മാറ്റം വരുത്തേണ്ടതുണ്ട്. തികഞ്ഞ ഒരു റീറൈറ്റിനായി (rewrite) പിന്നാലെ പോകുന്നത് നിർത്തുക. പകരം, ആദ്യത്തെ പ്രോംപ്റ്റിനെ ഒരു കാസ്റ്റിംഗ് കോൾ (casting call) പോലെ കാണുക.
വ്യത്യസ്ത റാൻഡം സീഡുകൾ (random seeds) ഉപയോഗിച്ച് കൃത്യം അതേ പ്രോംപ്റ്റിൽ നിന്ന് തന്നെ ഒന്നിലധികം വേർഷനുകൾ നിർമ്മിക്കുക. ടെക്സ്റ്റിൽ മാറ്റം വരുത്തരുത്. വരികൾ മാറ്റമില്ലാതെ നിലനിർത്തുക, മോഡലിനെ അതിന്റെ പെർഫോമൻസ് വ്യത്യാസപ്പെടുത്താൻ അനുവദിക്കുക. നിങ്ങൾ ഒരു ഓഡിഷൻ നടത്തുകയാണ്, ഒരു എഡിറ്റിംഗ് സെഷനല്ല.
ശേഷം ഓരോ വേർഷനെയും വിലയിരുത്തുക. ഓരോ വേർഷനും mlx-whisper അല്ലെങ്കിൽ സമാനമായ ഒരു ട്രാൻസ്ക്രിപ്ഷൻ ടൂൾ ഉപയോഗിച്ച് പരിശോധിക്കുകയും, ഏത് വേർഷനാണ് നിങ്ങളുടെ പ്രോംപ്റ്റുമായി ഏറ്റവും കൃത്യമായി പൊരുത്തപ്പെടുന്നത് എന്ന് കണ്ടെത്തുകയും ചെയ്യുക. ഇൻസ്ട്രുമെന്റേഷനോ (instrumentation) വോക്കൽ ടോണോ അല്പം കുറവ് തോന്നിയാലും, വരികളുടെ കൃത്യതയുടെ അടിസ്ഥാനത്തിൽ മികച്ചത് തിരഞ്ഞെടുക്കുക. ലിസ്റ്റുകൾ കൂടുതലുള്ള ഉള്ളടക്കങ്ങളിൽ, വൈബിനേക്കാൾ (vibe) പ്രധാനം വ്യക്തതയാണ് (intelligibility).
ഏറ്റവും പ്രധാനമായി, തിരുത്തലുകൾ മുൻകൂട്ടി ചെയ്യുക. ജനറേറ്റ് ചെയ്യുന്നതിന് മുൻപ് തന്നെ സ്പേസിംഗ് നിയമങ്ങൾ (spacing rules), സിലബിൾ പരിധികൾ (syllable limits), ഗ്രൂപ്പിംഗ് എന്നിവ നടപ്പിലാക്കുക. അക്ഷരമാല പാട്ട് സാധാരണ ഇംഗ്ലീഷിൽ എഴുതിയിട്ട് പിന്നീട് അത് ശരിയാക്കാൻ ശ്രമിക്കരുത്. ലിസ്റ്റുകൾ ഉൾപ്പെടുമ്പോൾ, പിന്നീട് വരുത്തുന്ന തിരുത്തലുകളെ മോഡൽ അത്ര सहजമായി സ്വീകരിക്കില്ല. A
