مقامی AI موسیقی کی تخلیق تخلیقی عمل سے پیمانہ ختم کر دیتی ہے۔ ACE-Step 1.5 جیسے ٹولز مکمل طور پر ایک Mac پر چل سکتے ہیں، جو ٹیکسٹ پرامپٹس کو منٹوں میں مکمل گانوں میں بدل دیتے ہیں، وہ بھی بغیر کسی کلاؤڈ کریڈٹ اور اپ لوڈ کی قطاروں کے۔ یہ آزادی ایک نیا مسئلہ پیدا کرتی ہے: حجم (volume)۔ جب تخلیق سستی اور فوری ہو جائے، تو آپ یہ پوچھنا بند کر دیتے ہیں کہ کیا آپ گانا بنا سکتے ہیں اور یہ سوچنے لگتے ہیں کہ آپ کی ڈرائیو پر موجود پچاس ورژنوں میں سے کون سا رکھنے کے قابل ہے۔
میں نے یہ مشکل طریقے سے سیکھا۔ ایک اوسط دن میں، مجھے ایک قابلِ ذکر ٹریک ڈھونڈنے کے لیے ACE-Step 1.5 سے تقریباً چار ٹیک (takes) کی ضرورت ہوتی ہے۔ لیکن اوسط (averages) جھوٹ بولتے ہیں۔ ایک حالیہ سیشن میں، میں نے ایک ہی ترتیب (arrangement) کے پیچھے بتیس ٹیکز تیار کیے۔ بتیس دو منٹ کے گانے سننا ایک گھنٹے سے زیادہ کا تنقیدی سماعت کا عمل ہے۔ ساتویں ٹریک تک، میرے کان دھندلے ہو جانے والے حروفِ علت (vowels) کو نظر انداز کرنے لگے تھے۔ پندرہویں تک، میں دھنوں کے ساتھ سر ہلا رہا تھا جبکہ مکمل طور پر گرے ہوئے الفاظ سے بے خبر تھا۔ سننے والے کی تھکن سستی نہیں ہے؛ یہ ادراک کی درستگی (perceptual accuracy) میں ایک حقیقی زوال ہے۔ مجھے ایک ایسے فلٹر کی ضرورت تھی جو میرے کانوں کے سننے سے پہلے کام کر سکے۔
چنانچہ میں نے mlx-whisper کے گرد ایک مقامی QA پائپ لائن بنائی، جو OpenAI کے اسپیچ ریکگنیشن ماڈل کا Apple Silicon کے لیے موزوں پورٹ ہے۔ خیال سادہ تھا: اگر میں ہر ٹیک کو خودکار طریقے سے ٹرانسکرائب کر سکوں اور اس کا اصل بول (lyrics) سے موازنہ کر سکوں، تو میرے پاس ایک معروضی lyric-match rate ہوگا۔ وہ نمبر بتیس ٹیکز کو کم کر کے چند قابلِ انتظام انتخاب تک محدود کر سکتا تھا۔
How the Pipeline Works
اس ورک فلو کے چار مراحل ہیں، اور میں ہر ایک کو غیر قابلِ بحث سمجھتا ہوں۔
تخلیق (Generate)۔ میں ACE-Step 1.5 کے ذریعے خام آڈیو تیار کرتا ہوں۔ میں اس مرحلے پر کسی چیز کا فیصلہ نہیں کرتا۔ مقصد صرف حجم (volume) حاصل کرنا ہے۔
ٹرانسکرائب (Transcribe)۔ ہر WAV فائل میرے Mac پر mlx-whisper میں جاتی ہے۔ چونکہ MLX کو Apple کے Metal اور نیورل انجن کے لیے بنایا گیا ہے، اس لیے یہ مکمل طور پر مقامی طور پر چلتا ہے۔ اس میں کوئی API لاگت، نیٹ ورک لیٹنسی (latency) اور خام آڈیو کو دور دراز کے سرور پر بھیجنے کے حوالے سے رازداری کے خدشات نہیں ہیں۔ جب میں کافی بنا رہا ہوتا ہوں، تب بتیس فائلوں کا بیچ (batch) ٹرانسکرائب ہو جاتا ہے۔
اسکور (Score)۔ میں Whisper کے ٹرانسکرپٹ کا اصل لیرک پرامپٹ سے موازنہ کرتا ہوں۔ میچ ریٹ وفاداری (fidelity) کی پیمائش کرتا ہے: کیا گلوکار نے ہر لفظ ادا کیا، یا اس نے لائنیں چھوڑ دیں، الفاظ کو لڑکھڑا دیا، یا حروف کی غلطی (hallucinate syllables) کی؟ میں فیصد کے حساب سے اوورلیپ (overlap) کا حساب لگاتا ہوں۔ یہ کوئی جمالیاتی فیصلہ نہیں ہے؛ یہ تحریری درستگی کا ایک سخت حساب کتاب ہے۔
فلٹر (Filter)۔ میں ٹیکز کو اس میچ ریٹ کے مطابق ترتیب دیتا ہوں۔ ٹاپ کوینٹائل (top quintile) میرا آڈیشن پول بن جاتا ہے۔ باقی سب کچھ ایک ثانوی فولڈر میں چلا جاتا ہے۔ میں نے کم اسکور والے ٹریکس کو ابھی تک ڈیلیٹ نہیں کیا ہے، لیکن میں ان پر سننے کا قیمتی وقت ضائع نہیں کرتا۔
Keep the Jury Independent
میں ایک سخت اصول پر عمل کرتا ہوں: تخلیقی ماڈل کبھی بھی اپنے کام کو خود اسکور نہیں کرتا۔ ACE-Step 1.5 اپنے ہی آؤٹ پٹ کا جائزہ نہیں لیتا۔ میں ٹرانسکرپشن کے لیے ایک بالکل الگ عمل استعمال کرتا ہوں کیونکہ جو ماڈل خود کو چیک کرتا ہے وہ ہمیشہ بہت نرم مزاج ہوتا ہے۔ اس کے اندھے کونے (blind spots) بھی وہی ہوتے ہیں۔ اگر جنریٹر جمع کے نشانات (plural markers) چھوڑنے یا سخت حروفِ صحیح (hard consonants) کو نرم کرنے کا رجحان رکھتا ہے، تو خودکار جائزہ لینے والا لوپ بھی انہی خامیوں کو نظر انداز کرنا سیکھ جائے گا۔ ایک آزاد اسپیچ ریکگنیشن ماڈل کی موسیقی سے کوئی وفاداری نہیں ہوتی۔ وہ صرف وہی بتاتا ہے جو وہ سنتا ہے، چاہے وہ رپورٹ کتنی ہی سخت کیوں نہ ہو۔
What the Numbers Revealed
بتیس ٹیکز کے بیچ میں، پائپ لائن نے انتخاب کو آٹھ امیدواروں تک محدود کر دیا جو سنجیدہ توجہ کے قابل تھے۔ ان آٹھ کا اوسط lyric-match rate 83.9% تھا۔ جب میں نے انہیں صحیح طریقے سے سنا اور اپنے معیار کے مطابق اسکور کیا، تو ان کا اوسط 100 میں سے 94.1 تھا۔ یہ فرق پوری کہانی بیان کرتا ہے۔ مشین کے گیٹ نے واضح ساختی ناکامیوں—جیسے بولوں کا گرنا، ٹائمنگ کا بگڑنا، اور آواز کی خرابیوں—کو پکڑ لیا، تاکہ میرا انسانی اسکورنگ پہلے سے صاف شدہ ڈیٹا پر کام کر سکے۔ آٹومیشن نے میرے فیصلے کی جگہ نہیں لی، بلکہ اسے محفوظ رکھا۔
When the Machine Misfires
کم اسکور کا مطلب ہمیشہ برا گانا نہیں ہوتا۔ مجھے اس کا احساس جلد ہی ہو گیا جب ایک ٹریک جسے میں پسند کرتا تھا، کٹ آف سے بہت نیچے اسکور کر گیا۔ بول ایک سادہ حروفِ تہجی کا ترانہ تھے: الگ الگ آوازوں کے طور پر گائے گئے حروف۔ Whisper کو قدرتی جملوں کی ساخت پر تربیت دی گئی ہے۔ اگر آپ اسے "A B C D" دیں گے تو یہ اکثر الفاظ ایجاد (hallucinate) کرتا ہے، آرٹیکلز شامل کرتا ہے، یا حروف کو بے ترتیب آوازوں میں بدل دیتا ہے۔ ٹرانسکرپشن ناکام ہو گئی، لیکن آواز کی کارکردگی درحقیقت بالکل واضح تھی۔
اس واقعے نے مجھے عملی حد سکھائی۔ میچ ریٹ ایک پری-فلٹر ہے، حتمی فیصلہ نہیں۔ کوئی بھی ٹیک جس کا اسکور کم ہو، اسے پھینکنے سے پہلے میں دس سیکنڈ کے لیے خود سنتا ہوں۔ نمبر آپ کو امکانات کی طرف اشارہ کرتا ہے، یقین کی طرف نہیں۔ اگر آپ اسکور کو قطب نما (compass) کے بجائے ہتھوڑے (gavel) کے طور پر لیں گے، تو آپ اچھا میوزک ضائع کر دیں گے۔
A Technical Speed Bump
اگر آپ Apple Silicon پر MLX چلا رہے ہیں، تو بڑے بیچز (batches) پر کارروائی کرنے سے پہلے اپنے Python آرکیٹیکچر (architecture) کو چیک کر لیں۔ سیٹ اپ کی ایک عام غلطی Rosetta emulation کے ذریعے Python بائنری چلانا ہے۔ اسکرپٹ پھر بھی چلے گا، لیکن آپ اس ہارڈ ویئر ایکسلریشن (hardware acceleration) سے محروم ہو جائیں گے جو لوکل ٹرانسکرپشن (local transcription) کو قابلِ عمل بناتا ہے۔
اسے اپنے ٹرمینل میں چلائیں:
python3 -c "import platform; print(platform.machine())"
آپ کو arm64 نظر آنا چاہیے۔ اگر یہ x86_64 پرنٹ کرتا ہے، تو اس کا مطلب ہے کہ آپ کا ماحول (environment) ایمولیٹڈ (emulated) ہے۔ کسی نیٹیو (native) Python بلڈ یا نیٹیو conda ماحول پر سوئچ کریں، پھر mlx-whisper کو دوبارہ انسٹال کریں۔ طویل بیچز کے معاملے میں، ایمولیٹڈ اور نیٹیو ایگزیکیوشن کے درمیان فرق، دوپہر کے کھانے سے پہلے کام ختم کرنے اور رات کے کھانے سے پہلے کام ختم کرنے کے درمیان فرق کے برابر ہے۔
اصل اہمیت
جنریٹیو آڈیو (Generative audio) مستقل مزاجی کا صلہ دیتی ہے، لیکن انسانی توجہ محدود ہے۔ صرف یہ ثابت کرنے کے لیے کہ آپ مکمل تفصیل سے کام کرتے ہیں، بتیس اوسط درجے کے ٹیکس (takes) سننے میں کوئی عظمت نہیں ہے۔ جنریٹر اور اپنے کانوں کے درمیان mlx-whisper کو رکھ کر، میں نے تخلیقی کام کے لیے گھنٹوں کا مرکوز وقت واپس حاصل کر لیا ہے۔ میں اب بھی یہ فیصلہ کرتا ہوں کہ کون سا گانا برقرار رہے گا اور کون سا ختم ہو جائے گا۔ مشین محض اس بات کو یقینی بناتی ہے کہ میں اپنا فیصلہ بہترین ممکنہ امیدواروں پر لاگو کر رہا ہوں۔
اس پائپ لائن (pipeline) کے پیچھے مکمل تفصیل یہاں دستیاب ہے۔ اگر آپ اس طرح کے مقامی QA ٹولز بنا رہے ہیں، تو GyaanSetu community معلومات کا تبادلہ کرنے کے لیے ایک بہترین جگہ ہے۔
