1. সংক্ষিপ্ত বিবরণ
এই কোডল্যাবে, আপনি শিখবেন কিভাবে Google Cloud Speech to Text API এর মাধ্যমে একটি অডিও ফাইল পাঠাতে হয়, তারপর ট্রান্সক্রিপ্টটি একটি Google ডকুমেন্টে আউটপুট করতে হয়। Speech to Text API ব্যবহার করা সহজ, এবং ডেভেলপারদের অডিওকে টেক্সটে রূপান্তর করতে সক্ষম করার জন্য শক্তিশালী নিউরাল নেটওয়ার্ক প্রয়োগ করে! এছাড়াও, এটি মেশিন লার্নিং দ্বারা চালিত।
আপনি একটি নতুন ডকুমেন্ট তৈরি এবং লেখার জন্য Google Docs API ব্যবহার করবেন। আপনি একটি জাভা কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করবেন এবং gradle বিল্ড সিস্টেম ব্যবহার করে আপনার কোডটি চালাবেন এবং তারপর আপনার ফলাফলগুলি দেখতে Docs API ব্যবহার করবেন।
তুমি কি শিখবে
- গুগল ক্লাউড স্পিচ টু টেক্সট এপিআই কীভাবে ব্যবহার করবেন
- নতুন ডকুমেন্ট তৈরি করতে গুগল ডক্স এপিআই কীভাবে ব্যবহার করবেন
- ডকুমেন্টে লেখার জন্য ডক্স এপিআই কীভাবে ব্যবহার করবেন
তোমার যা লাগবে
- জাভা ইনস্টল করা আছে (সংস্করণ ৭ বা তার উপরে)
- গ্রেডল ইনস্টল করা হয়েছে (সংস্করণ ৫ বা তার উপরে)
- ইন্টারনেট এবং একটি ওয়েব ব্রাউজার অ্যাক্সেস
- একটি গুগল অ্যাকাউন্ট
- একটি গুগল ক্লাউড প্ল্যাটফর্ম প্রকল্প
2. আপনার প্রকল্প সেট আপ করুন
আপনার ক্লাউড প্রজেক্ট তৈরি করুন
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন অথবা বিদ্যমান একটি পুনরায় ব্যবহার করুন। (যদি আপনার ইতিমধ্যেই একটি Gmail বা Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রোজেক্ট আইডি মনে রাখবেন, সমস্ত গুগল ক্লাউড প্রোজেক্টের জন্য একটি অনন্য নাম (উপরের নামটি ইতিমধ্যেই নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এই কোডল্যাবে পরে এটিকে PROJECT_ID হিসাবে উল্লেখ করা হবে।
- এরপর, গুগল ক্লাউড রিসোর্স ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে।
এই কোডল্যাবটি চালাতে খুব বেশি খরচ হবে না, এমনকি যদি কিছু হয়ও। "ক্লিনিং আপ" বিভাগে থাকা যেকোনো নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে পরামর্শ দেয় যে কীভাবে রিসোর্সগুলি বন্ধ করতে হবে যাতে এই টিউটোরিয়ালের বাইরে আপনাকে বিলিংয়ের সম্মুখীন না হতে হয়। গুগল ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।
ক্লাউড স্পিচ-টু-টেক্সট API-এর জন্য একটি পরিষেবা অ্যাকাউন্ট কী পান

- GCP কনসোলে যান এবং আপনার নতুন প্রকল্পটি খুঁজুন।
- একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
- JSON হিসেবে একটি পরিষেবা অ্যাকাউন্ট কী ডাউনলোড করুন
- আপনার সার্ভিস অ্যাকাউন্ট কী ধারণকারী JSON ফাইলের ফাইল পাথে GOOGLE_APPLICATION_CREDENTIALS পরিবেশ পরিবর্তনশীল সেট করুন। আপনি যদি আপনার শেল সেশন পুনরায় চালু করেন, তাহলে আপনাকে আবার পরিবর্তনশীল সেট করতে হবে।
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
উদাহরণস্বরূপ:
$ export GOOGLE_APPLICATION_CREDENTIALS="/home/usr/downloads/ServiceAccount.json"
ডক্স এপিআই-এর জন্য শংসাপত্র পান
- GCP কনসোলে ফিরে, Credentials- এ যান।
- একটি OAuth 2.0 কী তৈরি করুন এবং এটি JSON হিসেবে ডাউনলোড করুন
-
credentials.jsonফাইলটির নাম পরিবর্তন করুন এবং নিশ্চিত করুন যে এটি আপনার কোডেরsrc/main/resources/ডিরেক্টরিতে আছে।
API গুলি সক্ষম করুন

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

এখন আপনি এগিয়ে যেতে এবং আপনার কোড নিয়ে কাজ শুরু করতে প্রস্তুত।
৩. আপনার কোড সেট আপ করুন
নমুনা কোডটি পান
নমুনা কোড পেতে, হয় আপনার কম্পিউটারে জিপ ফাইলটি ডাউনলোড করুন...
...অথবা কমান্ড লাইন থেকে GitHub রিপোজিটরি ক্লোন করুন।
$ git clone git@github.com:googleworkspace/docs-transcript-codelab.git
তুমি স্টার্ট ডিরেক্টরির ভিতরে CreateTranscript.java ফাইলে কাজ করবে। gradle ফাইলগুলি পরিবর্তন করা উচিত নয়।
আপনার ডিরেক্টরিতে, স্টার্ট ফোল্ডারে যান এবং 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 এর উপর ভিত্তি করে এই ভেরিয়েবলটি সেই অনুযায়ী সামঞ্জস্য করতে ভুলবেন না।
উদাহরণস্বরূপ, যদি আপনি কোনও Google ডকে না লিখে থাকেন, তাহলে আপনি স্কোপটি DOCUMENTS_READONLY তে পরিবর্তন করতে পারেন। SCOPES ভেরিয়েবলটি কেবল আপনার অ্যাপের সঠিক অ্যাক্সেস অনুমতির জন্যই নয়, ব্যবহারকারীদের সাথে স্বচ্ছতা বজায় রাখার জন্যও প্রয়োজনীয়। ব্যবহারকারীকে OAuth যাচাইকরণ পৃষ্ঠায় আপনার অনুরোধ করা নির্দিষ্ট স্কোপগুলি প্রদর্শিত হয় যেখানে তাদের অ্যাপটি ব্যবহার করার জন্য সম্মতি দিতে হবে।
ভেরিয়েবলের নাম পরিবর্তন করুন
নিশ্চিত করুন যে উপরের ভেরিয়েবলগুলি আপনার প্রকল্পের জন্য সঠিকভাবে ঘোষণা করা হয়েছে।
- Speech to Text API-তে আপনি যে ডেমো ফাইলটি পাঠাচ্ছেন তার নামে AUDIO_FILENAME সেট করা আছে কিনা তা নিশ্চিত করুন। আপনার CreateTranscript.java ফাইলে, আপনি ইতিমধ্যেই এটি সঠিকভাবে সেট করা দেখতে পাবেন।
- ডাউনলোড করা ক্রেডেনশিয়াল ফাইলের নাম CREDENTIALS_FILE_PATH রাখুন ('/
credentials.json'হওয়া উচিত)। নিশ্চিত করুন যে এই ফাইলটি আপনার ফোল্ডারেরsrc/main/resourcesডিরেক্টরির মধ্যে আছে, তাই যদি GitHub ক্লোনিং আপনার জন্য এটি না করে তবে এই ডিরেক্টরিটি তৈরি করতে ভুলবেন না।
এখন, আপনি আপনার কোড চালানো শুরু করতে পারেন!
৪. একটি ডক্স ক্লায়েন্ট শুরু করুন
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 (ভেরিয়েবল) তৈরি করা। পরিষেবাটি একটি অনুমোদিত API ক্লায়েন্টকে প্রতিনিধিত্ব করে, যার কাছে আপনার শংসাপত্র এবং এই ক্ষেত্রে, আপনার শেষ-ব্যবহারকারী প্রমাণীকরণ রয়েছে।
আপনার কোডে, ডক্স এপিআই-তে কল করা যেকোনো ফাংশনকে ডক্স-সম্পর্কিত কাজগুলি সম্পাদন করার জন্য এই service ভেরিয়েবলটি ব্যবহার করতে হবে।
৫. একটি গুগল ডকুমেন্ট তৈরি করা
আপনি একটি নির্দিষ্ট শিরোনাম সহ একটি নতুন গুগল ডকুমেন্ট তৈরি করবেন। তাহলে, createDocument ফাংশনে নীচের কোডটি কপি করুন।
Document doc = new Document().setTitle("Transcript for " +
AUDIO_FILENAME);
doc = service.documents().create(doc).execute();
String documentId = doc.getDocumentId();
return documentId;
এই ফাংশনটি Google Doc এর ড্রাইভ ফাইল আইডি প্রদান করে। এই একই আইডিটি Doc এর URL এর মধ্যে পাওয়া যাবে ।
এরপর, আপনি স্পিচ-টু-টেক্সট ক্লায়েন্টটি শুরু করবেন।
৬. স্পিচ টু টেক্সট এপিআই কল করুন
আপনার কোডে পরবর্তী কাজটি হল অডিও ফাইলের লিখিত ট্রান্সক্রিপ্টটি সংগ্রহ করা। 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 টাইপের একটি ট্রান্সক্রিপ্ট। সুতরাং, প্রতিটি আইটেমের দুটি অংশ থাকে: একটি টেক্সট ট্রান্সক্রিপ্ট এবং API এর সংশ্লিষ্ট কনফিডেন্স স্কোর।
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 হল একটি গুরুত্বপূর্ণ প্যারামিটার যা আপনার ডক-এর কোথায় আপনি আপনার লেখা প্রিন্ট করতে চান তা নির্দিষ্ট করে। সোর্স কোডে, আপনি আপনার ডক-এর বডিতে লেখা সন্নিবেশ করছেন।
আপনার স্পিচ-টু-টেক্সট API ফলাফল এবং ডক্স API-তে কলের মাধ্যমে কীভাবে আমরা একটি Google ডকে একটি অডিও ফাইলের ট্রান্সক্রিপ্ট সন্নিবেশ করতে পারি তা দেখতে নিচের কোডটি আপনার ফাংশনে সন্নিবেশ করা যাক:
BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest();
service.documents().batchUpdate(docId,
body.setRequests(insertRequests)).execute();
অনুরোধ তৈরি করা হচ্ছে
BatchUpdate অনুরোধ করার সময়, আপনাকে দুটি অত্যন্ত গুরুত্বপূর্ণ স্পেসিফিকেশন সেট করতে হবে: আপনি কী মুদ্রণ করতে চান ( .setText() ), এবং আপনার নথিতে কোথায় আপনি এটি করতে চান ( .setIndex(1) )।
আপনি এখন আপনার তৈরি ডকুমেন্টে আপনার অডিও ফাইলের ট্রান্সক্রিপ্টটি প্রবেশ করান।
৮. কোড চালানো
এখন যেহেতু আপনার কাছে একটি অডিও ফাইল নেওয়ার জন্য, এর ট্রান্সক্রিপ্টটি সংগ্রহ করার জন্য এবং একটি নতুন তৈরি গুগল ডকে এর ট্রান্সক্রিপ্টটি প্রিন্ট করার জন্য প্রয়োজনীয় সমস্ত কোড রয়েছে, আসুন এই অনুষ্ঠানটি শুরু করি!
যেহেতু আপনি gradle build সিস্টেম ব্যবহার করে আপনার জাভা কোড চালাতে যাচ্ছেন, তাই আপনাকে আপনার build.gradle ফাইলটি বলতে হবে ঠিক কী তৈরি এবং চালানো হবে। এই প্রকল্প এবং অন্যান্য প্রকল্পে, নিশ্চিত করুন যে আপনি mainClassName কে আপনি যে জাভা ক্লাসটি চালাতে চান তার সাথে সামঞ্জস্যপূর্ণ রেখেছেন।
দারুন! এখন আপনি আপনার কোডটি চালানোর জন্য প্রস্তুত। এটি করার জন্য, আপনার কমান্ড লাইনে নিম্নলিখিতটি টাইপ করুন:
$ gradle run
শেষ ব্যবহারকারী প্রমাণীকরণ
প্রথমবার যখন আপনি এই কোডটি চালাবেন, তখন আপনি টার্মিনালে একটি URL প্রিন্ট দেখতে পাবেন, যেখানে আপনাকে আপনার পরিষেবা অ্যাকাউন্টে লগ ইন করতে এবং এর Google ডক্সে অ্যাক্সেস অনুমোদন করতে বলা হবে। অ্যাক্সেস দেওয়ার পরে, আপনি আপনার ডিরেক্টরিতে সংরক্ষিত একটি নতুন ফাইল লক্ষ্য করবেন।
আপনার ওয়ার্কিং ডিরেক্টরির ভেতরে, আপনি tokens নামে একটি নতুন তৈরি ফোল্ডার দেখতে পাবেন, যার মধ্যে StoredCredential ফাইল রয়েছে। এটি হল আপনার দেওয়া প্রমাণীকরণ টোকেন , যা আপনার ক্লায়েন্ট Google Auth সার্ভার থেকে অনুরোধ করেছে, এর প্রতিক্রিয়া থেকে বের করা হয়েছে, এবং এখন আপনার কল করা যেকোনো API-তে পাঠানো হবে।
সমাধান
যদি আপনার কোডটি কাজ না করে, তাহলে finish ফোল্ডারের ভিতরে CreateTranscript.java ফাইলটি দেখুন। এই ফাইলটিতে আপনার সমস্ত কোড ঠিক সেইভাবে রয়েছে যা সফলভাবে চালানোর জন্য প্রয়োজন।
এবার ফলাফলটা দেখা যাক।
৯. আপনার ফলাফল দেখা
আপনি আপনার অডিও ফাইলের ট্রান্সক্রিপ্ট সম্বলিত একটি নতুন গুগল ডকুমেন্ট তৈরি করেছেন, তাই আসুন এটি একবার দেখে নেওয়া যাক।
এই ডকুমেন্টটি সেই অ্যাকাউন্টের মাধ্যমে তৈরি করা হয়েছে যার মাধ্যমে শেষ ব্যবহারকারী অনুমোদন প্রদান করেছিলেন। একটি সম্ভাব্য সম্প্রসারণ হল আপনি ড্রাইভ API ব্যবহার করে স্বয়ংক্রিয়ভাবে এই ডকুমেন্টটি অন্যদের সাথে শেয়ার করতে পারবেন।
আপনার সোর্স কোড এবং প্রদত্ত অডিও ফাইল ব্যবহার করে, আপনার যা দেখা উচিত তা এখানে:

১০. অভিনন্দন!
আপনি এখন শিখেছেন কিভাবে একটি গুগল ডক তৈরি করতে হয়, স্পিচ-টু-টেক্সট API-তে কল করতে হয় এবং আপনার তৈরি ডকে আপনার অডিও ফাইলের ট্রান্সক্রিপ্ট আউটপুট করতে হয়।
সম্ভাব্য উন্নতি
আরও আকর্ষণীয় ইন্টিগ্রেশন কীভাবে করা যায় সে সম্পর্কে এখানে কিছু ধারণা দেওয়া হল:
- আপনার গুগল ক্লাউড স্টোরেজ বাকেট ড্রাইভে কোনও অডিও ফাইল যুক্ত হলে শোনার জন্য আপনার কোডটি সেট আপ করুন এবং এই কোডটি কার্যকর করার জন্য একটি গুগল ক্লাউড ফাংশন ট্রিগার করুন।
- খালি না থাকা একটি Google ডকে টেক্সট ঢোকানোর চেষ্টা করুন
আরও জানুন
- গুগল ডক্স এপিআই ডেভেলপার ডকুমেন্টেশন পড়ুন
- google-docs-api ট্যাগের অধীনে Stack Overflow-এ প্রশ্ন পোস্ট করুন এবং উত্তর খুঁজুন