Google ডক্স ব্যবহার করে আপনার ব্যবসায়িক মিটিংগুলির একটি প্রতিলিপি তৈরি করুন & মেশিন লার্নিং

১. সংক্ষিপ্ত বিবরণ

এই কোডল্যাবে, আপনি শিখবেন কীভাবে গুগল ক্লাউড স্পিচ টু টেক্সট এপিআই (Google Cloud Speech to Text API) ব্যবহার করে একটি অডিও ফাইল পাঠাতে হয় এবং তারপর সেটির ট্রান্সক্রিপ্ট একটি গুগল ডকুমেন্টে আউটপুট করতে হয়। স্পিচ টু টেক্সট এপিআই ব্যবহার করা সহজ এবং এটি শক্তিশালী নিউরাল নেটওয়ার্ক প্রয়োগ করে ডেভেলপারদের অডিওকে টেক্সটে রূপান্তর করতে সক্ষম করে! এছাড়াও, এটি মেশিন লার্নিং দ্বারা চালিত।

আপনি গুগল ডক্স এপিআই ব্যবহার করে একটি নতুন ডকুমেন্ট তৈরি করবেন এবং তাতে লিখবেন। আপনি একটি জাভা কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করবেন এবং গ্রেডল বিল্ড সিস্টেম ব্যবহার করে আপনার কোড চালাবেন, তারপর আপনার ফলাফল দেখার জন্য ডক্স এপিআই ব্যবহার করবেন।

আপনি যা শিখবেন

  • গুগল ক্লাউড স্পিচ টু টেক্সট এপিআই কীভাবে ব্যবহার করবেন
  • গুগল ডক্স এপিআই ব্যবহার করে কীভাবে একটি নতুন ডকুমেন্ট তৈরি করবেন
  • ডকস এপিআই ব্যবহার করে কীভাবে একটি ডকুমেন্টে লিখতে হয়

আপনার যা যা লাগবে

  • জাভা ইনস্টল করা আছে (সংস্করণ ৭ বা তার উপরে)
  • Gradle ইনস্টল করা আছে (সংস্করণ ৫ বা তার উপরে)
  • ইন্টারনেট এবং একটি ওয়েব ব্রাউজারে প্রবেশাধিকার
  • একটি গুগল অ্যাকাউন্ট
  • একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প

২. আপনার প্রজেক্টটি সেট আপ করুন।

আপনার ক্লাউড প্রজেক্ট তৈরি করুন

  1. ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। (যদি আপনার আগে থেকে কোনো Gmail বা Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLpGtQd5Q55

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5 OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

প্রজেক্ট আইডিটি মনে রাখবেন, যা সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে ব্যবহৃত হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে এটিকে পরবর্তীতে PROJECT_ID হিসাবে উল্লেখ করা হবে।

  1. এরপরে, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে।

এই কোডল্যাবটি চালাতে খুব বেশি খরচ হওয়ার কথা নয়, এমনকি আদৌ কোনো খরচ নাও হতে পারে। "পরিষ্কার-পরিচ্ছন্নতা" (Cleaning up) বিভাগে দেওয়া নির্দেশাবলী অবশ্যই অনুসরণ করবেন, যেখানে রিসোর্স বন্ধ করার পরামর্শ দেওয়া হয়েছে, যাতে এই টিউটোরিয়ালের বাইরে আপনার কোনো বিল না আসে। গুগল ক্লাউডের নতুন ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড স্পিচ-টু-টেক্সট এপিআই-এর জন্য একটি সার্ভিস অ্যাকাউন্ট কী নিন।

60f112dedc208681.png

  1. GCP কনসোলে যান এবং আপনার নতুন প্রজেক্টটি খুঁজুন।
  2. একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
  3. একটি পরিষেবা অ্যাকাউন্ট কী JSON হিসাবে ডাউনলোড করুন
  4. আপনার সার্ভিস অ্যাকাউন্ট কী ধারণকারী JSON ফাইলের ফাইল পাথে GOOGLE_APPLICATION_CREDENTIALS এনভায়রনমেন্ট ভেরিয়েবলটি সেট করুন। আপনি যদি আপনার শেল সেশন পুনরায় চালু করেন, তাহলে আপনাকে ভেরিয়েবলটি আবার সেট করতে হবে।
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"

উদাহরণস্বরূপ:

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

ডক্স এপিআই-এর জন্য ক্রেডেনশিয়াল পান

  1. GCP কনসোলে ফিরে এসে, Credentials- এ যান।
  2. একটি OAuth 2.0 কী তৈরি করুন এবং এটিকে JSON হিসেবে ডাউনলোড করুন।
  3. credentials.json ফাইলটির নাম পরিবর্তন করুন এবং নিশ্চিত করুন যে এটি আপনার কোডের src/main/resources/ ডিরেক্টরিতে রয়েছে।

এপিআই সক্ষম করুন

3066cf79c136a078.png

  1. ড্যাশবোর্ড ট্যাবটি নির্বাচন করুন, 'Enable APIs and Services' বোতামে ক্লিক করুন এবং নিম্নলিখিত ২টি API সক্রিয় করুন:
  2. স্পিচ টু টেক্সট
  3. গুগল ডক্স

846ba54aa7e1e584.png

এখন আপনি আপনার কোড নিয়ে কাজ শুরু করার জন্য প্রস্তুত।

৩. আপনার কোড সেট আপ করুন

নমুনা কোডটি নিন

স্যাম্পল কোড পেতে, জিপ ফাইলটি আপনার কম্পিউটারে ডাউনলোড করুন...

...অথবা কমান্ড লাইন থেকে গিটহাব রিপোজিটরিটি ক্লোন করুন।

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

আপনাকে স্টার্ট ডিরেক্টরির ভেতরে থাকা CreateTranscript.java ফাইলটিতে কাজ করতে হবে। গ্রেডল ফাইলগুলো পরিবর্তন করা যাবে না।

আপনার ডিরেক্টরিতে, স্টার্ট ফোল্ডারে যান এবং 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 Scopes-এর উপর ভিত্তি করে এই ভেরিয়েবলটি সেই অনুযায়ী পরিবর্তন করে নিন।

উদাহরণস্বরূপ, আপনি যদি কোনো গুগল ডকে না লেখেন, তাহলে আপনি স্কোপটি DOCUMENTS_READONLY তে পরিবর্তন করতে পারেন। আপনার অ্যাপের সঠিক অ্যাক্সেস পারমিশন থাকার জন্য SCOPES ভেরিয়েবলটি শুধু প্রয়োজনীয়ই নয়, বরং ব্যবহারকারীদের কাছে স্বচ্ছতা বজায় রাখার জন্যও এটি দরকারি। OAuth ভেরিফিকেশন পেজে ব্যবহারকারীকে আপনার অনুরোধ করা নির্দিষ্ট স্কোপগুলো দেখানো হয়, যেখানে অ্যাপটি ব্যবহার করার জন্য তাদের অবশ্যই সম্মতি দিতে হয়।

ভেরিয়েবলের নাম পরিবর্তন করুন

আপনার প্রোজেক্টের জন্য উপরের ভেরিয়েবলগুলো সঠিকভাবে ঘোষণা করা হয়েছে কিনা, তা নিশ্চিত করুন।

  1. নিশ্চিত করুন যে AUDIO_FILENAME-কে সেই ডেমো ফাইলের নামে সেট করা হয়েছে যা আপনি স্পিচ টু টেক্সট এপিআই-তে পাঠাচ্ছেন। আপনার CreateTranscript.java ফাইলে, এটি ইতিমধ্যেই সঠিকভাবে সেট করা দেখতে পাবেন।
  2. CREDENTIALS_FILE_PATH-কে ডাউনলোড করা ক্রেডেনশিয়াল ফাইলের নামে পরিবর্তন করুন (এটি ' credentials.json' হওয়া উচিত)। নিশ্চিত করুন যে এই ফাইলটি আপনার ফোল্ডারের src/main/resources ডিরেক্টরির ভিতরে আছে, তাই যদি GitHub ক্লোনিং এটি নিজে থেকে তৈরি না করে, তবে এই ডিরেক্টরিটি আপনাকে তৈরি করতে হবে।

এখন, আপনি আপনার কোড চালানো শুরু করতে পারেন!

৪. একটি ডক্স ক্লায়েন্ট চালু করুন

CreateTranscript.java ফাইলে, main মেথডের ডিক্লারেশনটি খুঁজুন এবং এর ভেতরে কী আছে তা একবার দেখে নিন:

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)-কে কল করে এমন যেকোনো ফাংশনকে এই service ভেরিয়েবলটি ব্যবহার করতে হবে।

৫. একটি গুগল ডকুমেন্ট তৈরি করা

আপনি একটি নির্দিষ্ট শিরোনাম দিয়ে একটি নতুন গুগল ডকুমেন্ট তৈরি করবেন। তাই, নিচের কোডটি createDocument ফাংশনে কপি করুন।

Document doc = new Document().setTitle("Transcript for " +
    AUDIO_FILENAME);
doc = service.documents().create(doc).execute();
String documentId = doc.getDocumentId();
return documentId;

এই ফাংশনটি গুগল ডকটির ড্রাইভ ফাইল আইডি ফেরত দেয়। এই একই আইডি ডকটির ইউআরএল-এর মধ্যেও পাওয়া যায়

এরপরে, আপনি স্পিচ-টু-টেক্সট ক্লায়েন্টটি চালু করবেন।

৬. স্পিচ টু টেক্সট এপিআই-কে কল করুন

আপনার কোডে পরবর্তী যে কাজটি করতে হবে তা হলো অডিও ফাইলটির লিখিত ট্রান্সক্রিপ্ট সংগ্রহ করা। 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() এডিট করতে হবে এবং যদি আপনার অডিও ফাইলের স্যাম্পল রেট হার্টজে (Hertz) ভিন্ন হয় (১৬০০ সর্বোত্তম), তাহলে 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;

৭. একটি ডকুমেন্টে টেক্সট সন্নিবেশ করুন।

এখন আপনি ট্রান্সক্রিপ্ট টেক্সটটি গুগল ডকে যুক্ত করবেন। কোনো ডকুমেন্টে পরিবর্তন করতে হলে আপনাকে BatchUpdate মেথডটি ব্যবহার করতে হবে। BatchUpdate হলো বিভিন্ন ধরনের রাইট রিকোয়েস্টের জন্য একটি কন্টেইনার এবং এখানে আপনি InsertTextRequest ব্যবহার করবেন।

EndOfSegmentLocation একটি গুরুত্বপূর্ণ প্যারামিটার যা নির্দিষ্ট করে দেয় যে আপনি আপনার ডকের কোথায় টেক্সট প্রিন্ট করতে চান। সোর্স কোডে, আপনি আপনার ডকের বডিতে টেক্সট ইনসার্ট করছেন।

আপনার স্পিচ-টু-টেক্সট এপিআই-এর ফলাফল এবং ডকস এপিআই-এর কলগুলো একত্রিত করে কীভাবে একটি অডিও ফাইলের ট্রান্সক্রিপ্ট গুগল ডকে যুক্ত করা যায়, তা দেখতে নিচের কোডটি আপনার ফাংশনে যোগ করুন:

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

অনুরোধ তৈরি করা

BatchUpdate অনুরোধ করার সময়, আপনাকে দুটি খুব গুরুত্বপূর্ণ বিষয় নির্দিষ্ট করতে হয়: আপনি কী প্রিন্ট করতে চান ( .setText() ), এবং আপনার ডকুমেন্টের কোথায় তা করতে চান ( .setIndex(1) )।

আপনি এখন আপনার তৈরি করা ডক-এ আপনার অডিও ফাইলের ট্রান্সক্রিপ্টটি যুক্ত করেছেন।

৮. কোডটি চালানো

এখন যেহেতু আপনার কাছে একটি অডিও ফাইল থেকে তার ট্রান্সক্রিপ্ট বের করা এবং নতুন তৈরি করা একটি গুগল ডকে তা প্রিন্ট করার জন্য প্রয়োজনীয় সমস্ত কোড রয়েছে, চলুন কাজটি শুরু করা যাক!

যেহেতু আপনি গ্রেডল বিল্ড সিস্টেম ব্যবহার করে আপনার জাভা কোড রান করতে যাচ্ছেন, তাই আপনাকে আপনার build.gradle ফাইলকে জানাতে হবে যে ঠিক কী বিল্ড এবং রান করতে হবে। এই প্রজেক্ট এবং অন্যান্য প্রজেক্টে, নিশ্চিত করুন যে আপনি যে জাভা ক্লাসটি রান করতে চান, তার সাথে mainClassName টি সামঞ্জস্যপূর্ণ থাকে।

চমৎকার! এখন আপনি আপনার কোড রান করার জন্য প্রস্তুত। এটি করার জন্য, আপনার কমান্ড লাইনে নিম্নলিখিতটি টাইপ করুন:

$ gradle run

শেষ ব্যবহারকারীর প্রমাণীকরণ

আপনি প্রথমবার এই কোডটি চালালে, টার্মিনালে একটি URL প্রিন্ট হতে দেখবেন, যেখানে আপনাকে আপনার সার্ভিস অ্যাকাউন্টে লগ ইন করে এর গুগল ডক্স-এ অ্যাক্সেসের অনুমতি দিতে বলা হবে। অ্যাক্সেসের অনুমতি দেওয়ার পর, আপনি আপনার ডিরেক্টরিতে একটি নতুন ফাইল জমা হতে দেখবেন।

আপনার ওয়ার্কিং ডিরেক্টরির ভিতরে, আপনি 'tokens' নামে একটি নতুন তৈরি ফোল্ডার দেখতে পাবেন, যার মধ্যে 'StoredCredential' নামের একটি ফাইল রয়েছে। এটি হলো আপনার দেওয়া অথেনটিকেশন টোকেন , যা আপনার ক্লায়েন্ট গুগল অথেনটিকেশনের সার্ভার থেকে অনুরোধ করে তার প্রতিক্রিয়া থেকে সংগ্রহ করেছে এবং এখন থেকে আপনার কল করা যেকোনো এপিআই-তে পাঠিয়ে দেবে।

সমাধান

যদি আপনার কোড কাজ না করে, তাহলে finish ফোল্ডারের ভেতরে থাকা CreateTranscript.java ফাইলটি দেখুন। সফলভাবে চালানোর জন্য আপনার সমস্ত কোড ঠিক যেভাবে থাকা দরকার, সেভাবেই এই ফাইলটিতে রয়েছে।

এবার ফলাফলটি দেখা যাক।

৯. আপনার ফলাফল দেখা

আপনি এইমাত্র আপনার অডিও ফাইলের প্রতিলিপি সম্বলিত একটি নতুন গুগল ডকুমেন্ট তৈরি করেছেন, তাই চলুন এটি দেখে নেওয়া যাক।

এই ডকটি সেই অ্যাকাউন্টের মাধ্যমে তৈরি করা হয়েছে, যেটি দিয়ে অন্তিম ব্যবহারকারী অনুমোদন প্রদান করেছেন। এর একটি সম্ভাব্য সম্প্রসারণ হলো, আপনি ড্রাইভ এপিআই (Drive API) ব্যবহার করে এই ডকুমেন্টটি স্বয়ংক্রিয়ভাবে অন্যদের সাথে শেয়ার করতে পারবেন।

আপনার সোর্স কোড এবং প্রদত্ত অডিও ফাইল ব্যবহার করে, আপনি যা দেখতে পাবেন তা নিচে দেওয়া হলো:

ee73fcdd1dbcdcff.png

১০. অভিনন্দন!

আপনি এখন শিখেছেন কীভাবে একটি গুগল ডক তৈরি করতে হয়, স্পিচ-টু-টেক্সট এপিআই-কে কল করতে হয় এবং আপনার তৈরি করা ডকটিতে অডিও ফাইলের ট্রান্সক্রিপ্ট আউটপুট করতে হয়।

সম্ভাব্য উন্নতি

আরও আকর্ষণীয় একীকরণ তৈরির কিছু উপায় নিচে দেওয়া হলো:

  • আপনার Google Cloud Storage বাকেট Drive-এ যখন কোনো অডিও ফাইল যোগ করা হয়, তখন তা শোনার জন্য আপনার কোডটি সেট আপ করুন এবং এই কোডটি কার্যকর করার জন্য একটি Google Cloud Function ট্রিগার করুন।
  • একটি নন-এম্পটি গুগল ডকে টেক্সট ইনসার্ট করে দেখুন।

আরও জানুন