Google Docs &का इस्तेमाल करके, अपने बिज़नेस मीटिंग की ट्रांसक्रिप्ट बनाएं मशीन लर्निंग

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 इंस्टॉल किया गया हो (वर्शन 5 या इसके बाद का वर्शन)
  • इंटरनेट और वेब ब्राउज़र का ऐक्सेस
  • Google खाता
  • Google Cloud Platform प्रोजेक्ट

2. अपना प्रोजेक्ट सेट अप करना

अपना क्लाउड प्रोजेक्ट बनाना

  1. Cloud Console में साइन इन करें. इसके बाद, नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. (अगर आपके पास पहले से कोई Gmail या Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZwci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

प्रोजेक्ट आईडी याद रखें. यह सभी Google Cloud प्रोजेक्ट के लिए एक यूनीक नाम होता है. ऊपर दिया गया नाम पहले ही इस्तेमाल किया जा चुका है. इसलिए, यह आपके लिए काम नहीं करेगा. माफ़ करें! इस कोड लैब में इसे बाद में PROJECT_ID के तौर पर दिखाया जाएगा.

  1. इसके बाद, Google Cloud संसाधनों का इस्तेमाल करने के लिए, आपको Cloud Console में बिलिंग चालू करनी होगी.

इस कोडलैब को पूरा करने में ज़्यादा खर्च नहीं आएगा. "सफ़ाई करना" सेक्शन में दिए गए निर्देशों का पालन करना न भूलें. इसमें आपको संसाधनों को बंद करने का तरीका बताया गया है, ताकि इस ट्यूटोरियल के बाद आपको बिलिंग न करनी पड़े. Google Cloud के नए उपयोगकर्ता, 300 डॉलर का क्रेडिट मुफ़्त में आज़माने के प्रोग्राम के लिए ज़रूरी शर्तें पूरी करते हैं.

Cloud Speech-to-Text API के लिए सेवा खाता कुंजी पाना

60f112dedc208681.png

  1. GCP कंसोल पर जाएं और अपना नया प्रोजेक्ट ढूंढें
  2. सेवा खाता बनाना
  3. सेवा खाते की कुंजी को JSON के तौर पर डाउनलोड करना
  4. एनवायरमेंट वैरिएबल GOOGLE_APPLICATION_CREDENTIALS को उस JSON फ़ाइल के फ़ाइल पाथ पर सेट करें जिसमें आपके सेवा खाते की कुंजी शामिल है. शेल सेशन को रीस्टार्ट करने पर, आपको वैरिएबल को फिर से सेट करना होगा.
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

उदाहरण के लिए:

$ export GOOGLE_APPLICATION_CREDENTIALS="/home/usr/downloads/ServiceAccount.json"

Docs API के लिए क्रेडेंशियल पाना

  1. GCP कंसोल में वापस जाकर, क्रेडेंशियल पर जाएं
  2. OAuth 2.0 कुंजी बनाएं और उसे JSON के तौर पर डाउनलोड करें
  3. फ़ाइल का नाम बदलकर credentials.json कर दें. साथ ही, पक्का करें कि यह आपके कोड की src/main/resources/ डायरेक्ट्री में हो

एपीआई चालू करें

3066cf79c136a078.png

  1. डैशबोर्ड टैब को चुनें. इसके बाद, एपीआई और सेवाएं चालू करें बटन पर क्लिक करें और इन दो एपीआई को चालू करें:
  2. बोली को लिखाई में बदलें
  3. Google Docs

846ba54aa7e1e584.png

अब आप आगे बढ़कर, अपने कोड पर काम करना शुरू कर सकते हैं.

3. अपना कोड सेट अप करना

सैंपल कोड पाना

सैंपल कोड पाने के लिए, अपने कंप्यूटर पर zip फ़ाइल डाउनलोड करें...

...या कमांड लाइन से GitHub रिपॉज़िटरी का क्लोन बनाएं.

$ git clone git@github.com:googleworkspace/docs-transcript-codelab.git

आपको start डायरेक्ट्री में मौजूद CreateTranscript.java फ़ाइल में काम करना होगा. gradle फ़ाइलों में बदलाव नहीं किया जाना चाहिए.

अपनी डायरेक्ट्री में, start फ़ोल्डर पर जाएं और CreateTranscript.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 की पुष्टि करने वाले पेज पर, आपके अनुरोध किए गए स्कोप दिखाए जाते हैं. इस पेज पर, उन्हें ऐप्लिकेशन इस्तेमाल करने की सहमति देनी होती है.

वैरिएबल के नाम बदलना

पक्का करें कि आपके प्रोजेक्ट के लिए, ऊपर दिए गए वैरिएबल सही तरीके से तय किए गए हों.

  1. पक्का करें कि AUDIO_FILENAME को उस डेमो फ़ाइल के नाम पर सेट किया गया हो जिसे आपको Speech to Text API को भेजना है. आपको अपनी CreateTranscript.java फ़ाइल में, यह पहले से ही सही तरीके से सेट किया हुआ दिखेगा.
  2. डाउनलोड की गई क्रेडेंशियल फ़ाइल का नाम बदलकर 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. Speech to Text API को कॉल करना

आपको अपने कोड में अगला टास्क, ऑडियो फ़ाइल के लिए लिखित ट्रांसक्रिप्ट पाना है. 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 एक ज़रूरी पैरामीटर है. इससे यह तय होता है कि आपको अपने दस्तावेज़ में टेक्स्ट कहां प्रिंट करना है. सोर्स कोड में, आपको अपने दस्तावेज़ के मुख्य हिस्से में टेक्स्ट डालना है.

आइए, नीचे दिए गए कोड को अपने फ़ंक्शन में डालें. इससे यह पता चलेगा कि Speech-to-Text API के नतीजों और Docs API को कॉल करने की सुविधा की मदद से, Google दस्तावेज़ में ऑडियो फ़ाइल की ट्रांसक्रिप्ट कैसे डाली जा सकती है:

BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest();
service.documents().batchUpdate(docId,
    body.setRequests(insertRequests)).execute();

अनुरोध बनाना

BatchUpdate अनुरोध करते समय, आपको दो बहुत ज़रूरी स्पेसिफ़िकेशन सेट करने होते हैं: आपको क्या प्रिंट करना है (.setText()) और आपको अपने दस्तावेज़ में कहां प्रिंट करना है (.setIndex(1)).

अब आपने बनाई गई Doc फ़ाइल में, अपनी ऑडियो फ़ाइल की ट्रांसक्रिप्ट जोड़ दी है.

8. कोड चलाया जा रहा है

अब आपके पास ऑडियो फ़ाइल का इस्तेमाल करने, उसकी ट्रांसक्रिप्ट पाने, और उसकी ट्रांसक्रिप्ट को नए Google दस्तावेज़ में प्रिंट करने के लिए ज़रूरी कोड है. इसलिए, अब हम इस कोड को इस्तेमाल करना शुरू करते हैं!

gradle बिल्ड सिस्टम का इस्तेमाल करके, Java कोड को चलाया जाएगा. इसलिए, आपको अपनी build.gradle फ़ाइल में यह बताना होगा कि आपको क्या बनाना है और क्या चलाना है. इस प्रोजेक्ट और अन्य प्रोजेक्ट में, पक्का करें कि mainClassName को उस Java क्लास के हिसाब से सेट किया गया हो जिसे आपको चलाना है.

बढ़िया! अब कोड चलाने के लिए तैयार हैं. इसके लिए, कमांड लाइन में यह टाइप करें:

$ gradle run

असली उपयोगकर्ता की पुष्टि करना

इस कोड को पहली बार चलाने पर, आपको टर्मिनल में एक यूआरएल दिखेगा. इसमें आपको अपने सेवा खाते में लॉग इन करने और उसके Google दस्तावेज़ों का ऐक्सेस देने के लिए कहा जाएगा. ऐक्सेस की अनुमति देने के बाद, आपको अपनी डायरेक्ट्री में एक नई फ़ाइल दिखेगी.

आपकी वर्किंग डायरेक्ट्री में, आपको tokens नाम का एक नया फ़ोल्डर दिखेगा. इसमें StoredCredential नाम की फ़ाइल होगी. यह वही पुष्टि करने वाला टोकन है जिसे आपने अभी दिया है. आपके क्लाइंट ने Google Auth Server से इसका अनुरोध किया था. इसे सर्वर के जवाब से निकाला गया है. अब इसे उस एपीआई को भेजा जाएगा जिसे आपने कॉल किया है.

समाधान

अगर आपका कोड काम नहीं कर रहा है, तो CreateTranscript.java फ़ोल्डर में मौजूद CreateTranscript.java फ़ाइल देखें. इस फ़ाइल में आपका पूरा कोड है. इसे सही तरीके से चलाने के लिए, कोड को इसी तरह से लिखा जाना चाहिए.

अब नतीजे देखते हैं.

9. अपने नतीजे देखना

आपने अभी-अभी एक नया Google दस्तावेज़ बनाया है. इसमें आपकी ऑडियो फ़ाइल की ट्रांसक्रिप्ट मौजूद है. इसलिए, आइए इसे देखें.

इस दस्तावेज़ को उस खाते से बनाया गया था जिससे असली उपयोगकर्ता ने अनुमति दी थी. इस सुविधा को और बेहतर बनाया जा सकता है. जैसे, Drive API का इस्तेमाल करके, इस दस्तावेज़ को अन्य लोगों के साथ अपने-आप शेयर किया जा सकता है.

आपके सोर्स कोड और दी गई ऑडियो फ़ाइल का इस्तेमाल करके, आपको यह दिखेगा:

ee73fcdd1dbcdcff.png

10. बधाई हो!

अब आपको Google दस्तावेज़ बनाने, Speech-to-Text API को कॉल करने, और अपनी ऑडियो फ़ाइल की ट्रांसक्रिप्ट को बनाए गए दस्तावेज़ में आउटपुट करने का तरीका पता चल गया है.

बेहतर बनाने के लिए सुझाव

यहां कुछ आइडिया दिए गए हैं, जिनकी मदद से बेहतर इंटिग्रेशन किया जा सकता है:

  • अपने कोड को इस तरह सेट अप करें कि जब आपकी Google Cloud Storage बकेट Drive में कोई ऑडियो फ़ाइल जोड़ी जाए, तो वह उसे सुन सके. साथ ही, इस कोड को लागू करने के लिए, Google Cloud Function को ट्रिगर कर सके
  • Google दस्तावेज़ में टेक्स्ट डालने की सुविधा का इस्तेमाल करना, जो खाली न हो

ज़्यादा जानें