सीड-वीसी(Seed-VC) क्या है?
परिचय
GitHub के अनुसार, सीड-वीसी एक ज़ीरो-शॉट वॉयस चेंजर और सिंगिंग वॉयस कन्वर्जन टूल है जो बिना किसी ट्रेनिंग के 1-30 सेकंड की ऑडियो सैंपल का उपयोग करके आवाज को क्लोन कर सकता है। वर्तमान में रिलीज़ किए गए मॉडल पिछले वॉयस कन्वर्जन मॉडल की तुलना में बेहतर स्पीच क्लैरिटी और स्पीकर सिमिलैरिटी प्रदान करते हैं।
मूल्यांकन में, LibriTTS डेटासेट से ऑडियो का उपयोग करके दो बेसलाइन मॉडल (ओपनवॉइस और कोज़ीवॉइस) के साथ तुलना करने पर, सीड-वीसी ने इंटेलिजिबिलिटी (क्लैरिटी) और स्पीकर सिमिलैरिटी दोनों के मामले में बेहतर परिणाम दिए।
संक्षेप में, सीड-वीसी को वॉयस कन्वर्जन और क्लोनिंग टेक्नोलॉजी में अन्य मॉडल की तुलना में बेहतर प्रदर्शन देने वाला बताया गया है।
आज, हम विंडोज पीसी पर इस सीड-वीसी को इंस्टॉल करेंगे। इससे पहले, मैं सीड-वीसी के मूल्यांकन के तरीके के बारे में बताऊंगा। कमांड की संख्या अधिक होने से शुरुआती लोगों के लिए थोड़ा मुश्किल हो सकता है। इसलिए, पहले इसे आसानी से समझने के लिए, मैं ग्रेडियो का उपयोग करके जीयूआई (ग्राफिकल यूजर इंटरफ़ेस) के माध्यम से इसे चलाने का तरीका सुझाता हूं, लेकिन मूल्यांकन विधि (मूल्यांकन) और उपयोग विधि (उपयोग) का भी वर्णन करता हूं।
1. सीड-वीसी का मूल्यांकन विधि
सीड-वीसी में, वॉयस कन्वर्जन परिणामों का मूल्यांकन करने के लिए कई तकनीकों और मॉडल का उपयोग किया जाता है। विशेष रूप से, अन्य “नॉन-जीरो-शॉट” मॉडल (उदाहरण के लिए, पहले से विशिष्ट स्पीकर के साथ प्रशिक्षित मॉडल) की तुलना में, सीड-वीसी बेहतर परिणाम देने में सक्षम है।
जीरो-शॉट मॉडल क्या हैं?
आम तौर पर, वॉयस कन्वर्जन मॉडल को पहले से विशिष्ट स्पीकर की आवाजों के साथ प्रशिक्षित किया जाता है, लेकिन जीरो-शॉट मॉडल को ट्रेनिंग की आवश्यकता नहीं होती है और वे पहली बार सुनाई देने वाले स्पीकर की आवाज को भी क्लोन या कनवर्ट कर सकते हैं। सीड-वीसी एक जीरो-शॉट कन्वर्जन मॉडल है।
सोवीआईटीएस मॉडल के साथ तुलना
इसकी तुलना अन्य वॉयस कन्वर्जन मॉडल (सोवीआईटीएस) से की गई है। विशेष रूप से, “टोकाई टीओ”, “मतिकाने ताननहॉसर”, “मिल्की ग्रीन” जैसे मॉडल के नाम सामने आते हैं। ये वॉयस कन्वर्जन फील्ड में इस्तेमाल होने वाले विशिष्ट मॉडल हैं।
मूल्यांकन को पुन: पेश करने का तरीका
प्रदान किए गए eval.py स्क्रिप्ट का उपयोग करके, आप स्वयं मूल्यांकन को फिर से प्रस्तुत कर सकते हैं। मूल्यांकन में फेसबुक के हबर्ट मॉडल और रीसेंब्लाइज़र नामक टूल का उपयोग किया जाता है, और इनका उपयोग वॉयस कन्वर्जन परिणामों की गुणवत्ता का मूल्यांकन करने के लिए किया जाता है।
eval.py को चलाने के तरीके (मूल्यांकन को दोहराने के चरण)
eval.py का उपयोग करके आप सीड-वीसी के वॉयस कन्वर्जन का मूल्यांकन फिर से कर सकते हैं। यहां इसके चरण दिए गए हैं।
eval.py
--source ./examples/libritts-test-clean
--target ./examples/reference
--output ./examples/eval/converted
--diffusion-steps 25
--length-adjust 1.0
--inference-cfg-rate 0.7
--xvector-extractor "resemblyzer"
--baseline "" # ओपनवॉयस या कोजीवॉइस का इस्तेमाल करना चाहते हैं तो यहां भरें
--max-samples 100 # अधिकतम 100 ऑडियो सैंपल के साथ मूल्यांकन
प्रत्येक विकल्प का अर्थ:
- source: कनवर्ट करने के लिए मूल ऑडियो फाइल।
- target: लक्ष्य आवाज के लिए संदर्भ ऑडियो फाइल।
- output: कन्वर्ज़न परिणाम सहेजने के लिए डिरेक्टरी।
- diffusion-steps: वॉयस कन्वर्जन की सटीकता को नियंत्रित करने वाली कदम संख्या। चरणों की संख्या बढ़ाने से गुणवत्ता बढ़ जाती है, लेकिन प्रोसेसिंग समय भी बढ़ जाता है।
- length-adjust: ऑडियो की लंबाई को समायोजित करता है। 1.0 मूल लंबाई है। छोटा करने के लिए <1.0, लंबा करने के लिए >1.0 सेट करें।
- xvector-extractor: स्पीकर विशेषता निष्कर्षण के लिए उपयोग किया जाने वाला मॉडल (Resemblyzer)।
- baseline: अन्य मॉडल (OpenVoice या CosyVoice) के साथ तुलना संभव है।
2. उपयोग विधि
इस भाग में, सीड-वीसी का वास्तव में उपयोग करने का तरीका बताया गया है। विशेष रूप से, कमांड लाइन का उपयोग करके ऑडियो को कनवर्ट करने का तरीका विस्तार से बताया गया है।
कमांड लाइन के साथ वॉयस कन्वर्जन चरण
python inference.py --source <source-wav>
--target <referene-wav>
--output <output-dir>
--diffusion-steps 25 # वॉयस कन्वर्जन के लिए 25, सिंगिंग वॉयस कन्वर्जन के लिए 50-100 की सिफारिश की जाती है
--length-adjust 1.0
--inference-cfg-rate 0.7
--f0-condition False # सिंगिंग वॉयस कन्वर्जन के मामले में True
--auto-f0-adjust False # सामान्य रूप से False लेकिन पिच के स्वचालित समायोजन के लिए True
--semi-tone-shift 0 # सेमीटोन इकाई में पिच एडजस्ट करने के लिए
विकल्पों का विवरण:
- source: कनवर्ट करने के लिए स्रोत ऑडियो फ़ाइल।
- target: रेफरेंस ऑडियो फ़ाइल (लक्षित आवाज)।
- output: परिणाम सहेजने के लिए फ़ोल्डर।
- diffusion-steps: वॉयस कन्वर्जन की सटीकता तय करने वाली कदम संख्या। 25 मानक है, और सिंगिंग वॉयस कन्वर्जन के लिए 50-100 कदम अनुशंसित हैं।
- length-adjust: ऑडियो की लंबाई समायोजित करने का विकल्प। डिफ़ॉल्ट 1.0 है अर्थात मूल लंबाई। गति बढ़ाने के लिए <1.0, धीमा करने के लिए >1.0 ।
- inference-cfg-rate: आउटपुट परिणाम के सूक्ष्म समायोजन के लिए उपयोग किया जाने वाला विकल्प। डिफ़ॉल्ट 0.7 है।
- f0-condition: आउटपुट ऑडियो की पिच को स्रोत ऑडियो से मिलान करना है या नहीं। सिंगिंग वॉयस कन्वर्जन के मामले में True इस्तेमाल करता है।
- auto-f0-adjust: सोर्स पिच को स्वचालित रूप से लक्षित आवाज के पिच में समायोजित करने का विकल्प (आमतौर पर सिंगिंग वॉयस कन्वर्जन में इस्तेमाल नहीं होता)।
- semi-tone-shift: सेमीटोन यूनिट में पिच को एडजस्ट करने का विकल्प। सिंगिंग वॉयस कन्वर्जन में, सेमी-टोन यूनिट में आवाज की ऊंचाई को समायोजित करने के लिए इस्तेमाल किया जाता है।
3. इंस्टालेशन चरण
इसे बाद में समझाया जाएगा, लेकिन ग्रेडियो (Gradio) के मामले में भी आवश्यक पैकेज इंस्टॉल करने के लिए pip install -r requirements.txt
का उपयोग करना होगा। साथ ही, पायथन 3.10 की सिफारिश की जाती है।
इस विवरण में, सीड-वीसी के मूल्यांकन विधि और वास्तविक वॉयस कन्वर्जन के उपयोग का तरीका बताया गया है। मूल्यांकन प्रक्रिया का उपयोग करके, अन्य मॉडलों की तुलना करते हुए वॉयस कन्वर्जन की गुणवत्ता की पुष्टि की जा सकती है। वास्तव में प्रोजेक्ट को चलाते समय, निर्दिष्ट विकल्पों को उचित रूप से सेट करते हुए, ऑडियो को रूपांतरित करने का प्रयास करें।
आदेशों में थोड़ा कमजोर लोगों के लिए, ग्रेडियो (Gradio) को चलाने का तरीका भी बताया जाएगा। ग्रेडियो का उपयोग करके, कमांड लाइन के बजाय वेब ब्राउज़र के माध्यम से आसानी से वॉयस कन्वर्जन की कोशिश कर सकते हैं, जो शुरुआती लोगों के लिए बह
ग्रेडियो का उपयोग कैसे करें
ग्रेडियो एक ऐसा टूल है जिससे पायथन कोड को आसानी से वेब एप्लीकेशन के रूप में प्रकाशित किया जा सकता है। सीड-वीसी भी ग्रेडियो का उपयोग करके वॉयस कन्वर्जन फंक्शन को आसानी से एक्सीक्यूट कर सकता है। अच्छी बात यह है कि आपको कमांड याद रखने या टर्मिनल का उपयोग करने की आवश्यकता नहीं है। नीचे से हम ग्रेडियो के साथ इसे कैसे चलाया जाए, यह दिखाएंगे।
1. गिट रिपॉजिटरी को क्लोन (कॉपी) करने का तरीका
गिट रिपॉजिटरी को क्लोन करने का मतलब है, इंटरनेट पर मौजूद प्रोजेक्ट के फाइल्स और कोड को अपने कंप्यूटर पर कॉपी करना। गिटहब पर कई प्रोजेक्ट्स पब्लिश किए गए हैं, जिनमें से एक सीड-वीसी है।
सबसे पहले, निम्न कमांड का उपयोग करें:
git clone https://github.com/Plachtaa/seed-vc.git
कमांड की व्याख्या:
- git: यह गिट नामक वर्जन कंट्रोल टूल का उपयोग करने के लिए एक कमांड है।
- clone: यह रिपॉजिटरी को क्लोन (कॉपी) करने का निर्देश है।
- https://github.com/Plachtaa/seed-vc.git: यह वह रिपॉजिटरी URL है जिसे क्लोन करना है। रिपॉजिटरी वह स्थान है जहां उस प्रोजेक्ट की सभी फाइलें और परिवर्तन इतिहास संग्रहीत होते हैं।
इस कमांड को एक्सीक्यूट करने पर, सीड-वीसी प्रोजेक्ट आपके कंप्यूटर पर डाउनलोड हो जाएगा, और seed-vc नाम का एक फोल्डर आपके वर्तमान कार्य निर्देशिका में बन जाएगा।
एक्सीक्यूशन स्टेप्स:
- कमांड लाइन (विंडोज के लिए पावरशेल या कमांड प्रॉम्प्ट, macOS या Linux के लिए टर्मिनल) खोलें।
- ऊपर दिए गए कमांड को इनपुट करें और एंटर कुंजी दबाएं।
इससे सीड-वीसी का कोड आपके कंप्यूटर पर कॉपी हो जाएगा। वास्तव में, VS Code सबसे सुविधाजनक और उपयोग करने में आसान है।
2. पायथन के वर्जन के बारे में: पायथन 3.10 आवश्यक है
सीड-वीसी को चलाने के लिए, पायथन नामक प्रोग्रामिंग भाषा की आवश्यकता होती है। ऐसा GitHub के पेज पर लिखा है। पायथन बहुत लचीला है और कई प्रोजेक्ट्स में इस्तेमाल किया जाता है, लेकिन वर्जन के आधार पर इसका व्यवहार भिन्न हो सकता है।
Suggested python 3.10 का क्या मतलब है?
सीड-वीसी प्रोजेक्ट में, पायथन 3.10 की सिफारिश की जाती है। इसका मतलब है कि पायथन के 3.10 वर्जन पर इसे चलाना सबसे अच्छा है, और अन्य वर्जन पर त्रुटियां हो सकती हैं। यदि वर्जन अलग है, तो इंस्टालेशन को फिर से करने के बजाय pyenv का उपयोग करना भी एक तरीका है।
पायथन इंस्टालेशन स्टेप्स:
यदि पायथन 3.10 इंस्टॉल नहीं है, तो इसे निम्न चरणों का पालन करके इंस्टॉल किया जा सकता है (नए उपयोगकर्ताओं के लिए)।
- पायथन आधिकारिक वेबसाइट पर जाएं।
- अपने कंप्यूटर के ऑपरेटिंग सिस्टम (विंडोज, मैकओएस, लिनक्स आदि) के अनुसार इंस्टॉलर डाउनलोड करें।
- इंस्टालेशन के दौरान, “Add Python 3.x to PATH” नामक चेकबॉक्स दिखाई देगा, इसे अवश्य चेक करें (इससे पायथन को आसानी से इस्तेमाल किया जा सकता है)।
- इंस्टालेशन के बाद, कमांड लाइन में निम्न कमांड इनपुट करके जांचें कि पायथन 3.10 सही से इंस्टॉल हुआ है या नहीं।
python --version
यदि पायथन 3.10.x वर्जन दिखाई देता है, तो यह सफलतापूर्वक इंस्टॉल हो गया है।
3. सीड-वीसी प्रोजेक्ट सेटअप को आगे बढ़ाना
क्लोनिंग पूरी होने और पायथन 3.10 इंस्टॉल हो जाने के बाद, अगला कदम requirements.txt फाइल में लिखे आवश्यक पैकेजों को इंस्टॉल करना होगा।
1. requirements.txt फाइल की सामग्री का विवरण
सबसे पहले, requirements.txt के अंदर देखें तो निम्न विवरण मिलेगा। इसके बारे में बताया गया है।
–extra-index-url https://download.pytorch.org/whl/cu113
torch
torchvision
torchaudio
scipy==1.13.1
librosa==0.10.2
huggingface-hub
munch
einops
descript-audio-codec
git+https://github.com/openai/whisper.git
gradio
pydub
resemblyzer
jiwer
transformers
onnxruntime
पैकेज का विवरण
–extra-index-url: यह PyTorch के एक विशेष संस्करण को डाउनलोड करने के लिए URL है। PyTorch एक मशीन लर्निंग और डीप लर्निंग फ्रेमवर्क है, जिसका उपयोग सीड-वीसी की वॉयस कन्वर्जन फंक्शन में किया जाता है।
torch, torchvision, torchaudio: ये PyTorch से संबंधित पैकेज हैं, जो ऑडियो और इमेज प्रोसेसिंग में सहायता करते हैं।
scipy, librosa: वैज्ञानिक गणना और ऑडियो विश्लेषण के लिए उपयोग किए जाने वाले पैकेज।
huggingface-hub, transformers: ये NLP (नेचुरल लैंग्वेज प्रोसेसिंग) में प्रसिद्ध हगिंग फेस के पैकेज हैं, जो मशीन लर्निंग मॉडल के प्रबंधन और एक्सीक्यूशन के लिए उपयोग किए जाते हैं।
munch, einops, descript-audio-codec: डेटा मैनिपुलेशन और ट्रांसफॉर्मेशन के लिए उपयोग किए जाने वाले पैकेज।
git+https://github.com/openai/whisper.git: यह OpenAI के व्हिस्पर प्रोजेक्ट से सीधे लाइब्रेरी को प्राप्त करता है। यह स्पीच रेकग्निशन फंक्शन प्रदान करता है।
gradio: एक टूल जिससे आसानी से वेब इंटरफ़ेस बनाया जा सकता है। सीड-वीसी के डेमो और ऑपरेशन को आसान बनाने के लिए इसका उपयोग किया जाता है।
pydub: ऑडियो फाइल मैनिपुलेशन के लिए उपयोग किया जाने वाला पैकेज।
resemblyzer, jiwer: ऑडियो सिमिलैरिटी इवैल्यूएशन और स्पीच रेकग्निशन रिजल्ट इवैल्यूएशन के लिए उपयोग किया जाता है।
onnxruntime: मशीन लर्निंग मॉडल को कुशलता से एक्सीक्यूट करने के लिए एक टूल।
2. requirements.txt का उपयोग करके पैकेज इंस्टॉल करने के चरण
अगला, इस फाइल में लिखे हुए पैकेज को इंस्टॉल करने के चरणों का विवरण दिया गया है।
स्टेप्स:
- पायथन वर्चुअल एनवायरनमेंट बनाना (अनुशंसित)
वर्चुअल एनवायरनमेंट का उपयोग करके, आप प्रोजेक्ट के आधार पर अलग-अलग पायथन वर्जन या लाइब्रेरी इंस्टॉल कर सकते हैं। इससे अन्य प्रोजेक्ट्स के साथ कोई विरोधाभास नहीं होता है। इसका मतलब है कि आपका कंप्यूटर अस्त-व्यस्त नहीं होगा। वर्चुअल एनवायरनमेंट बनाने के लिए, निम्न कमांड का उपयोग करें:
python -m venv venv
इससे प्रोजेक्ट फोल्डर में venv नामक एक वर्चुअल एनवायरनमेंट बन जाएगा।
- वर्चुअल एनवायरनमेंट को एक्टिवेट करना
वर्चुअल एनवायरनमेंट को एक्टिवेट करने के लिए, निम्न कमांड का उपयोग करें:
- विंडोज के लिए:
.\venv\Scripts\activate
(VS Code में केवलvenv\Scripts\activate
भी काम करता है) - मैकओएस/लिनक्स के लिए:
source venv/bin/activate
वर्चुअल एनवायरनमेंट एक्टिवेट होने पर, कमांड लाइन के बाईं ओर (venv) दिखाई देना चाहिए।
- requirements.txt का उपयोग करके पैकेज इंस्टॉल करना
वर्चुअल एनवायरनमेंट एक्टिवेट होने के बाद, निम्न कमांड को एक्सीक्यूट करें:
pip install -r requirements.txt
इससे requirements.txt में लिखे हुए सभी पैकेज स्वचालित रूप से इंस्टॉल हो जाएंगे।
3. इंस्टॉलेशन के दौरान ट्रबलशूटिंग
यदि कोई समस्या आती है, तो कुछ समाधान यहां दिए गए हैं।
एरर होने की स्थिति में:
कुछ विशिष्ट पैकेज इंस्टॉल नहीं हो पा सकते हैं। ऐसे में, संदेश को देखें और अनुपस्थित निर्भरता पैकेजों (जैसे C++ बिल्ड टूल्स) को इंस्टॉल करें। आवश्यक टूल्स को इंस्टॉल करना एक सामान्य प्रक्रिया है, जैसा कि पहले Visual C++ Build Tools के बारे में बताया गया था। वास्तव में जो एरर आया था उसे नीचे दिखाया गया है।
CUDAसंबंधी एरर:
PyTorch के कुछ संस्करण GPU (CUDA) का उपयोग करते हैं। यदि CUDA उपलब्ध नहीं है, तो PyTorch के अलग संस्करण (CPU के लिए) को इंस्टॉल करने की आवश्यकता हो सकती है। यदि CUDA की आवश्यकता नहीं है, तो इसे निम्न प्रकार से बदला जा सकता है। वास्तव में इसे आजमाया गया था लेकिन यह काफी धीमा था।
–extra-index-url https://download.pytorch.org/whl/cpu
4. अंत में
इससे requirements.txt का उपयोग करके आवश्यक लाइब्रेरी इंस्टॉल हो जानी चाहिए। सीड-वीसी प्रोजेक्ट की तैयारी हो गई है, अब हम वास्तव में प्रोजेक्ट चलाने के चरणों पर आगे बढ़ेंगे।
वास्तव में आए एरर का विवरण
DEPRECATION: webrtcvad is being installed using the legacy ‘setup.py install’ method, because it does not have a ‘pyproject.toml’ and the ‘wheel’ package is not installed. pip 23.1 will enforce this behaviour change. A possible replacement is to enable the ‘–use-pep517’ option. Discussion can be found at https://github.com/pypa/pip/issues/8559
Running setup.py install for webrtcvad … error
error: subprocess-exited-with-error
× Running setup.py install for webrtcvad did not run successfully.
│ exit code: 1
╰─> [11 lines of output]
running install
C:\youtube\seed-vc\venv\lib\site-packages\setuptools\command\install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
warnings.warn(
running build
running build_py
creating build
creating build\lib.win-amd64-cpython-310
copying webrtcvad.py -> build\lib.win-amd64-cpython-310
running build_ext
building ‘_webrtcvad’ extension
error: Microsoft Visual C++ 14.0 or greater is required. Get it with “Microsoft C++ Build Tools”: https://visualstudio.microsoft.com/visual-cpp-build-tools/
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
error: legacy-install-failure
× Encountered error while trying to install package.
╰─> webrtcvad
note: This is an issue with the package mentioned above, not pip.
hint: See above for output from the failure.
[notice] A new release of pip is available: 23.0.1 -> 24.2
[notice] To update, run: python.exe -m pip install –upgrade pip
यह एरर दर्शाता है कि webrtcvad पैकेज इंस्टॉल करते समय Microsoft Visual C++ Build Tools की आवश्यकता होती है। विशेष रूप से, Microsoft Visual C++ 14.0 या उससे ऊपर इंस्टॉल नहीं होने के कारण, कंपाइल विफल हो सकता है।
समाधान:
Microsoft C++ Build Tools इंस्टॉल करना: एरर संदेश में दिए गए लिंक का अनुसरण करते हुए, Microsoft C++ Build Tools को इंस्टॉल करने की आवश्यकता है। निम्न चरणों का प्रयास करें।
- Microsoft C++ Build Tools वेबसाइट पर जाएं और इंस्टॉलर डाउनलोड करें।
- इंस्टॉलर चलाएं और Desktop development with C++ नामक वर्कलोड का चयन करके इंस्टॉल करें। इसमें Visual C++ 14.0 और अन्य आवश्यक टूल्स शामिल हैं।
VS Code का उपयोग करते समय भी, requirements.txt में सूचीबद्ध कुछ विशिष्ट पैकेज, जैसे torch या webrtcvad, के लिए कंपाइल करने की आवश्यकता होती है। इस दौरान, Microsoft C++ Build Tools की आवश्यकता हो सकती है।
Microsoft C++ Build Tools क्यों आवश्यक हैं?
कुछ पायथन लाइब्रेरी C++ में लिखे गए भाग शामिल करती हैं, और उन्हें इंस्टॉल करते समय कंपाइल करने की आवश्यकता होती है। विंडोज वातावरण में, ऐसा करने के लिए Microsoft C++ Build Tools की आवश्यकता होती है।
सीड-वीसी प्रोजेक्ट में भी, कुछ पैकेज (उदाहरण के लिए, torch या webrtcvad) इस श्रेणी में आते हैं, इसलिए C++ Build Tools को इंस्टॉल करना अनुशंसित है।
pip अपग्रेड करना (अनुशंसित): साथ ही, एरर संदेश के अंत में pip के नए संस्करण की उपलब्धता के बारे में बताया गया है। नवीनतम संस्करण पर अपडेट करना भी अनुशंसित है। निम्न कमांड से pip को अपग्रेड किया जा सकता है।
python.exe -m pip install --upgrade pip
Microsoft C++ Build Tools के इंस्टालेशन स्क्रीन में, पायथन के लिए आवश्यक पैकेज को कंपाइल करने के लिए न्यूनतम कंपोनेंट्स को इंस्टॉल करने की आवश्यकता होती है। यहां, विशेष रूप से चयन की जाने वाली आइटम्स के बारे में बताया गया है।
1. Desktop development with C++
सबसे महत्वपूर्ण आइटम “C++ के साथ डेस्कटॉप डेवलपमेंट (Desktop development with C++)” है। इसे चेक करें।
यह चुनने का कारण: इस वर्कलोड में पायथन पैकेज को कंपाइल करने के लिए आवश्यक Microsoft Visual C++ कंपाइलर और संबंधित टूल्स शामिल होते हैं।
2. अतिरिक्त कंपोनेंट्स
“C++ के साथ डेस्कटॉप डेवलपमेंट” को चुनने पर, कुछ विकल्प स्वचालित रूप से चयनित हो जाते हैं, लेकिन यहां हम शुरुआती लोगों के लिए अनुशंसित न्यूनतम सेटअप का वर्णन करते हैं। यदि आवश्यक हो, तो इंस्टॉलेशन स्क्रीन में निम्न कंपोनेंट्स के चेक किए जाने की पुष्टि करें।
अनिवार्य आइटम (आमतौर पर स्वचालित रूप से चयनित होते हैं)
- MSVC v143 – VS 2022 C++ x64/x86 build tools (नवीनतम संस्करण के लिए MSVC v143)
Visual Studio में C++ बिल्ड टूल्स। यही पायथन पैकेज को कंपाइल करने के लिए आवश्यक कंपाइलर है। - Windows 11 SDK
विंडोज पर डेवलपमेंट के लिए आवश्यक लाइब्रेरी और हैडर फाइल्स इसमें शामिल हैं। - C++ CMake tools for Windows
CMake एक ऐसा टूल है जो बिल्ड प्रोसेस को मैनेज करता है, और इसका उपयोग पायथन पैकेज को कंपाइल करने के लिए किया जाता है।
इसके अलावा स्वचालित रूप से चयनित आइटम्स के बारे में भी बताया गया है।
- Core Tools for Testing
विवरण: यह Visual Studio में एप्लीकेशन को टेस्ट करने के लिए एक टूल है।
आवश्यकता: सीड-वीसी या पायथन पैकेज इंस्टॉल से सीधे संबंधित नहीं है, इसलिए वैकल्पिक है, लेकिन इसे इंस्टॉल करने से कोई समस्या नहीं होगी। - C++ Address Sanitizer
विवरण: C++ Address Sanitizer मेमोरी संबंधी त्रुटियों का पता लगाने के लिए एक टूल है।
आवश्यकता: यह भी विशेष रूप से पायथन पैकेज इंस्टॉलेशन के लिए आवश्यक नहीं है। यह उन्नत C++ डेवलपमेंट वातावरण के लिए एक टूल है और सीड-वीसी का उपयोग करने के लिए इसकी आवश्यकता नहीं है।
अनुशंसित चयन
यदि आवश्यक नहीं हो तो इन स्वतः चयनित टूल्स को अनचेक किया जा सकता है। C++ के साथ डेस्कटॉप डेवलपमेंट, MSVC कंपाइलर, Windows SDK, और CMake इंस्टॉल होने से, पायथन पैकेज को कंपाइल करने के लिए आवश्यक वातावरण तैयार हो जाता है।
यदि न्यूनतम से आगे बढ़ना हो तो इसे निम्न प्रकार से क्रमबद्ध किया जा सकता है।
- Windows 11 SDK: आवश्यक
- Core Tools for Testing: ऑप्शनल (यदि जरूरत नहीं तो हटा सकते हैं)
- C++ Address Sanitizer: ऑप्शनल (यदि जरूरत नहीं तो हटा सकते हैं)
इससे न्यूनतम आवश्यक वातावरण तैयार हो जाएगा।
ऑप्शनल आइटम्स (आमतौर पर अनावश्यक)
उपरोक्त बेसिक सेटअप पर्याप्त है, लेकिन यदि आप भविष्य में उन्नत सेटिंग्स करने की योजना बनाते हैं, तो निम्न विकल्प पर भी विचार कर सकते हैं। हालांकि, शुरुआती स्तर और बुनियादी पायथन प्रोजेक्ट्स के लिए, ये आवश्यक नहीं हैं।
- C++ Clang tools for Windows (अनावश्यक)
- C++/CLI support (अनावश्यक)
3. इंस्टॉलेशन शुरू करना
इन्हें चुनकर, “इंस्टॉल” बटन पर क्लिक करें। इंस्टॉलेशन में थोड़ा समय लगता है, लेकिन यह पूरा होने पर, पायथन पैकेज इंस्टॉलेशन के दौरान होने वाला कंपाइल एरर ठीक हो जाना चाहिए।
4. इंस्टॉलेशन के बाद की जांच
इंस्टॉलेशन पूरा होने के बाद, पुनः निम्न कमांड को एक्सीक्यूट करके, आवश्यक पैकेज इंस्टॉल करें।
pip install -r requirements.txt
इससे, Visual C++ Build Tools सही ढंग से सेट हो जाएंगे, और सीड-वीसी प्रोजेक्ट को चलाने के लिए आवश्यक पैकेज इंस्टॉल हो जाएंगे।
Microsoft C++ Build Tools के एरर आमतौर पर केवल विंडोज वातावरण में होते हैं। Microsoft C++ Build Tools विंडोज पर C++ कोड को कंपाइल करने के लिए आवश्यक टूल्स हैं, और यह विंडोज विशिष्ट होते हैं। इसलिए, WSL (Windows Subsystem for Linux) या लिनक्स वातावरण में, Microsoft C++ Build Tools एरर नहीं आता।
WSL या लिनक्स वातावरण में कंपाइल एरर
हालांकि, WSL या लिनक्स में भी यदि निर्भर C++ पैकेज या लाइब्रेरी आवश्यक होती हैं, तो संबंधित डेवलपमेंट टूल्स को इंस्टॉल करना होगा। उदाहरण के लिए, पायथन के कुछ पैकेज (जैसे torch) को इंस्टॉल करते समय, लिनक्स में निम्नलिखित डेवलपमेंट टूल्स की आवश्यकता हो सकती है।
आवश्यक टूल्स को इंस्टॉल करने का कमांड (लिनक्स/WSL के लिए)
sudo apt update
sudo apt install build-essential
build-essential में C++ कंपाइलर (g++) और अन्य डेवलपमेंट टूल्स शामिल होते हैं, और इससे C++ कोड को कंपाइल करने का वातावरण तैयार हो जाता है।
साथ ही, निम्न अतिरिक्त टूल्स की भी आवश्यकता हो सकती है।
sudo apt install libssl-dev libffi-dev python3-dev
विंडोज में, C++ कंपाइल करने के लिए Microsoft C++ Build Tools की आवश्यकता होती है।
WSL या लिनक्स में, build-essential जैसे डेवलपमेंट टूल्स की आवश्यकता होती है, लेकिन Microsoft C++ Build Tools की जरूरत नहीं होती।
WSL या लिनक्स में भी, उचित डेवलपमेंट टूल्स इंस्टॉल होने पर, C++ संबंधी एरर से बचा जा सकता है।
build-essential WSL या लिनक्स वातावरण में विंडोज के Microsoft C++ Build Tools के समान होता है। इसमें C और C++ कंपाइलर (gcc और g++) और Makefile सपोर्ट जैसे कंपाइलिंग के लिए आवश्यक बुनियादी टूल्स शामिल होते हैं। इन्हें इंस्टॉल करने से, पायथन पैकेज और C++ में लिखी गई लाइब्रेरी के बिल्ड के लिए आवश्यक वातावरण तैयार हो जाता है।
विंडोज में, C++ लाइब्रेरी को कंपाइल करने के लिए Microsoft C++ Build Tools की आवश्यकता होती है।
WSL या लिनक्स में, build-essential C++ लाइब्रेरी को कंपाइल करने के लिए आवश्यक टूल्स प्रदान करता है।
अर्थात, लिनक्स या WSL में आवश्यक डेवलपमेंट वातावरण को build-essential को इंस्टॉल करके तैयार किया जा सकता है।
और अंततः ब्राउज़र संस्करण को चालू किया जाता है। निम्न कमांड से इसे चालू किया जा सकना चाहिए।
python app.py
यह स्क्रिप्ट कई अलग-अलग मॉडल्स को डाउनलोड करती है, और उनका उपयोग करके वॉयस कन्वर्जन करने की तैयारी करती है।
विशेष रूप से, यह निम्नलिखित प्रवाह का अनुसरण करता है।
मॉडल डाउनलोड:
load_custom_model_from_hf नामक फ़ंक्शन का उपयोग करके, कई मॉडल्स को हगिंगफेस (HF) से डाउनलोड किया जाता है। उदाहरण के लिए, निम्नलिखित मॉडल्स डाउनलोड किए जाते हैं:
- Plachta/Seed-VC: वॉयस कन्वर्जन के लिए मॉडल
- funasr/campplus: वॉयस स्टाइल निष्कर्षण में उपयोग किया जाने वाला मॉडल
- nvidia/bigvgan_v2_22khz_80band_256x: बिगवीगैन द्वारा उच्च गुणवत्ता वाले ऑडियो जनरेशन मॉडल
- lj1995/VoiceConversionWebUI: F0 (मूल आवृत्ति) अनुमान के लिए मॉडल
- openai/whisper-small: व्हिस्पर मॉडल द्वारा ऑडियो प्रोसेसिंग
मॉडल लोडिंग और सेटिंग:
प्रत्येक मॉडल को लोड किया जाता है और उसकी सेटिंग की जाती है। torch.device का उपयोग करके, उपयोग किए जाने वाले हार्डवेयर (GPU या CPU) का निर्णय किया जाता है, और मॉडल के प्रत्येक पैरामीटर को इनिशियलाइज़ किया जाता है।
वॉयस कन्वर्जन को एक्सीक्यूट करना:
वास्तविक वॉयस कन्वर्जन को करने के लिए voice_conversion नामक फ़ंक्शन को डिफाइन किया जाता है। यह ग्रेडियो के माध्यम से ऑडियो फ़ाइल को अपलोड करने, सेटिंग्स को एडजस्ट करने, और वेब ब्राउज़र पर यूज़र द्वारा वॉयस कन्वर्जन को एक्सीक्यूट करने की अनुमति देता है।
यह स्क्रिप्ट आवश्यक वॉयस कन्वर्जन मॉडल्स और सहायक मॉडल्स को हगिंगफेस से स्वचालित रूप से डाउनलोड करता है और उन्हें सेट करता है। डाउनलोड किए गए मॉडल्स का उपयोग वॉयस कन्वर्ज़न, उच्च गुणवत्ता वाले ऑडियो जनरेशन, F0 एडजस्टमेंट आदि के लिए किया जाता है। इसके बाद, ग्रेडियो का उपयोग करके, यूज़र को ब्राउज़र में आसानी से वॉयस कन्वर्ज़न एक्सीक्यूट करने की अनुमति देने का प्रवाह होता है।
अगला, ब्राउज़र पर एक्सेस करके देखें।
http://127.0.0.1:7860/मुख्य रूप से उपयोग करने के तरीके के बारे में, लेकिन रेफरेंस ऑडियो में आप जिस आवाज़ को क्लोन करना चाहते हैं उसे डालें, और सोर्स ऑडियो में आप इसके अनुसार किसको मॉड्यूलेट करना चाहते हैं उसे अपलोड करें। यदि निर्माण सफलतापूर्वक हो जाता है, तो रेफरेंस ऑडियो में डाली गई ऑडियो क्वालिटी के साथ, क्लोन बनाया जाएगा। हालांकि, GPU का उपयोग करने के बावजूद निर्माण बहुत धीमा हो रहा था, इसलिए मैंने इसकी जांच की। सबसे पहले, इंस्टॉल किए गए PC के CUDA संस्करण की जांच करें।
nvcc --version
आउटपुट का विवरण निम्नानुसार है।
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Thu_Mar_28_02:30:10_Pacific_Daylight_Time_2024
Cuda compilation tools, release 12.4, V12.4.131
Build cuda_12.4.r12.4/compiler.34097967_0
वर्तमान वातावरण में CUDA संस्करण को चेक करने पर, CUDA 12.4 इंस्टॉल किया गया है, इसलिए –extra-index-url में निर्दिष्ट CUDA 11.3 (cu113) के लिए PyTorch संगत नहीं हो सकता है।
निम्नलिखित पेज पर चेक करने पर, वर्तमान समय में CUDA 12.4 नवीनतम संस्करण के रूप में प्रदर्शित किया गया था।
यदि PyTorch का संस्करण और CUDA का संस्करण मेल नहीं खाता है, तो संचालन में समस्या हो सकती है। CUDA 12.4 का उपयोग करने के लिए, उसके अनुरूप PyTorch संस्करण को इंस्टॉल करने की आवश्यकता है।
समाधान: CUDA 12.4 के अनुरूप PyTorch इंस्टॉल करना
इसलिए, requirements.txt में संशोधन करें। requirements.txt में, –extra-index-url वाले भाग को निम्नानुसार संशोधित करें।
--extra-index-url https://download.pytorch.org/whl/cu124
फिर, पुरानी वर्चुअल एनवायरनमेंट को डिलीट करें। वर्चुअल एनवायरनमेंट के फ़ोल्डर, अर्थात venv फ़ोल्डर को हटाने से ही यह हो जाता है। उसके बाद पहले के समान ही चरणों का पालन करके इंस्टॉल करें। स्पीड काफी बढ़ गई।
उपरोक्त चरणों को निष्पादित करने के बाद, स्पीड “काफी बढ़ गई” के कारण के बारे में थोड़ा और विस्तार से बताया गया है।
- GPU और CPU के बीच का अंतर
सबसे पहले, GPU (ग्राफ़िक्स कार्ड का प्रोसेसर) बड़ी मात्रा में डेटा को समानांतर रूप से प्रोसेस करने में माहिर होता है। इसकी तुलना में, CPU आम तौर पर प्रोसेसिंग के लिए उपयुक्त होता है, लेकिन समानांतर प्रोसेसिंग में इतना मज़बूत नहीं होता। वॉयस कन्वर्ज़न या डीप लर्निंग जैसे बड़ी मात्रा में डेटा को प्रोसेस करने वाले कार्यों में, GPU का उपयोग करके बहुत तेज़ी से प्रोसेसिंग की जा सकती है।
- CUDA क्या है?
CUDA (Compute Unified Device Architecture) NVIDIA द्वारा प्रदान की जाने वाली एक तकनीक है, जो GPU का उपयोग करके सामान्य कम्प्यूटेशनल प्रोसेसिंग को तेज़ करने के लिए एक फ्रेमवर्क है। PyTorch इस CUDA का उपयोग करके, GPU के प्रदर्शन को अधिकतम कर सकता है और प्रोसेसिंग स्पीड को काफी बढ़ा सकता है।
हालांकि, यदि PyTorch और CUDA के संस्करण मेल नहीं खाते हैं, तो GPU का ठीक से उपयोग नहीं हो पाता और प्रोसेसिंग धीमी हो सकती है। सबसे पहले इंस्टॉल किया गया PyTorch CUDA 11.3 के लिए था, इसलिए इस PC पर इंस्टॉल किया गया CUDA 12.4 ठीक से उपयोग नहीं किया जा रहा था। इसके परिणामस्वरूप, प्रोसेसिंग स्पीड कम हो गई थी।
- सही संस्करण को इंस्टॉल करने का महत्व
अब, requirements.txt को संशोधित करके और CUDA 12.4 के अनुरूप PyTorch को इंस्टॉल करके, GPU की शक्ति का पूरी तरह उपयोग किया जा सका। इसके परिणामस्वरूप, प्रोसेसिंग स्पीड काफी बढ़ गई। ऐसा इसलिए हुआ क्योंकि CUDA संस्करण के अनुरूप सही PyTorch को इंस्टॉल करने से, GPU इष्टतम रूप से कार्य करता है और समानांतर प्रोसेसिंग द्वारा कार्य तेज़ी से किया जाता है।
- स्पीड में वृद्धि का विशिष्ट उदाहरण
उदाहरण के लिए, यदि केवल CPU का उपयोग किया जा रहा हो, तो वॉयस कन्वर्ज़न में कुछ मिनट से लेकर दस मिनट तक का समय लग सकता है, लेकिन GPU का उपयोग करने पर यह प्रोसेसिंग कुछ सेकंड में पूरी हो सकती है। इस प्रकार, एक ही कार्य को कई गुना या कई दस गुना तेज़ी से पूरा करना GPU की शक्ति है।
सबसे पहले इंस्टॉल किया गया CUDA 11.3 के लिए PyTorch, इस PC पर इंस्टॉल किए गए CUDA 12.4 के साथ संगत नहीं था, इसलिए GPU की शक्ति का ठीक से उपयोग नहीं हो पा रहा था और प्रोसेसिंग धीमी हो रही थी। हालांकि, CUDA 12.4 के अनुरूप PyTorch पर स्विच करने से, GPU का पूरा उपयोग किया जा सका और कार्य की गति काफी बढगई।
इस प्रक्रिया का पालन करके, वॉयस कन्वर्ज़न या डीप लर्निंग जैसे भारी प्रोसेसिंग वाले कार्य भी बहुत तेज़ी से निष्पादित किए जा सकते हैं।
सीड-वीसी और VALL-E X का संबंध
सीड-वीसी के डेवलपर वास्तव में VALL-E X नामक वॉयस कन्वर्ज़न प्रोजेक्ट के भी डेवलपर हैं। VALL-E X को वॉयस कन्वर्ज़न के क्षेत्र में बहुत उच्च प्रदर्शन वाले मॉडल के रूप में जाना जाता है, लेकिन सीड-वीसी इसके बाद रिलीज़ किया गया था।
यह स्पष्ट नहीं है कि क्या सीड-वीसी VALL-E X की तुलना में बेहतर प्रदर्शन करता है, लेकिन बाद में आने के कारण, इसमें और सुधार किया गया हो सकता है। मेरा मानना है कि प्रदर्शन में सुधार हुआ है।
सीड-वीसी और VALL-E X के बीच अंतर
सीड-वीसी और VALL-E X दोनों वॉयस कन्वर्ज़न तकनीक से संबंधित हैं, लेकिन उनके दृष्टिकोण में बड़ा अंतर है।
सीड-वीसी: यह वॉयस से वॉयस में कन्वर्ज़न करने की तकनीक है। यह एक स्पीकर की आवाज़ को दूसरे स्पीकर की आवाज़ में बदल सकता है। उदाहरण के लिए, एक आवाज़ को इनपुट करने पर, उसे दूसरे स्पीकर की आवाज़ में बदला जा सकता है।
VALL-E X: दूसरी ओर, VALL-E X टेक्स्ट से वॉयस जनरेट करने की तकनीक है। यह इनपुट किए गए टेक्स्ट के आधार पर, विशिष्ट स्पीकर की आवाज़ में नेचुरल वॉयस जनरेट करने में सक्षम मॉडल है। टेक्स्ट इनपुट के लिए, यह रियलिस्टिक ऑडियो आउटपुट देता है, जो सीड-वीसी से भिन्न है।
दोनों एक ही डेवलपर द्वारा बनाए गए हैं, लेकिन वॉयस कन्वर्ज़न और वॉयस जनरेशन जैसे अलग-अलग उद्देश्यों के लिए विशेष रूप से डिज़ाइन किए गए हैं और वे अपने-अपने क्षेत्र में मज़बूत हैं।
CPU अनुकूलन के लिए सुझाव
CPU पर इसे प्राप्त करने के लिए निम्नलिखित चुनौतियों को दूर करना होगा।
समानांतर प्रोसेसिंग का उपयोग:
torch.set_num_threads(os.cpu_count()) पहले से ही लागू है, लेकिन torch.set_num_interop_threads(1) को जोड़ने से समानांतर प्रोसेसिंग की दक्षता में सुधार हो सकता है।
मॉडल का क्वांटाइज़ेशन:
मॉडल को int8 में क्वांटाइज़ करने से, मेमोरी उपयोग कम हो सकता है और अनुमान की गति में सुधार हो सकता है। उदाहरण:
model = torch.quantization.quantize_dynamic(
model,
{torch.nn.Linear},
dtype=torch.qint8
)
JIT कंपाइल:
PyTorch के JIT (Just-In-Time) कंपाइलर का उपयोग करके, मॉडल को कंपाइल किया जा सकता है और निष्पादन गति में सुधार किया जा सकता है।
model = torch.jit.script(model)
बैच प्रोसेसिंग का अनुकूलन:
यदि संभव हो तो, एक साथ कई सैंपल्स को प्रोसेस करने वाली बैच प्रोसेसिंग को लागू करके, समग्र थ्रूपुट में सुधार किया जा सकता है।
मेमोरी दक्षता में सुधार:
अनावश्यक टेंसर्स को सक्रिय रूप से हटा दें और torch.cuda.empty_cache() का उपयोग करके GPU मेमोरी को मुक्त करें (यह GPU के लिए है, लेकिन CPU मेमोरी प्रबंधन पर भी ध्यान देना चाहिए)।
डेटा टाइप का अनुकूलन:
जहां संभव हो, float32 के बजाय float16 का उपयोग करके, मेमोरी उपयोग को कम किया जा सकता है और गणना की गति में सुधार किया जा सकता है।
एसिंक्रोनस प्रोसेसिंग का उपयोग:
I/O ऑपरेशन (फ़ाइल रीड/राइट आदि) को एसिंक्रोनस रूप से करके, CPU के वेटिंग टाइम को कम किया जा सकता है।
प्रोफ़ाइलिंग और बॉटलनेक की पहचान:
cProfile या line_profiler जैसे टूल्स का उपयोग करके, कोड के निष्पादन समय का विस्तृत विश्लेषण किया जा सकता है और सबसे अधिक समय लेने वाले भाग की पहचान की जा सकती है।
NumPy का उपयोग:
जहां संभव हो, PyTorch ऑपरेशन के बजाय NumPy का उपयोग करके, विशिष्ट गणनाओं में गति में सुधार की संभावना हो सकती है।
मॉडल का प्रूनिंग:
मॉडल के महत्वपूर्ण नहीं पैरामीटर को हटाकर, मॉडल के आकार को कम किया जा सकता है और अनुमान की गति में सुधार किया जा सकता है।
इन अनुकूलनों को लागू करते समय, सटीकता के साथ समझौते पर ध्यान देना और प्रत्येक परिवर्तन के बाद प्रदर्शन का परीक्षण करना महत्वपूर्ण है।
FFmpeg की आवश्यकता है या नहीं
requirements.txt में FFmpeg के सीधे उल्लेख नहीं है, लेकिन librosa या pydub जैसी लाइब्रेरी शामिल हैं, जो ऑडियो प्रोसेसिंग करते समय FFmpeg का उपयोग कर सकती हैं। विशेष रूप से pydub FFmpeg पर निर्भर करता है, इसलिए यदि प्रोजेक्ट ऑडियो प्रोसेसिंग करता है तो होस्ट पर FFmpeg की आवश्यकता होने की संभावना अधिक है।
होस्ट पर FFmpeg की आवश्यकता होगी या नहीं, यह निम्न बिंदुओं पर निर्भर करता है।
ऑडियो फ़ाइल प्रोसेसिंग को वर्चुअल एनवायरनमेंट के भीतर पूरा किया जाना है या होस्ट पर किया जाना है
वर्चुअल एनवायरनमेंट के भीतर पूरा होने की स्थिति में: यदि ऑडियो प्रोसेसिंग (कन्वर्ज़न या एन्कोडिंग) वर्चुअल एनवायरनमेंट के भीतर किया जाता है और आवश्यक लाइब्रेरी FFmpeg को कॉल करती हैं, तो होस्ट पर FFmpeg की आवश्यकता नहीं है। सब कुछ वर्चुअल एनवायरनमेंट के भीतर पायथन स्क्रिप्ट द्वारा प्रोसेस किया जाता है।
होस्ट पर करने की स्थिति में: यदि ऑडियो फ़ाइल के आउटपुट या इनपुट को होस्ट OS (विंडोज) पर सीधे करने की आवश्यकता है, तो होस्ट पर FFmpeg की आवश्यकता होती है। pydub या अन्य लाइब्रेरी FFmpeg को कॉल करके ऑडियो फ़ाइल को मैनिप्युलेट करती हैं, इसलिए होस्ट साइड पर FFmpeg इंस्टॉल होना आवश्यक है।
संक्षेप में:
यदि ऑडियो फ़ाइल को होस्ट (विंडोज) पर सीधे मैनिप्युलेट करने की आवश्यकता है, तो होस्ट पर FFmpeg इंस्टॉल करना आवश्यक है।
यदि वर्चुअल एनवायरनमेंट के भीतर प्रोसेसिंग पूरी हो जाती है, तो होस्ट पर इंस्टॉल करने की आवश्यकता नहीं है।
यदि विंडोज पर ऑडियो फ़ाइल प्रोसेसिंग की होस्ट-साइड आवश्यकता है, तो FFmpeg को होस्ट पर इंस्टॉल करने की सलाह दी जाती है।