లోకల్ AI మ్యూజిక్ జనరేషన్ సృజనాత్మకత నుండి పరిమితులను తొలగిస్తుంది. ACE-Step 1.5 వంటి టూల్స్ పూర్తిగా ఒక Mac పై నడుస్తాయి, క్లౌడ్ క్రెడిట్స్ లేదా అప్లోడ్ క్యూలు లేకుండా నిమిషాల్లో టెక్స్ట్ ప్రాంప్ట్లను పూర్తి పాటలుగా మారుస్తాయి. ఆ స్వేచ్ఛ ఒక కొత్త సమస్యను సృష్టిస్తుంది: అది పరిమాణం (volume). జనరేషన్ చౌకగా మరియు తక్షణమే అందుబాటులో ఉన్నప్పుడు, మీరు పాటను తయారు చేయగలరా లేదా అని అడగడం మానేసి, మీ డ్రైవ్లో ఉన్న యాభై వెర్షన్లలో ఏది ఉంచుకోవడానికి అర్హమైనది అని ఆలోచించడం ప్రారంభిస్తారు.
నేను దీనిని కష్టపడి నేర్చుకున్నాను. ఒక సాధారణ రోజున, ఒక మంచి పాటను కనుగొనడానికి నాకు ACE-Step 1.5 నుండి సుమారు నాలుగు టేక్లు అవసరమవుతాయి. కానీ సగటులు అబద్ధం చెబుతాయి. ఇటీవల ఒక సెషన్లో, ఒకే అరేంజ్మెంట్ కోసం నేను ముప్పై రెండు టేక్లను జనరేట్ చేశాను. ముప్పై రెండు రెండు నిమిషాల పాటలను వినడం అంటే గంట కంటే ఎక్కువ సమయం శ్రద్ధగా వినడం. ఏడవ ట్రాక్ వచ్చేసరికి, నా చెవులు అస్పష్టమైన అచ్చులను (vowels) కూడా క్షమించే స్థాయికి చేరుకున్నాయి. పదిహేడవ ట్రాక్ వచ్చేసరికి, నేను పదాలను పూర్తిగా విస్మరిస్తూనే, మెలోడీలకు తల ఊపుతున్నాను. శ్రోత అలసట (Listener fatigue) అనేది బద్ధకం కాదు; అది గ్రహణ శక్తిలో (perceptual accuracy) వచ్చే నిజమైన క్షీణత. నా చెవులు వినకముందే పనిచేయగల ఒక ఫిల్టర్ నాకు అవసరమైంది.
అందుకే నేను OpenAI యొక్క స్పీచ్-రికగ్నిషన్ మోడల్కు Apple Silicon-ఆప్టిమైజ్డ్ పోర్ట్ అయిన mlx-whisper చుట్టూ ఒక లోకల్ QA పైప్లైన్ను నిర్మించాను. ఆలోచన సరళమైనది: ప్రతి టేక్ను ఆటోమేటిక్గా ట్రాన్స్క్రైబ్ చేసి, దానిని అసలు సాహిత్యం (lyrics) తో పోల్చగలిగితే, నాకు ఒక ఆబ్జెక్టివ్ లిరిక్-మ్యాచ్ రేట్ లభిస్తుంది. ఆ సంఖ్య ముప్పై రెండు టేక్లను తక్కువ సంఖ్యలో నిర్వహించగలిగేలా ర్యాంక్ చేయగలదు.
పైప్లైన్ ఎలా పనిచేస్తుంది
ఈ వర్క్ఫ్లోలో నాలుగు దశలు ఉన్నాయి, మరియు నేను ప్రతి దశను తప్పనిసరిగా పాటించవలసినదిగా పరిగణిస్తాను.
Generate. నేను ACE-Step 1.5తో రా (raw) ఆడియోను సృష్టిస్తాను. ఈ దశలో నేను దేనినీ విమర్శించను. లక్ష్యం పరిమాణం (volume) మాత్రమే.
Transcribe. ప్రతి WAV ఫైల్ నా Macలోని mlx-whisper లోకి వెళ్తుంది. MLX అనేది Apple యొక్క Metal మరియు న్యూరల్ ఇంజిన్ కోసం నిర్మించబడినందున, ఇది పూర్తిగా లోకల్గా నడుస్తుంది. ఇందులో API ఖర్చులు లేవు, నెట్వర్క్ లాటెన్సీ లేదు మరియు రా ఆడియోను రిమోట్ సర్వర్కు పంపడం గురించి గోప్యత (privacy) ఆందోళనలు లేవు. నేను కాఫీ తయారు చేసేలోపు ముప్పై రెండు ఫైళ్ల బ్యాచ్ ట్రాన్స్క్రైబ్ అయిపోతుంది.
Score. నేను Whisper ట్రాన్స్క్రిప్ట్ను అసలు లిరిక్ ప్రాంప్ట్తో పోల్చి చూస్తాను. మ్యాచ్ రేట్ యొక్క విశ్వసనీయతను (fidelity) కొలుస్తుంది: గాయకుడు ప్రతి పదాన్ని సరిగ్గా పాడారా, లేదా లైన్లను వదిలేశారా, పదాలను వక్రీకరించారా (slur), లేదా అక్షరాలను ఊహించి పాడారా (hallucinate)? నేను శాతంలో ఓవర్లాప్ను లెక్కిస్తాను. ఇది సౌందర్యపరమైన తీర్పు కాదు; ఇది వచన ఖచ్చితత్వం (textual accuracy) యొక్క కచ్చితమైన లెక్క.
Filter. నేను ఆ మ్యాచ్ రేట్ ఆధారంగా టేక్లను క్రమబద్ధీకరిస్తాను. టాప్ క్వైంటైల్ (top quintile) నా ఆడిషన్ పూల్గా మారుతుంది. మిగిలినవన్నీ సెకండరీ ఫోల్డర్కు వెళ్తాయి. తక్కువ స్కోరు వచ్చిన వాటిని నేను ఇంకా తొలగించలేదు, కానీ వాటి కోసం నా విలువైన వినే సమయాన్ని వృధా చేయను.
జ్యూరీని స్వతంత్రంగా ఉంచండి
నేను ఒక కఠినమైన నియమాన్ని అనుసరిస్తాను: జనరేషన్ మోడల్ ఎప్పుడూ తన సొంత పనిని స్వయంగా మూల్యాంకనం చేయదు. ACE-Step 1.5 తన అవుట్పుట్ను ACE-Step 1.5 ద్వారానే అంచనా వేయదు. నేను ట్రాన్స్క్రిప్షన్ కోసం పూర్తిగా వేరే ప్రక్రియను ఉపయోగిస్తాను, ఎందుకంటే తనను తాను తనిఖీ చేసుకునే మోడల్ ఎప్పుడూ చాలా దయగా ఉంటుంది. దానికి కూడా అదే లోపాలు (blind spots) ఉంటాయి. ఒకవేళ జనరేటర్ బహువచన గుర్తులను (plural markers) వదిలేయడం లేదా హార్డ్ కాన్సోనెంట్లను మృదువుగా చేయడం వంటివి చేస్తే, సెల్ఫ్-ఎవల్యూయేషన్ లూప్ కూడా ఆ లోపాలను పట్టించుకోకుండా ఉండటం నేర్చుకుంటుంది. స్వతంత్ర స్పీచ్-రికగ్నిషన్ మోడల్కు సంగీతం పట్ల ఎటువంటి పక్షపాతం ఉండదు. అది విన్నది ఏమిటో నిష్పక్షపాతంగా చెబుతుంది, ఆ నివేదిక ఎంత కఠినంగా ఉన్నా సరే.
గణాంకాలు ఏమి వెల్లడించాయి
ముప్పై రెండు టేక్ల బ్యాచ్లో, ఈ పైప్లైన్ ఎనిమిది అభ్యర్థులను మాత్రమే ఎంపిక చేసింది, అవి నిజంగా శ్రద్ధ వహించదగినవి. ఆ ఎనిమిది పాటలు సగటున 83.9% లిరిక్-మ్యాచ్ రేట్ను కలిగి ఉన్నాయి. నేను వాటిని సరిగ్గా విని, నా స్వంత నాణ్యత ప్రమాణాల (quality rubric) ప్రకారం స్కోర్ చేసిన తర్వాత, అవి 100కి సగటున 94.1 స్కోరు సాధించాయి. ఆ వ్యత్యాసం మొత్తం కథను చెబుతుంది. లిరిక్ డ్రాప్స్, టైమింగ్ లోపాలు, వోకల్ ఆర్టిఫాక్ట్స్ వంటి స్పష్టమైన నిర్మాణ వైఫల్యాలను మెషిన్ గేట్ గుర్తించింది, తద్వారా నా మానవ మూల్యాంకనం ముందే శుద్ధి చేయబడిన సెట్పై దృష్టి పెట్టగలిగింది. ఆటోమేషన్ నా తీర్పును భర్తీ చేయలేదు. అది నా సమయాన్ని మరియు తీర్పును కాపాడింది.
మెషిన్ తప్పు చేసినప్పుడు
తక్కువ స్కోరు అంటే అది ఎప్పుడూ చెడ్డ పాట అని కాదు. నాకు బాగా నచ్చిన ఒక ట్రాక్ కటాఫ్ కంటే చాలా తక్కువ స్కోరు సాధించినప్పుడు నేను దీనిని ముందుగానే గమనించాను. ఆ పాట సాహిత్యం కేవలం అక్షరాల పఠనం (alphabet chant) మాత్రమే: విడివిడి శబ్దాలుగా పాడబడిన అక్షరాలు. Whisper సహజమైన వాక్య నిర్మాణాలపై శిక్షణ పొందింది. దానికి "A B C D" అని ఇస్తే, అది తరచుగా పదాలను ఊహిస్తుంది (hallucinates), ఆర్టికల్స్ను చేరుస్తుంది లేదా అక్షరాలను అర్థం లేని శబ్దాలుగా (garbled phonemes) మారుస్తుంది. అక్కడ ట్రాన్స్క్రిప్షన్ విఫలమైంది, కానీ వోకల్ పర్ఫార్మెన్స్ చాలా స్పష్టంగా ఉంది.
ఆ సందర్భం నాకు ఆచరణాత్మక పరిమితిని నేర్పింది. మ్యాచ్ రేట్ అనేది ఒక ప్రీ-ఫిల్టర్ మాత్రమే, తుది తీర్పు కాదు. తక్కువ స్కోరు వచ్చిన ఏ టేక్నైనా నేను పారేయడానికి ముందు పది సెకన్ల పాటు మానవ ఆడిషన్ చేస్తాను. ఆ సంఖ్య మీకు సంభావ్యతను (probability) చూపుతుంది, ఖచ్చితత్వాన్ని (certainty) కాదు. మీరు ఆ స్కోరును దిక్సూచి (compass) లా కాకుండా తీర్పు ఇచ్చే సుత్తి (gavel) లా భావిస్తే, మీరు మంచి సంగీతాన్ని వదిలేస్తారు.
ఒక సాంకేతిక అడ్డంకి
మీరు Apple Silicon పై MLXని ఉపయోగిస్తుంటే, పెద్ద బ్యాచ్లను ప్రాసెస్ చేసే ముందు మీ Python ఆర్కిటెక్చర్ను తనిఖీ చేయండి. Rosetta ఎమ్యులేషన్ ద్వారా Python బైనరీని రన్ చేయడం అనేది సాధారణంగా జరిగే సెటప్ పొరపాటు. స్క్రిప్ట్ ఇంకా రన్ అవుతుంది, కానీ లోకల్ ట్రాన్స్క్రిప్షన్ను సులభతరం చేసే హార్డ్వేర్ యాక్సిలరేషన్ను మీరు కోల్పోతారు.
మీ టెర్మినల్లో దీనిని రన్ చేయండి:
python3 -c "import platform; print(platform.machine())"
మీకు arm64 అని కనిపించాలి. ఒకవేళ x86_64 అని ప్రింట్ అయితే, మీ ఎన్విరాన్మెంట్ ఎమ్యులేట్ చేయబడినట్లు అర్థం. నేటివ్ Python బిల్డ్ లేదా నేటివ్ conda ఎన్విరాన్మెంట్కు మారండి, ఆపై mlx-whisperని మళ్ళీ ఇన్స్టాల్ చేయండి. పెద్ద బ్యాచ్ల విషయంలో, ఎమ్యులేటెడ్ మరియు నేటివ్ ఎగ్జిక్యూషన్ మధ్య తేడా అనేది, మధ్యాహ్న భోజనానికి ముందే పూర్తి చేయడం మరియు రాత్రి భోజనానికి ముందే పూర్తి చేయడం మధ్య ఉన్న తేడా వంటిది.
అసలైన విలువ
జనరేటివ్ ఆడియో పట్టుదలకు ప్రతిఫలాన్ని ఇస్తుంది, కానీ మానవ ఏకాగ్రత పరిమితమైనది. మీరు ఎంత నిశితంగా పరిశీలిస్తున్నారో నిరూపించుకోవడానికి కేవలం ముప్పై రెండు సాధారణ టేక్లను వినడంలో ఎటువంటి గొప్పతనం లేదు. జనరేటర్ మరియు నా చెవుల మధ్య mlx-whisperని ఉంచడం ద్వారా, నేను గంటల కొద్దీ ఏకాగ్రతతో కూడిన సృజనాత్మక సమయాన్ని తిరిగి పొందగలిగాను. ఏ పాట ఉండాలి, ఏది ఉండకూడదు అనేది నేను నిర్ణయిస్తాను. నేను ఆ నిర్ణయాన్ని ఉత్తమమైన అభ్యర్థులకు మాత్రమే వర్తింపజేస్తున్నానో లేదో యంత్రం కేవలం నిర్ధారిస్తుంది.
ఈ పైప్లైన్ వెనుక ఉన్న పూర్తి వివరాలు ఇక్కడ అందుబాటులో ఉన్నాయి. మీరు కూడా ఇలాంటి లోకల్ QA టూల్స్ను తయారు చేస్తున్నట్లయితే, నోట్స్ పంచుకోవడానికి GyaanSetu community ఒక మంచి ప్రదేశం.
