ਸਥਾਨਕ AI ਸੰਗੀਤ ਉਤਪਾਦਨ ਰਚਨਾਤਮਕਤਾ ਵਿੱਚੋਂ ਮਾਪਦੰਡਾਂ (meter) ਦੀ ਪਾਬੰਦੀ ਨੂੰ ਖਤਮ ਕਰ ਦਿੰਦਾ ਹੈ। ACE-Step 1.5 ਵਰਗੇ ਟੂਲ ਪੂਰੀ ਤਰ੍ਹਾਂ ਇੱਕ Mac 'ਤੇ ਚੱਲ ਸਕਦੇ ਹਨ, ਜੋ ਕਿ ਬਿਨਾਂ ਕਿਸੇ ਕਲਾਉਡ ਕ੍ਰੈਡਿਟ ਅਤੇ ਅਪਲੋਡ ਕਿਊ (queue) ਦੇ ਕੁਝ ਮਿੰਟਾਂ ਵਿੱਚ ਟੈਕਸਟ ਪ੍ਰੋਂਪਟਸ ਨੂੰ ਪੂਰੇ ਗੀਤਾਂ ਵਿੱਚ ਬਦਲ ਦਿੰਦੇ ਹਨ। ਉਹ ਆਜ਼ਾਦੀ ਇੱਕ ਨਵੀਂ ਸਮੱਸਿਆ ਨੂੰ ਜਨਮ ਦਿੰਦੀ ਹੈ: ਮਾਤਰਾ (volume)। ਜਦੋਂ ਉਤਪਾਦਨ ਸਸਤਾ ਅਤੇ ਤੁਰੰਤ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਇਹ ਪੁੱਛਣਾ ਬੰਦ ਕਰ ਦਿੰਦੇ ਹੋ ਕਿ ਕੀ ਤੁਸੀਂ ਗੀਤ ਬਣਾ ਸਕਦੇ ਹੋ ਅਤੇ ਇਹ ਸੋਚਣ ਲੱਗ ਜਾਂਦੇ ਹੋ ਕਿ ਤੁਹਾਡੀ ਡਰਾਈਵ 'ਤੇ ਮੌਜੂਦ ਪੰਜਾਹ ਵਰਜ਼ਨਾਂ ਵਿੱਚੋਂ ਕਿਹੜਾ ਰੱਖਣ ਯੋਗ ਹੈ।
ਮੈਂ ਇਹ ਬਹੁਤ ਮੁਸ਼ਕਲ ਤਰੀਕੇ ਨਾਲ ਸਿੱਖਿਆ। ਇੱਕ ਔਸਤ ਦਿਨ ਵਿੱਚ, ਮੈਨੂੰ ਇੱਕ ਵਧੀਆ ਟੇਕ (keeper) ਲੱਭਣ ਲਈ ACE-Step 1.5 ਤੋਂ ਲਗਭਗ ਚਾਰ ਟੇਕਾਂ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਪਰ ਔਸਤ ਝੂਠ ਬੋਲਦੀ ਹੈ। ਇੱਕ ਹਾਲੀਆ ਸੈਸ਼ਨ ਵਿੱਚ, ਮੈਂ ਇੱਕ ਸਿੰਗਲ ਅਰੇਂਜਮੈਂਟ (arrangement) ਦੇ ਪਿੱਛੇ ਬੱਤੀ ਟੇਕ ਤਿਆਰ ਕੀਤੇ। ਬੱਤੀ ਦੋ-ਮਿੰਟ ਦੇ ਗੀਤ ਸੁਣਨਾ ਇੱਕ ਘੰਟੇ ਤੋਂ ਵੱਧ ਦਾ ਗੰਭੀਰ ਸੁਣਨ ਦਾ ਕੰਮ ਹੈ। ਸੱਤਵੇਂ ਟ੍ਰੈਕ ਤੱਕ, ਮੇਰੇ ਕੰਨ ਫੈਲੇ ਹੋਏ ਸਵਰਾਂ (vowels) ਨੂੰ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਨ ਲੱਗ ਪਏ ਸਨ। ਪੰਦਰਵੇਂ ਤੱਕ, ਮੈਂ ਸ਼ਬਦਾਂ ਦੇ ਗਾਇਬ ਹੋਣ ਨੂੰ ਪੂਰੀ ਤਰ੍ਹਾਂ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹੋਏ ਮੈਲੋਡੀਜ਼ ਦੇ ਨਾਲ ਸਿਰ ਹਿਲਾ ਰਿਹਾ ਸੀ। ਸੁਣਨ ਵਾਲੀ ਥਕਾਵਟ (listener fatigue) ਆਲਸ ਨਹੀਂ ਹੈ; ਇਹ ਪ੍ਰਤਿਭਾਗਮਕ ਸ਼ੁੱਧਤਾ (perceptual accuracy) ਵਿੱਚ ਇੱਕ ਅਸਲ ਗਿਰਾਵਟ ਹੈ। ਮੈਨੂੰ ਇੱਕ ਅਜਿਹੇ ਫਿਲਟਰ ਦੀ ਲੋੜ ਸੀ ਜੋ ਮੇਰੇ ਕੰਨਾਂ ਦੇ ਸੁਣਨ ਤੋਂ ਪਹਿਲਾਂ ਚੱਲ ਸਕੇ।
ਇਸ ਲਈ ਮੈਂ mlx-whisper ਦੇ ਆਲੇ-ਦੁਆਲੇ ਇੱਕ ਸਥਾਨਕ QA ਪਾਈਪਲਾਈਨ ਬਣਾਈ, ਜੋ ਕਿ OpenAI ਦੇ ਸਪੀਚ-ਰਿਕਾਰਨੀਸ਼ਨ ਮਾਡਲ ਦਾ Apple Silicon-optimized ਪੋਰਟ ਹੈ। ਵਿਚਾਰ ਸਧਾਰਨ ਸੀ: ਜੇਕਰ ਮੈਂ ਹਰ ਟੇਕ ਨੂੰ ਆਪਣੇ ਆਪ ਟ੍ਰਾਂਸਕ੍ਰਾਈਬ (transcribe) ਕਰ ਸਕਦਾ ਹਾਂ ਅਤੇ ਇਸਦੀ ਤੁਲਨਾ ਅਸਲ ਲਿਰਿਕਸ (lyrics) ਨਾਲ ਕਰ ਸਕਦਾ ਹਾਂ, ਤਾਂ ਮੇਰੇ ਕੋਲ ਇੱਕ ਨਿਰਪੱਖ ਲਿਰਿਕ-ਮੈਚ ਰੇਟ ਹੋਵੇਗਾ। ਉਹ ਨੰਬਰ ਬੱਤੀ ਟੇਕਾਂ ਨੂੰ ਘਟਾ ਕੇ ਕੁਝ ਪ੍ਰਬੰਧਨਯੋਗ (manageable) ਗਿਣਤੀ ਵਿੱਚ ਲਿਆ ਸਕਦਾ ਸੀ।
ਪਾਈਪਲਾਈਨ ਕਿਵੇਂ ਕੰਮ ਕਰਦੀ ਹੈ
ਵਰਕਫਲੋ ਦੇ ਚਾਰ ਪੜਾਅ ਹਨ, ਅਤੇ ਮੈਂ ਹਰੇਕ ਨੂੰ ਅਟੱਲ (non-negotiable) ਮੰਨਦਾ ਹਾਂ।
Generate (ਤਿਆਰ ਕਰਨਾ)। ਮੈਂ ACE-Step 1.5 ਨਾਲ ਰਅਅ (raw) ਆਡੀਓ ਬਣਾਉਂਦਾ ਹਾਂ। ਮੈਂ ਇਸ ਪੜਾਅ 'ਤੇ ਕਿਸੇ ਵੀ ਚੀਜ਼ ਦਾ ਫੈਸਲਾ ਨਹੀਂ ਕਰਦਾ। ਮਕਸਦ ਮਾਤਰਾ (volume) ਪ੍ਰਾਪਤ ਕਰਨਾ ਹੈ।
Transcribe (ਲਿਖਤ ਵਿੱਚ ਬਦਲਣਾ)। ਹਰ WAV ਫਾਈਲ ਮੇਰੇ Mac 'ਤੇ mlx-whisper ਵਿੱਚ ਜਾਂਦੀ ਹੈ। ਕਿਉਂਕਿ MLX ਨੂੰ Apple ਦੇ Metal ਅਤੇ ਨਿਊਰਲ ਇੰਜਣ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਇਹ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਚੱਲਦਾ ਹੈ। ਇਸ ਵਿੱਚ ਕੋਈ API ਲਾਗਤ, ਕੋਈ ਨੈੱਟਵਰਕ ਲੇਟੈਂਸੀ (latency), ਅਤੇ ਰਿਮੋਟ ਸਰਵਰ 'ਤੇ ਰਅਅ ਆਡੀਓ ਭੇਜਣ ਬਾਰੇ ਕੋਈ ਪ੍ਰਾਈਵੇਸੀ ਚਿੰਤਾ ਨਹੀਂ ਹੈ। ਜਦੋਂ ਤੱਕ ਮੈਂ ਕੌਫੀ ਬਣਾਉਂਦਾ ਹਾਂ, ਬੱਤੀ-ਫਾਈਲਾਂ ਦਾ ਬੈਚ ਟ੍ਰਾਂਸਕ੍ਰਾਈਬ ਹੋ ਜਾਂਦਾ ਹੈ।
Score (ਅੰਕ ਦੇਣਾ)। ਮੈਂ Whisper ਦੇ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟ ਦੀ ਤੁਲਨਾ ਅਸਲ ਲਿਰਿਕ ਪ੍ਰੋਂਪਟ ਨਾਲ ਕਰਦਾ ਹਾਂ। ਮੈਚ ਰੇਟ ਵਫ਼ਾਦਾਰੀ (fidelity) ਨੂੰ ਮਾਪਦਾ ਹੈ: ਕੀ ਗਾਇਕ ਨੇ ਹਰ ਸ਼ਬਦ ਸਹੀ ਬੋਲਿਆ, ਜਾਂ ਕੀ ਉਸਨੇ ਲਾਈਨਾਂ ਛੱਡ ਦਿੱਤੀਆਂ, ਸ਼ਬਦਾਂ ਨੂੰ ਲਗਾ ਦਿੱਤਾ, ਜਾਂ ਸਿਲੇਬਲ (syllables) ਵਿੱਚ ਗਲਤੀ ਕੀਤੀ? ਮੈਂ ਪ੍ਰਤੀਸ਼ਤ ਓਵਰਲੈਪ ਦੀ ਗਣਨਾ ਕਰਦਾ ਹਾਂ। ਇਹ ਕੋਈ ਸੁੰਦਰਤਾ ਦਾ ਫੈਸਲਾ ਨਹੀਂ ਹੈ; ਇਹ ਟੈਕਸਟ ਦੀ ਸ਼ੁੱਧਤਾ ਦਾ ਇੱਕ ਸਖ਼ਤ ਹਿਸਾਬ ਹੈ।
Filter (ਛਾਂਟਣਾ)। ਮੈਂ ਮੈਚ ਰੇਟ ਦੇ ਅਧਾਰ 'ਤੇ ਟੇਕਾਂ ਨੂੰ ਵੱਖ ਕਰਦਾ ਹਾਂ। ਸਭ ਤੋਂ ਉੱਪਰਲੇ ਪੰਜਵੇਂ ਹਿੱਸੇ (top quintile) ਨੂੰ ਮੈਂ ਆਪਣੇ ਆਡੀਸ਼ਨ ਪੂਲ ਵਜੋਂ ਵਰਤਦਾ ਹਾਂ। ਬਾਕੀ ਸਭ ਕੁਝ ਇੱਕ ਸੈਕੰਡਰੀ ਫੋਲਡਰ ਵਿੱਚ ਚਲਾ ਜਾਂਦਾ ਹੈ। ਮੈਂ ਘੱਟ ਅੰਕ ਵਾਲੇ ਟੇਕਾਂ ਨੂੰ ਅ
ਜੇਕਰ ਤੁਸੀਂ Apple Silicon 'ਤੇ MLX ਚਲਾ ਰਹੇ ਹੋ, ਤਾਂ ਵੱਡੇ ਬੈਚਾਂ ਨੂੰ ਪ੍ਰੋਸੈਸ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਆਪਣੇ Python ਆਰਕੀਟੈਕਚਰ ਦੀ ਜਾਂਚ ਕਰੋ। ਇੱਕ ਆਮ ਸੈੱਟਅੱਪ ਗਲਤੀ Rosetta emulation ਰਾਹੀਂ Python binary ਚਲਾਉਣਾ ਹੈ। ਸਕ੍ਰਿਪਟ ਫਿਰ ਵੀ ਚੱਲੇਗੀ, ਪਰ ਤੁਸੀਂ ਉਸ ਹਾਰਡਵੇਅਰ ਐਕਸਲੇਰੇਸ਼ਨ ਨੂੰ ਗੁਆ ਦੇਵੋਗੇ ਜੋ ਲੋਕਲ ਟ੍ਰਾਂਸਕ੍ਰਿਪਸ਼ਨ ਨੂੰ ਸਹਿਣਯੋਗ ਬਣਾਉਂਦੀ ਹੈ।
ਇਸਨੂੰ ਆਪਣੇ terminal ਵਿੱਚ ਚਲਾਓ:
python3 -c "import platform; print(platform.machine())"
ਤੁਸੀਂ arm64 ਦੇਖਣਾ ਚਾਹੁੰਦੇ ਹੋ। ਜੇਕਰ ਇਹ x86_64 ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ, ਤਾਂ ਤੁਹਾਡਾ environment emulated ਹੈ। ਇੱਕ native Python build ਜਾਂ native conda environment 'ਤੇ ਸਵਿੱਚ ਕਰੋ, ਫਿਰ mlx-whisper ਨੂੰ ਦੁਬਾਰਾ ਇੰਸਟਾਲ ਕਰੋ। ਲੰਬੇ ਬੈਚਾਂ ਦੇ ਮਾਮਲੇ ਵਿੱਚ, emulated ਅਤੇ native execution ਦੇ ਵਿਚਕਾਰ ਫਰਕ, ਦੁਪਹਿਰ ਦੇ ਖਾਣੇ ਤੋਂ ਪਹਿਲਾਂ ਕੰਮ ਖਤਮ ਕਰਨ ਅਤੇ ਰਾਤ ਦੇ ਖਾਣੇ ਤੋਂ ਪਹਿਲਾਂ ਕੰਮ ਖਤਮ ਕਰਨ ਦੇ ਵਿਚਕਾਰਲੇ ਫਰਕ ਵਰਗਾ ਹੈ।
ਅਸਲੀ ਮੁੱਲ
Generative audio ਲਗਾਤਾਰ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਵਾਲਿਆਂ ਨੂੰ ਫਲ ਦਿੰਦਾ ਹੈ, ਪਰ ਮਨੁੱਖੀ ਧਿਆਨ ਸੀਮਤ ਹੈ। ਸਿਰਫ਼ ਇਹ ਸਾਬਤ ਕਰਨ ਲਈ ਕਿ ਤੁਸੀਂ ਬਹੁਤ ਬਾਰੀਕੀ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹੋ, ਬੱਤੀ ਮੱਧਮ takes ਸੁਣਨ ਵਿੱਚ ਕੋਈ ਮਾਣ ਨਹੀਂ ਹੈ। Generator ਅਤੇ ਆਪਣੇ ਕੰਨਾਂ ਦੇ ਵਿਚਕਾਰ mlx-whisper ਨੂੰ ਰੱਖ ਕੇ, ਮੈਂ ਕਲਾਤਮਕ ਕੰਮ ਲਈ ਕਈ ਘੰਟਿਆਂ ਦਾ ਇਕਾਗਰ ਸਮਾਂ ਵਾਪਸ ਜਿੱਤ ਲਿਆ ਹੈ। ਮੈਂ ਅਜੇ ਵੀ ਫੈਸਲਾ ਕਰਦਾ ਹਾਂ ਕਿ ਕਿਹੜਾ ਗੀਤ ਰਹਿਣਾ ਹੈ ਅਤੇ ਕਿਹੜਾ ਖਤਮ ਹੋਣਾ ਹੈ। ਮਸ਼ੀਨ ਸਿਰਫ਼ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਮੈਂ ਉਹ ਫੈਸਲਾ ਸਭ ਤੋਂ ਵਧੀਆ ਉਮੀਦਵਾਰਾਂ 'ਤੇ ਲਾ ਰਿਹਾ ਹਾਂ।
ਇਸ pipeline ਦੇ ਪਿੱਛੇ ਪੂਰੀ ਜਾਣਕਾਰੀ ਇੱਥੇ ਉਪਲਬਧ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਅਜਿਹੇ ਸਮਾਨ ਲੋਕਲ QA ਟੂਲ ਬਣਾ ਰਹੇ ਹੋ, ਤਾਂ GyaanSetu community ਨੋਟਸ ਸਾਂਝੇ ਕਰਨ ਲਈ ਇੱਕ ਵਧੀਆ ਜਗ੍ਹਾ ਹੈ।
