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_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-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 Client को शुरू करना

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 फ़ाइल आईडी दिखाता है. यह आईडी, दस्तावेज़ के यूआरएल में भी मिल सकता है.

इसके बाद, Speech-to-Text क्लाइंट को शुरू करें.

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 दस्तावेज़ में टेक्स्ट डालने की सुविधा का इस्तेमाल करना

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