चैटबॉट्स, बड़े भाषा मॉडल (एलएलएम), और कोपायलट जैसी एआई प्रौद्योगिकियों के आसपास प्रचार चैटजीपीटी के जारी होने के बाद शुरू हुआ, जल्द ही कई और उपयोग के मामले सामने आए।
मैं लेखन सहायकों, छवि जनरेटर, या आपके डेटा पर प्रशिक्षित चैटबॉट जैसे सबसे आम लोगों के बारे में बात नहीं कर रहा हूं। मैं यथार्थवादी बात करने वाले अवतारों, वीडियो संपादकों, या भाषण संश्लेषण जैसे अधिक विशिष्ट उपयोग के मामलों के बारे में बात कर रहा हूं।
इस लेख में, हम उन उपयोग मामलों में से एक का पता लगाने जा रहे हैं - एक ट्रांसक्राइबर ऐप जिसे आप पॉडकास्ट या यूट्यूब वीडियो के साथ उपयोग कर सकते हैं। यदि आप कभी भी GPT-3 API का उपयोग करना चाहते हैं या OpenAI व्हिस्पर डेमो को क्रियाशील देखना चाहते हैं तो यह बहुत उपयोगी होगा।
इस ट्यूटोरियल के भाग 1 के लिए, हम सेट अप करने और ऐप का विकास शुरू करने के लिए आवश्यक सभी चीज़ों से गुजरेंगे।
और फिर भाग 2 में, हम अपना कामकाजी कोड क्लाउड पर अपलोड करेंगे और एक उपयोगकर्ता इंटरफ़ेस काम करेंगे ताकि अन्य लोग परिणाम देख सकें और ऐप के साथ बातचीत कर सकें।
अब, कमर कस लें क्योंकि इसे बनाने वाले कुछ पायथन कोड से हम अपने हाथ गंदे कर लेंगे।
इसे बनाने के लिए, हम 3 कृत्यों से गुजरेंगे।
पहले में, हम वह सब कुछ देखेंगे जो हमें आगे की यात्रा के लिए तैयार होने के लिए चाहिए।
दूसरे में, हम स्थानीय स्तर पर एक प्रोटोटाइप बनाएंगे और पता लगाएंगे कि इस प्रक्रिया में कौन से उपकरण हमारी सहायता कर सकते हैं।
और अंतिम में, हमने जो कुछ भी बनाया है उसे हम क्लाउड पर अपलोड करेंगे ताकि अन्य लोग भी इसे आज़मा सकें।
सुनने में तो अच्छा लगता है?
तो ठीक है, चलिए इसके लिए आगे बढ़ते हैं!
सबसे पहले चीज़ें, जिस प्रक्रिया का हम पालन करेंगे उसका एक मोटा अवलोकन वह जानकारी निकालना है जिसे हम ट्रांसक्राइब करना चाहते हैं और फिर उसे फीड करना है
वहां से, हम आउटपुट लेंगे और इसे फ्रंट-एंड एप्लिकेशन में प्रदर्शित करने से पहले उस पर कुछ पोस्ट-प्रोसेसिंग करेंगे ताकि अन्य लोग इसे देख सकें और इसके साथ इंटरैक्ट कर सकें।
यदि हम इसे मैन्युअल रूप से करते हैं तो इस प्रक्रिया में कुछ अतिरिक्त कदम लगेंगे। सौभाग्य से, OpenAI उपलब्ध कराया गया
यहां आपको तय करना होगा कि कौन सा रास्ता अपनाना है।
पहले अपना रास्ता चुनें और फिर हम आगे बढ़ेंगे।
इसके बाद, हमें GPT-3.5 टर्बो मॉडल (जो मूल रूप से ChatGPT को पावर देने वाला मॉडल है) तक पहुंचने के लिए OpenAI से एक एपीआई कुंजी की आवश्यकता होगी।
यदि आप नहीं जानते कि इसे कैसे प्राप्त करें, तो इन चरणों का पालन करें:
एक बार जब आपके पास वह कुंजी होगी, तो हम पहेली के अगले भाग, व्हिस्पर, की ओर बढ़ेंगे।
आप निम्नलिखित कमांड चलाकर अपनी मशीन पर व्हिस्पर का नवीनतम संस्करण डाउनलोड और इंस्टॉल कर सकते हैं:
pip install -U openai-whisper
वैकल्पिक रूप से, आप इस कमांड का उपयोग करके Git से नवीनतम कमिट को उसकी निर्भरता के साथ इंस्टॉल कर सकते हैं:
pip install git+https://github.com/openai/whisper.git
इससे आपको इस बात पर अधिक नियंत्रण मिलता है कि आप कौन सा संस्करण इंस्टॉल कर रहे हैं (और यदि आप इसे कोलाब नोटबुक से आज़मा रहे हैं तो यह वह कमांड है जिसे आप चलाना चाहेंगे।)
नोट: यदि आप कमांड लाइन से व्हिस्पर चलाना चाहते हैं तो आपको 'ffmpeg' इंस्टॉल करना होगा।
व्हिस्पर स्थापित होने के साथ, अब हमें केवल उन वास्तविक फ़ाइलों की आवश्यकता है जिन्हें हम ट्रांसक्राइब करना चाहते हैं। हम इसे कई प्रकार की मीडिया फ़ाइलें जैसे 'mp3', 'mp4', 'mpeg', 'wav', और भी बहुत कुछ फ़ीड कर सकते हैं।
यहां एकमात्र सीमा फाइलों का आकार है, 20 मिनट के पॉडकास्ट की तुलना में 10 मिनट के वीडियो में अधिक समय लगेगा।
अब, यहाँ सड़क का अगला कांटा है।
आपको यह चुनना होगा कि आप वीडियो ट्रांसक्राइब करना चाहते हैं या ऑडियो ।
इस उदाहरण में सरलता के लिए, हम पॉडकास्ट से ऑडियो फ़ाइलों का उपयोग करेंगे।
और यहां, आपके मन में यह सवाल हो सकता है कि " मैं पॉडकास्ट एपिसोड कहां से डाउनलोड करूं?" ”।
ऐसे दो तरीके हैं जिनके बारे में मैं जानता हूं।
पहला है लिसननोट्स जैसी साइट का उपयोग करना, अपनी पसंद का कोई भी पॉडकास्ट चुनना और अलग-अलग एपिसोड पर जाना।
यह ध्यान देने योग्य है कि आपको अलग-अलग एपिसोड और उनकी संबंधित ऑडियो फ़ाइलों तक पहुंचने में सक्षम होने के लिए एक खाता बनाना होगा।
वहां से, आपको "अधिक" टैब खोलने के लिए 3 बिंदुओं वाले बटन पर क्लिक करना होगा और फिर आपको ऑडियो डाउनलोड करने का विकल्प दिखाई देगा।
यहां बताया गया है कि वह कैसा दिखेगा:
दूसरा विकल्प इसके बजाय पॉडचेज़र का उपयोग करना है। आप पॉडकास्ट ढूंढने, एपिसोड सूची से गुजरने और किसी विशेष को चुनने की समान प्रक्रिया का पालन करेंगे।
एक बार जब आप व्यक्तिगत एपिसोड के पृष्ठ पर पहुंच जाते हैं, तो आपको दाईं ओर एक कॉलम दिखाई देगा जिसके नीचे प्ले बटन और अन्य विकल्प होंगे।
यदि आप नीचे स्क्रॉल करते हैं, तो आपको पॉडकास्ट के बारे में जानकारी, सोशल मीडिया पर साझा करने के विकल्प और ऑडियो फ़ाइल डाउनलोड करने के विकल्प वाला एक छोटा अनुभाग दिखाई देगा।
यहां बताया गया है कि यह कैसा दिखेगा:
जो भी विकल्प आपको पसंद हो उसे चुनें और अलग-अलग लंबाई के कुछ एपिसोड डाउनलोड करें ताकि आप परीक्षण कर सकें कि ट्रांसक्रिप्शन प्रक्रिया कैसे काम करती है।
मेरी अनुशंसा है कि आप 30 मिनट से छोटे एपिसोड चुनें।
इसका कारण यह है कि यदि आप लंबा विकल्प चुनते हैं, तो व्हिस्पर को इसे संसाधित करने में लंबा समय लग सकता है और आपको टाइमआउट समस्याओं का सामना करना पड़ सकता है (विशेषकर यदि आप कोलाब वातावरण का उपयोग कर रहे हैं)।
20-30 मिनट के एपिसोड को ट्रांसक्रिप्ट होने में 4 से 8 मिनट तक का समय लग सकता है।
यहां मुख्य बाधा परिणाम प्राप्त करने से पहले प्रतिलेखन प्रक्रिया की अवधि है जिसे हम आगे के काम के लिए उपयोग कर सकते हैं।
अब जब हमने सभी आवश्यकताएं पूरी कर ली हैं और सेटअप पूरा हो गया है।
अब हमारे लिए यात्रा के अगले भाग की ओर बढ़ने का समय आ गया है।
हम गहन प्रोग्रामिंग क्षेत्र में प्रवेश कर रहे हैं।
हम पायथन के माध्यम से व्हिस्पर का उपयोग करेंगे क्योंकि यह अधिक सुविधाजनक है। और हमें प्रतिलेखन के लिए कुछ विशेष करने की आवश्यकता नहीं है, बस ऑडियो फ़ाइल को मॉडल में पास करें और प्रतिलेखन की प्रतीक्षा करें, बस इतना ही।
तो आइए उस प्रक्रिया को पंक्ति दर पंक्ति आगे बढ़ाते हैं।
import whisper model = whisper.load_model("base")
यहां हम व्हिस्पर मॉडल का 'बेस' संस्करण लोड करते हैं। ऐसे कई संस्करण (या "आकार") हैं जो OpenAI ने जारी किए हैं और वे मापदंडों की संख्या, उनके द्वारा उपभोग किए जाने वाले संसाधनों और प्रतिलेखन करने में लगने वाले समय के आधार पर भिन्न होते हैं।
संदर्भ के लिए यहां एक आसान चार्ट है।
यदि आप चाहें तो आप आगे बढ़ सकते हैं और आकार के अनुसार उन सभी को आज़मा सकते हैं।
ध्यान रखें कि यदि आप बड़े मॉडल का उपयोग करते हैं, तो आपको इसे चलाने के लिए अधिक संसाधनों (जैसे GPU) की आवश्यकता होगी।
इसलिए, यदि आप इसे कोलाब में चला रहे हैं, तो आप इसके बजाय इस कमांड का उपयोग कर सकते हैं।
model = whisper.load_model('medium', device='cuda')
आप उस डिवाइस के पैरामीटर को पास करते हैं जिस पर आप इसे चलाना चाहते हैं।
मॉडल का आकार चुनने के बाद, आप उस ऑडियो फ़ाइल को पास कर सकते हैं जिसे आप ट्रांसक्राइब करना चाहते हैं, इस तरह:
result = model.transcribe(“path-to-where-the-file-is”)
फिर आप यह सत्यापित करने के लिए सामग्री प्रिंट कर सकते हैं कि ट्रांसक्रिप्शन काम कर गया है। (लेकिन हो सकता है कि आप पूरी चीज़ को प्रिंट करने के बजाय केवल पहले 1000 अक्षरों या उसके आसपास ही देखना चाहें।)
podcast_transcript = result['text'] podcast_transcript[:1000]
यदि यह ठीक रहा, तो अब आपके पास प्रतिलेखन प्रक्रिया के परिणाम एक चर में सहेजे गए हैं। जिसे हम पोस्ट-प्रोसेसिंग के लिए उपयोग करेंगे।
यह काफी आसान है. लेकिन मान लीजिए कि हम यह जानने का एक तरीका चाहते हैं कि एपिसोड के विवरण में जो मिलेगा उसके अलावा पॉडकास्ट में क्या चर्चा हुई।
हम एक फ़ंक्शन बना सकते हैं जो संपूर्ण प्रतिलेख लेता है और हमें एक "कार्यकारी सारांश" देता है। एक सारांश जिसे हम उन व्यस्त लोगों के साथ भी साझा कर सकते हैं जिनके पास पूरी चीज़ देखने और यह देखने का समय नहीं है कि यह उनके समय के लायक है या नहीं।
आइए आगे बढ़ें और ऐसा करें।
उस सारांश को बनाने के लिए हम क्या उपयोग करेंगे, इसके बारे में कोई अनुमान?
संकेत: हमारे पास इसके लिए पहले से ही एक एपीआई कुंजी है।
हाँ, तुम्हें यह मिल गया।
हम पॉडकास्ट की प्रतिलेख प्रदान करके इस सारांश को बनाने के लिए `गेट-3.5-टर्बो` मॉडल का उपयोग करेंगे।
हम सीधे एपीआई पर कॉल कर सकते हैं, लेकिन इसके लिए ओपनएआई पैकेज का उपयोग करना अधिक सुविधाजनक है (जिसे उपयुक्त नाम 'ओपनई' 😆 दिया गया है)।
मॉडल को हम कितने टोकन भेजेंगे, यह जानने के लिए हमें OpenAI से टोकननाइज़र लाइब्रेरी की भी आवश्यकता होगी।
और हम उन दोनों को चलाकर इंस्टॉल कर सकते हैं...
pip install openai pip install tiktoken
अब, GPT-3 पर कॉल करने से पहले हमें API कुंजी को कहीं सहेजना होगा।
आप इसे एक पर्यावरण चर के रूप में सहेज सकते हैं और फिर इसे इस तरह कोड में उपयोग करने के लिए तैयार कर सकते हैं।
openai.api_key = os.environ["OPENAI"]
या यदि आप कोलाब परिवेश का उपयोग कर रहे हैं, तो आप ऐसा कुछ कर सकते हैं।
import openai from getpass import getpass openai.api_key = getpass("Enter your key here: ")
और फिर, जब आप वह कमांड चलाएंगे तो यह एक इनपुट सेल प्रदर्शित करेगा जहां आप कुंजी पेस्ट कर सकते हैं।
अब, आप इस कोड के टुकड़े के साथ वर्तमान में उपलब्ध मॉडलों को सूचीबद्ध करके पुष्टि कर सकते हैं कि कुंजी काम करती है।
models = openai.Model.list() for model in models['data]: print(model['root'])
हमारी कुंजी के सही ढंग से काम करने पर, हम आगे बढ़ सकते हैं और GPT-3 API पर कॉल कर सकते हैं।
लेकिन कुछ महत्वपूर्ण बात है जिसे हमें पहले ध्यान में रखना होगा। और यह उससे संबंधित है जिसका मैंने पहले "टोकन" के बारे में उल्लेख किया था।
चूँकि विचार पॉडकास्ट ट्रांसक्रिप्ट को एआई मॉडल में पास करने और इसका सारांश वापस पाने का है, हमें यह जानना होगा कि यह कितने "टोकन" स्वीकार करने में सक्षम है।
एआई शब्दों या वर्णों की गिनती नहीं करता बल्कि टोकन का उपयोग करता है। इसीलिए "संदर्भ विंडो" की अवधारणा मौजूद है।
यदि हम संदर्भ विंडो की लंबाई से अधिक हो जाते हैं, तो हमारा प्रतिलेख छोटा हो सकता है और हमें अधूरे डेटा से सारांश प्राप्त होगा। (पॉडकास्ट एपिसोड चुनने का एक और कारण जो बहुत लंबा नहीं है।)
सौभाग्य से, GPT-3 मॉडल के 2 संस्करण हैं। पारंपरिक एक और विस्तारित संदर्भ विंडो वाला दूसरा।
यदि आप OpenAI दस्तावेज़ों की जाँच करते हैं, तो आप उनके बीच अंतर देख सकते हैं।
और `टिकटॉकन` लाइब्रेरी इसी के लिए है। इससे हमें यह जानने में मदद मिलेगी कि प्रतिलेख में कितने टोकन हैं, इस तरह हम जानते हैं कि सारांश के लिए किस मॉडल का उपयोग करना है।
हम वह गणना निम्नलिखित कोड से कर सकते हैं।
import tiktoken enc = tiktoken.encoding_for_model(“gpt-3.5-turbo”) print(“Number of tokens in the input ”, len(enc.encode(podcast_transcript)))
यदि परिणाम में टोकन की मात्रा 4,097 से अधिक है, तो हमें मॉडल के '16k' संस्करण का उपयोग करना होगा।
यह जानने के बाद, हम अंततः स्थिति के लिए उचित मॉडल का उपयोग करके एपीआई पर कॉल कर सकते हैं।
सबसे पहले, आइए उस प्रॉम्प्ट को एक वेरिएबल में सेव करें जो हम मॉडल को भेजेंगे। आप अपने स्वयं के प्रॉम्प्ट के साथ प्रयोग कर सकते हैं, लेकिन यहां एक उदाहरण दिया गया है:
prompt = """ You are an expert marketer responsible for the growth of several popular podcasts. You are now tasked with summarizing an episode in a way that is concise and covers the main points of the episode for others to understand. The transcript of the episode is provided below. """ request = prompt + podcast_transcript
अब, आइए निम्नलिखित कोड का उपयोग करके एपीआई पर कॉल करें।
chatOutput = openai.ChatCompletion.create(model="gpt-3.5-turbo-16k", messages=[{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": request} ] )
और फिर आइए एपीआई से प्रतिक्रिया की जांच करें।
chatOutput.choices[0].messages.content
ये लो! पॉडकास्ट एपिसोड का सारांश उस प्रतिलेख पर आधारित है जिसे हमने व्हिस्पर का उपयोग करके तैयार किया था।
आप एपिसोड के मुख्य अंश निकालने के लिए इसी प्रक्रिया का उपयोग कर सकते हैं। यह संभावित श्रोता को बातचीत की एक झलक प्रदान करने का एक तरीका है।
इसे करने का तरीका काफी समान है. एकमात्र भाग जो बदलता है वह वह संकेत है जो मॉडल को प्राप्त होगा। सारांश मांगने के बजाय, आप उसे सूची प्रारूप में सबसे महत्वपूर्ण बिंदु निकालने के लिए कह सकते हैं। परिणाम संकेतों के साथ आपकी रचनात्मकता पर निर्भर करते हैं।
अब जब हम जानते हैं कि यह काम करता है, तो हम इसे स्थानीय रूप से चलाने के लिए सभी कोड को एक फ़ंक्शन में डाल सकते हैं।
तो, चलिए आगे बढ़ें और वह फ़ंक्शन बनाएं।
def transcribe_podcast(file_path): print("Starting podcast transcription") # Load the Whisper model import os import Whisper print("Loading the Whisper model") model = whisper.load_model("medium") print(model.device) # Do the transcription print("Starting the transcription") result = model.transcribe(file_path) # Return the transcribed text print("Transcription completed, returning results...") return result
आप उस फ़ंक्शन को कॉल कर सकते हैं, उसे ऑडियो फ़ाइल का पथ भेज सकते हैं और बदले में एक ट्रांसक्रिप्शन प्राप्त कर सकते हैं।
आप यह कैसे करेंगे इसका एक उदाहरण यहां दिया गया है।
output = transcribe_podcast('path_to_audio_file')
और फिर प्रतिलेख की सामग्री पर नज़र डालें।
output[text][:1000]
ठीक है, अब तक बहुत अच्छा है।
अब चूंकि यह स्थानीय रूप से काम करता है, तो इसे क्लाउड पर अपलोड करना बहुत अच्छा होगा ताकि आप इसे दूसरों को दिखा सकें और अपने l33t h4xx0r कोडिंग कौशल से मित्रों और परिवार को प्रभावित कर सकें। 😆
लेकिन वास्तव में नहीं, इसे किसी ऑनलाइन सेवा पर तैनात करना एक अच्छा विकल्प है ताकि अन्य लोग इसे आज़मा सकें।
और हम इसे भाग 2 में करने जा रहे हैं। एक क्लाउड फ़ंक्शन बनाना जो अनुरोध स्वीकार कर सके और उस फ़ंक्शन के परिणामों को देखने के लिए एक त्वरित फ्रंटएंड प्राप्त करना (जैसे पॉडकास्ट एपिसोड का सारांश और हाइलाइट्स)।
अभी हम इसे यहीं छोड़ देंगे।
अब तक आपके पास ऐप स्थानीय रूप से काम कर रहा है और आप अलग-अलग लंबाई के एपिसोड के साथ इसका परीक्षण कर सकते हैं और देख सकते हैं कि ट्रांसक्रिप्शन बनाने में व्हिस्पर को कितना औसत समय लगता है।
यहां तक पढ़ने के लिए धन्यवाद.
और मुझे आशा है कि मैं आपसे भाग 2 के लिए दोबारा मिलूंगा।
हैकरनून पर मुझे सब्सक्राइब करना न भूलें ताकि आप आने वाले लेखों को न चूकें।