1. खास जानकारी
इस कोडलैब में, आपको Google Cloud Speech to Text API की मदद से ऑडियो फ़ाइल भेजने का तरीका बताया जाएगा. इसके बाद, ट्रांसक्रिप्ट को Google दस्तावेज़ में एक्सपोर्ट करने का तरीका भी बताया जाएगा. Speech to Text API को इस्तेमाल करना आसान है. इसमें, बेहतरीन न्यूरल नेटवर्क इस्तेमाल किए जाते हैं. इनकी मदद से डेवलपर, ऑडियो को टेक्स्ट में बदल पाते हैं! साथ ही, यह मशीन लर्निंग की मदद से काम करता है.
नया दस्तावेज़ बनाने और उसमें बदलाव करने के लिए, Google Docs API का इस्तेमाल करें. आपको Java कमांड-लाइन ऐप्लिकेशन बनाने और Gradle बिल्ड सिस्टम का इस्तेमाल करके, अपना कोड चलाने की सुविधा मिलेगी. इसके बाद, नतीजे देखने के लिए Docs API का इस्तेमाल किया जाएगा.
आप इन चीज़ों के बारे में जानेंगे
- Google Cloud के Speech to Text API को इस्तेमाल करने का तरीका
- नया दस्तावेज़ बनाने के लिए Google Docs API का इस्तेमाल करने का तरीका
- किसी दस्तावेज़ पर लिखने के लिए Docs API का इस्तेमाल करने का तरीका
आपको इनकी ज़रूरत होगी
- Java से इंस्टॉल किया गया वर्शन (वर्शन 7 या इसके बाद वाले वर्शन)
- Gradle इंस्टॉल किया गया (पांच या इसके बाद वाले वर्शन)
- इंटरनेट और वेब ब्राउज़र का ऐक्सेस
- Google खाता
- Google Cloud Platform प्रोजेक्ट
2. अपना प्रोजेक्ट सेट अप करना
अपना क्लाउड प्रोजेक्ट बनाएं
- Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से Gmail या Workspace खाता नहीं है, तो आपको नया खाता बनाना बनाना होगा.)
प्रोजेक्ट आईडी याद रखें. यह Google Cloud के सभी प्रोजेक्ट के लिए एक खास नाम होता है (ऊपर दिया गया नाम पहले ही ले लिया गया है और यह आपके लिए काम नहीं करेगा!). बाद में, इस कोडलैब को इस कोडलैब में PROJECT_ID
के तौर पर दिखाया जाएगा.
- इसके बाद, आपको Google Cloud के संसाधनों का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी.
इस कोडलैब का इस्तेमाल करने पर, आपको ज़्यादा पैसे नहीं चुकाने होंगे. "साफ़ करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें सेक्शन में, संसाधनों को बंद करने का तरीका बताया गया है. इससे इस ट्यूटोरियल के अलावा बिलिंग की सुविधा नहीं मिलेगी. Google Cloud के नए उपयोगकर्ता, 300USD डॉलर के मुफ़्त में आज़माने वाले प्रोग्राम में हिस्सा ले सकते हैं.
Cloud Speech-to-Text API के लिए सेवा खाते की कुंजी पाएं
- GCP कंसोल पर जाएं और अपना नया प्रोजेक्ट ढूंढें
- सेवा खाता बनाना
- सेवा खाते की कुंजी को JSON के तौर पर डाउनलोड करें
- एनवायरमेंट वैरिएबल GOOGLE_APPLICATION_CREDENTIALS को उस JSON फ़ाइल के फ़ाइल पाथ पर सेट करें जिसमें आपकी सेवा खाता कुंजी है. अगर शेल सेशन को रीस्टार्ट किया जाता है, तो वैरिएबल को फिर से सेट करना होगा.
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
उदाहरण के लिए:
$ export GOOGLE_APPLICATION_CREDENTIALS="/home/usr/downloads/ServiceAccount.json"
Docs API के लिए क्रेडेंशियल पाएं
- GCP कंसोल में वापस जाकर, क्रेडेंशियल पर जाएं
- OAuth 2.0 कुंजी बनाएं और उसे JSON के तौर पर डाउनलोड करें
- इस फ़ाइल का नाम
credentials.json
बदलें. साथ ही, पक्का करें कि यह आपके कोड कीsrc/main/resources/
डायरेक्ट्री में हो
एपीआई चालू करें
- डैशबोर्ड टैब चुनें, एपीआई और सेवाएं चालू करें बटन पर क्लिक करें और इन दो एपीआई को चालू करें:
- बोली को लिखाई में बदलना
- Google दस्तावेज़
अब आप अपने कोड के साथ काम करने के लिए तैयार हैं.
3. अपना कोड सेट अप करें
सैंपल कोड पाएं
नमूना कोड पाने के लिए, या तो अपने कंप्यूटर पर ज़िप फ़ाइल डाउनलोड करें...
...या कमांड लाइन से, GitHub रिपॉज़िटरी का क्लोन बनाएं.
$ git clone git@github.com:googleworkspace/docs-transcript-codelab.git
आपका काम start डायरेक्ट्री में मौजूद CreateTranscript.java
फ़ाइल पर होगा. Gradle फ़ाइलों में बदलाव नहीं किया जाना चाहिए.
अपनी डायरेक्ट्री में, start फ़ोल्डर पर जाएं और CreateTrans.java फ़ाइल को खोलें. नीचे की ओर स्क्रोल करें और जहां आपको CreateTranscript
क्लास का एलान दिखेगा.
public class CreateTranscript {
private static final String CREDENTIALS_FILE_PATH = "/credentials.json";
// Specify audio file name below.
private static final String AUDIO_FILENAME = "audioFile.wav";
private static final String TOKENS_DIRECTORY_PATH = "tokens";
private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
private static final String APPLICATION_NAME = "CreateTranscript";
private static final List<String> SCOPES = Collections.singletonList(DocsScopes.DOCUMENTS);
अपने SCOPES
वैरिएबल के लिए, आपने बताया है कि आपका कोड आपके उपयोगकर्ताओं के Google Docs दस्तावेज़ों को देख सकेगा और उन्हें मैनेज कर सकेगा. अगर आपके कोड को इस ऐक्सेस के अलावा, या इससे अलग अनुमति की ज़रूरत है, तो OAuth 2.0 Google API के दायरे के आधार पर, इस वैरिएबल में बदलाव करना न भूलें.
उदाहरण के लिए, अगर आपको किसी Google दस्तावेज़ पर कुछ नहीं लिखना है, तो स्कोप को बदलकर DOCUMENTS_READONLY
किया जा सकता है. SCOPES
वैरिएबल आपके ऐप्लिकेशन को ऐक्सेस की सही अनुमतियां देने के साथ-साथ, उपयोगकर्ताओं के साथ पारदर्शिता बनाए रखने के लिए भी ज़रूरी है. OAuth की पुष्टि करने वाले पेज पर, उपयोगकर्ता को वे खास दायरे दिखाए जाते हैं जिनका आपने अनुरोध किया है. इस पेज पर, उपयोगकर्ता को ऐप्लिकेशन इस्तेमाल करने की सहमति देनी होगी.
वैरिएबल का नाम बदलें
पक्का करें कि आपके प्रोजेक्ट के लिए ऊपर दिए गए वैरिएबल सही तरीके से बताए गए हैं.
- पक्का करें कि AUDIO_FILENAME को उस डेमो फ़ाइल के नाम पर सेट किया गया हो जिसे Speech to Text API में भेजा जा रहा है. आपकी CreateTranscript.java फ़ाइल में, यह पहले से ही सही तरीके से सेट दिख रहा होगा.
- क्रेडेंशियल वाली डाउनलोड की गई फ़ाइल का नाम CREDENTIALS_FILE_PATH में बदलें (यह ‘/
credentials.json'
होना चाहिए). पक्का करें कि यह फ़ाइल आपके फ़ोल्डर कीsrc/main/resources
डायरेक्ट्री में हो. इसलिए, अगर GitHub पर कॉपी करने से ऐसा नहीं होता है, तो यह डायरेक्ट्री बनाएं.
अब, कोड का इस्तेमाल किया जा सकता है!
4. Docs क्लाइंट का इस्तेमाल शुरू करें
CreateTranscript.java फ़ाइल में, एलान करने के मुख्य तरीके को ढूंढें और देखें कि इसमें क्या-क्या है:
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
Docs service = new Docs.Builder(HTTP_TRANSPORT, JSON_FACTORY,
getCredentials(HTTP_TRANSPORT))
.setApplicationName(APPLICATION_NAME)
.build();
फ़ंक्शन की अनुमति देना
यहां सबसे पहले किया जाने वाला टास्क, Docs service
(वैरिएबल) बनाना है. यह सेवा, अनुमति वाले ऐसे एपीआई क्लाइंट को दिखाती है जिसमें आपके क्रेडेंशियल मौजूद हैं. इस मामले में, असली उपयोगकर्ता की पुष्टि करने की सुविधा भी मिलती है.
आपके कोड में, Docs API को कॉल करने वाले किसी भी फ़ंक्शन को Docs से जुड़े टास्क करने के लिए, इस service
वैरिएबल का इस्तेमाल करना होगा.
5. Google दस्तावेज़ बनाना
आप एक खास टाइटल के साथ एक नया Google दस्तावेज़ बनाएंगे. इसलिए, आइए नीचे दिए गए कोड को createDocument
फ़ंक्शन में कॉपी करते हैं.
Document doc = new Document().setTitle("Transcript for " +
AUDIO_FILENAME);
doc = service.documents().create(doc).execute();
String documentId = doc.getDocumentId();
return documentId;
यह फ़ंक्शन Google दस्तावेज़ का Drive फ़ाइल आईडी दिखाता है. यही आईडी दस्तावेज़ के यूआरएल में मिल सकता है.
इसके बाद, आपको बोली को लिखाई में बदलने वाले क्लाइंट की सुविधा शुरू करनी होगी.
6. बोली को लिखाई में बदलने वाले एपीआई को कॉल करें
अब आपको अपने कोड में जो अगला काम करना है वह है, ऑडियो फ़ाइल की लिखित ट्रांसक्रिप्ट हासिल करना. CreateTranscript.java के अंदर getTranscript()
फ़ंक्शन ढूंढें.
सबसे पहले, ऑडियो फ़ाइल का पाथ और ऑडियो बाइट पता करें:
SpeechClient speech = SpeechClient.create();
Path path = Paths.get(AUDIO_FILENAME);
byte[] data = Files.readAllBytes(path);
ByteString audioBytes = ByteString.copyFrom(data);
बोली पहचान कॉन्फ़िगर करें
इसके बाद, आपको RecognitionConfig
वैरिएबल सही तरीके से शुरू करना होगा.
यहां config
यह जानकारी देता है कि बोली पहचानने वाले व्यक्ति को आपका अनुरोध किस तरह प्रोसेस करना चाहिए. उदाहरण के लिए, अगर आपकी ऑडियो फ़ाइल अंग्रेज़ी के अलावा किसी दूसरी भाषा में है, तो आपको setLanguageCode()
में बदलाव करना होगा. अगर आपकी ऑडियो फ़ाइल का सैंपल रेट, हर्टज़ में अलग है (1600 बेहतर है), तो आपको setSampleRateHertz()
बदलना होगा.
RecognitionConfig config =
RecognitionConfig.newBuilder()
.setEncoding(AudioEncoding.LINEAR16)
.setLanguageCode("en-US")
.setSampleRateHertz(8000)
.build();
RecognitionAudio audio =
RecognitionAudio.newBuilder().setContent(audioBytes).build();
RecognizeResponse response = speech.recognize(config, audio);
List<SpeechRecognitionResult> results = response.getResultsList();
टेक्स्ट तैयार करना
आखिर में, ऑडियो फ़ाइल के ट्रांसक्रिप्ट result
वैरिएबल को मैनेज करें और उसे किसी दस्तावेज़ में शामिल करने के लिए तैयार करें.
खोज के नतीजों में दिखने वाला हर आइटम, SpeechRecognitionAlternatives
टाइप की ट्रांसक्रिप्ट है. इसलिए, हर आइटम के दो हिस्से होते हैं: एक टेक्स्ट ट्रांसक्रिप्ट और एपीआई से जुड़ा कॉन्फ़िडेंस स्कोर.
List<Request> requests = new ArrayList<>();
for (SpeechRecognitionResult result : results) {
// Using the first + most likely alternative transcript
SpeechRecognitionAlternative alternative =
result.getAlternativesList().get(0);
String toInsert = alternative.getTranscript();
// Add requests array list to return.
requests.add(
new Request()
.setInsertText(
new InsertTextRequest()
.setText(toInsert)
.setEndOfSegmentLocation(new
EndOfSegmentLocation().setSegmentId(""))));
}
return requests;
7. किसी दस्तावेज़ में टेक्स्ट डालना
अब Google दस्तावेज़ में ट्रांसक्रिप्ट टेक्स्ट डाला जा सकता है. किसी दस्तावेज़ में बदलाव करने के लिए, आपको BatchUpdate
तरीका अपनाना होगा. BatchUpdate
अलग-अलग तरह के अनुरोध लिखने के लिए एक कंटेनर है और यहां आपको InsertTextRequest
का इस्तेमाल करना होगा.
EndOfSegmentLocation
एक ज़रूरी पैरामीटर है, जो बताता है कि आपके दस्तावेज़ में आपको अपना टेक्स्ट कहां प्रिंट करना है. सोर्स कोड में, आपके दस्तावेज़ के मुख्य हिस्से में टेक्स्ट डाला जा रहा है.
आइए, आपके फ़ंक्शन में नीचे दिया गया कोड इंसर्ट करते हैं, ताकि यह देख सकें कि Docs API में कॉल करने की सुविधा के साथ आपके Speech-to-Text API के नतीजे किस तरह Google दस्तावेज़ में ऑडियो फ़ाइल की ट्रांसक्रिप्ट डालने की अनुमति दे सकते हैं:
BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest();
service.documents().batchUpdate(docId,
body.setRequests(insertRequests)).execute();
अनुरोध किया जा रहा है
BatchUpdate अनुरोध करते समय आपने दो बहुत ज़रूरी जानकारी सेट की है: आपको क्या प्रिंट करना है (.setText()
), और दस्तावेज़ में कहां प्रिंट करना है (.setIndex(1)
).
अब आपने ऑडियो फ़ाइल की ट्रांसक्रिप्ट अपने बनाए गए दस्तावेज़ में डाल दी है.
8. कोड चलाया जा रहा है
अब आपके पास वह सभी कोड है जिसकी ज़रूरत आपको ऑडियो फ़ाइल लेने, उसकी ट्रांसक्रिप्ट पाने, और उसकी ट्रांसक्रिप्ट को एक नए बनाए गए Google दस्तावेज़ में प्रिंट करने के लिए होती है, चलिए शुरू करते हैं!
आप Gradle बिल्ड सिस्टम का इस्तेमाल करके अपना Java कोड चलाने जा रहे हैं, इसलिए आपको अपनी build.gradle फ़ाइल को बताना होगा कि उसे वाकई क्या बनाना और चलाना है. इस प्रोजेक्ट और अन्य कामों में, पक्का करें कि mainClassName
को उस java क्लास के मुताबिक बनाए रखें जिसे आपको चलाना है.
बढ़िया! अब आप अपना कोड चलाने के लिए तैयार हैं. ऐसा करने के लिए, अपनी कमांड लाइन में यह टाइप करें:
$ gradle run
असली उपयोगकर्ता की पुष्टि करना
जब पहली बार इस कोड को चलाया जाएगा, तो आपको टर्मिनल में एक यूआरएल दिखेगा. इस यूआरएल में आपसे अपने सेवा खाते में लॉग इन करने और इसके Google Docs को ऐक्सेस करने की अनुमति देने के लिए कहा जाएगा. ऐक्सेस देने के बाद, आपको डायरेक्ट्री में सेव की गई एक नई फ़ाइल दिखेगी.
आपकी वर्किंग डायरेक्ट्री के अंदर, आपको टोकन नाम वाला नया फ़ोल्डर दिखेगा. इसमें StoredCredential फ़ाइल होगी. यह आपकी ओर से अभी दिया गया पुष्टि करने वाला टोकन है. आपके क्लाइंट ने Google के पुष्टि करने वाले सर्वर से इसके लिए अनुरोध किया था. यह टोकन, रिस्पॉन्स से लिया गया था. अब इसे हर उस एपीआई पर भेजा जाएगा जिसे आपने कॉल किया है.
समाधान
अगर आपका कोड काम नहीं कर रहा है, तो CreateTranscript.java फ़ाइल के CreateTranscript.java फ़ोल्डर के अंदर एक नज़र डालें. इस फ़ाइल में आपके सभी कोड ठीक उसी तरह दिए गए हैं जिस तरह से सफलतापूर्वक चलने के लिए उसका होना ज़रूरी है.
आइए, अब नतीजे पर नज़र डालते हैं.
9. अपने नतीजे देखना
आपने अभी-अभी एक नया Google दस्तावेज़ बनाया है, जिसमें आपकी ऑडियो फ़ाइल की ट्रांसक्रिप्ट शामिल है. चलिए, इस पर एक नज़र डालते हैं.
इस दस्तावेज़ को असली उपयोगकर्ता ने जिस खाते से अनुमति दी थी उसका इस्तेमाल करके बनाया गया था. एक संभावित विस्तार यह है कि आप डिस्क API का उपयोग करके इस दस्तावेज़ को अन्य लोगों के साथ अपने आप शेयर कर सकते हैं.
यहां बताया गया है कि अपने सोर्स कोड और उपलब्ध कराई गई ऑडियो फ़ाइल का इस्तेमाल करके, आपको क्या देखना चाहिए:
10. बधाई हो!
अब आपने Google दस्तावेज़ बनाने, बोली को लिखाई में बदलने वाले एपीआई पर कॉल करने, और ऑडियो फ़ाइल की ट्रांसक्रिप्ट को बनाए गए दस्तावेज़ में एक्सपोर्ट करने का तरीका जान लिया है.
संभावित सुधार
यहां कुछ तरीके दिए गए हैं जिनसे आप ज़्यादा असरदार इंटिग्रेशन बना सकते हैं:
- Google Cloud Storage बकेट 'डिस्क' में कोई ऑडियो फ़ाइल जोड़े जाने पर सुनने के लिए अपना कोड सेट अप करें. साथ ही, इस कोड को चलाने के लिए Google Cloud फ़ंक्शन को ट्रिगर करें
- किसी ऐसे Google दस्तावेज़ में टेक्स्ट डालकर खोजें जो खाली नहीं हो
ज़्यादा जानें
- Google Docs API डेवलपर से जुड़े दस्तावेज़ पढ़ें
- google-docs-api टैग के तहत Stack Overflow पर सवाल पोस्ट करें और जवाब पाएं