1. ওভারভিউ
এই কোডল্যাবে, আপনি শিখবেন কীভাবে Google ক্লাউড স্পিচ-এ টেক্সট API- এর মাধ্যমে একটি অডিও ফাইল পাঠাতে হয়, তারপর একটি Google ডকুমেন্টে ট্রান্সক্রিপ্টটি আউটপুট করে। স্পিচ টু টেক্সট এপিআই ব্যবহার করা সহজ, এবং শক্তিশালী নিউরাল নেটওয়ার্ক প্রয়োগ করে যাতে ডেভেলপাররা অডিওকে টেক্সটে পরিণত করতে সক্ষম হয়! এছাড়াও, এটি মেশিন লার্নিং দ্বারা চালিত।
আপনি একটি নতুন নথি তৈরি করতে এবং লিখতে Google ডক্স API ব্যবহার করবেন৷ আপনি একটি জাভা কমান্ড-লাইন অ্যাপ্লিকেশন তৈরি করবেন এবং gradle বিল্ড সিস্টেম ব্যবহার করে আপনার কোড চালাবেন তারপর আপনার ফলাফল দেখতে ডক্স API ব্যবহার করুন।
আপনি কি শিখবেন
- গুগল ক্লাউড স্পিচ টু টেক্সট API কীভাবে ব্যবহার করবেন
- একটি নতুন নথি তৈরি করতে কীভাবে Google ডক্স API ব্যবহার করবেন
- একটি নথিতে লিখতে ডক্স API কীভাবে ব্যবহার করবেন
আপনি কি প্রয়োজন হবে
- জাভা ইনস্টল করা (সংস্করণ 7 বা তার উপরে)
- Gradle ইনস্টল করা (সংস্করণ 5 বা তার উপরে)
- ইন্টারনেট এবং একটি ওয়েব ব্রাউজারে অ্যাক্সেস
- একটি Google অ্যাকাউন্ট
- একটি Google ক্লাউড প্ল্যাটফর্ম প্রকল্প
2. আপনার প্রকল্প সেট আপ করুন
আপনার ক্লাউড প্রকল্প তৈরি করুন
- ক্লাউড কনসোলে সাইন ইন করুন এবং একটি নতুন প্রকল্প তৈরি করুন বা বিদ্যমান একটি পুনরায় ব্যবহার করুন৷ (যদি আপনার ইতিমধ্যেই একটি Gmail বা Workspace অ্যাকাউন্ট না থাকে, তাহলে আপনাকে অবশ্যই একটি তৈরি করতে হবে।)
প্রজেক্ট আইডিটি মনে রাখবেন, সমস্ত Google ক্লাউড প্রকল্প জুড়ে একটি অনন্য নাম (উপরের নামটি ইতিমধ্যে নেওয়া হয়েছে এবং আপনার জন্য কাজ করবে না, দুঃখিত!)। এটি পরে এই কোডল্যাবে PROJECT_ID
হিসাবে উল্লেখ করা হবে।
- এর পরে, Google ক্লাউড সংস্থানগুলি ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং সক্ষম করতে হবে৷
এই কোডল্যাবের মাধ্যমে চালানোর জন্য খুব বেশি খরচ করা উচিত নয়, যদি কিছু থাকে। "ক্লিনিং আপ" বিভাগে যে কোনও নির্দেশাবলী অনুসরণ করতে ভুলবেন না যা আপনাকে কীভাবে সংস্থানগুলি বন্ধ করতে হবে তা পরামর্শ দেয় যাতে আপনি এই টিউটোরিয়ালের বাইরে বিলিং করতে না পারেন৷ Google ক্লাউডের নতুন ব্যবহারকারীরা $300USD ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য৷
ক্লাউড স্পিচ-টু-টেক্সট API-এর জন্য একটি পরিষেবা অ্যাকাউন্ট কী পান
- GCP কনসোলে যান এবং আপনার নতুন প্রকল্প খুঁজুন
- একটি পরিষেবা অ্যাকাউন্ট তৈরি করুন
- JSON হিসাবে একটি পরিষেবা অ্যাকাউন্ট কী ডাউনলোড করুন
- এনভায়রনমেন্ট ভেরিয়েবল GOOGLE_APPLICATION_CREDENTIALS-কে JSON ফাইলের ফাইল পাথে সেট করুন যাতে আপনার পরিষেবা অ্যাকাউন্ট কী রয়েছে। আপনি যদি আপনার শেল সেশন পুনরায় চালু করেন, তাহলে আপনাকে আবার পরিবর্তনশীল সেট করতে হবে।
$ export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
যেমন:
$ export GOOGLE_APPLICATION_CREDENTIALS="/home/usr/downloads/ServiceAccount.json"
ডক্স API-এর জন্য শংসাপত্র পান
- GCP কনসোলে ফিরে, শংসাপত্রে যান
- একটি OAuth 2.0 কী তৈরি করুন এবং এটি JSON হিসাবে ডাউনলোড করুন
-
credentials.json
ফাইলটির নাম পরিবর্তন করুন এবং নিশ্চিত করুন যে এটি আপনার কোডেরsrc/main/resources/
ডিরেক্টরিতে রয়েছে
এপিআই সক্ষম করুন
- ড্যাশবোর্ড ট্যাবটি নির্বাচন করুন, APIs এবং পরিষেবাগুলি সক্ষম করুন বোতামে ক্লিক করুন এবং নিম্নলিখিত 2টি API সক্ষম করুন:
- স্পিচ টু টেক্সট
- Google ডক্স
এখন আপনি এগিয়ে যেতে এবং আপনার কোড দিয়ে কাজ শুরু করতে প্রস্তুত।
3. আপনার কোড সেট আপ করুন
নমুনা কোড পান
নমুনা কোড পেতে, হয় আপনার কম্পিউটারে জিপ ফাইলটি ডাউনলোড করুন...
...অথবা কমান্ড লাইন থেকে GitHub সংগ্রহস্থল ক্লোন করুন।
$ 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 ডক্স ডকুমেন্টগুলি দেখতে এবং পরিচালনা করতে সক্ষম হবে৷ যদি আপনার কোডের জন্য এই অ্যাক্সেসের বাইরে বা ভিন্ন অনুমোদনের প্রয়োজন হয়, তাহলে OAuth 2.0 Google API স্কোপের উপর ভিত্তি করে এই পরিবর্তনশীলটিকে সেই অনুযায়ী সামঞ্জস্য করতে ভুলবেন না।
উদাহরণস্বরূপ, আপনি যদি একটি Google ডকে না লিখতেন, তাহলে আপনি সুযোগটি DOCUMENTS_READONLY
তে পরিবর্তন করতে পারেন। SCOPES
ভেরিয়েবলটি শুধুমাত্র আপনার অ্যাপের সঠিক অ্যাক্সেসের অনুমতির জন্যই নয়, ব্যবহারকারীদের সাথে স্বচ্ছতা বজায় রাখার জন্যও প্রয়োজনীয়। ব্যবহারকারীকে OAuth যাচাইকরণ পৃষ্ঠায় আপনার অনুরোধ করা নির্দিষ্ট স্কোপগুলি প্রদর্শিত হয় যেখানে তাদের অ্যাপটি ব্যবহার করার জন্য সম্মতি দিতে হবে।
ভেরিয়েবলের নাম পরিবর্তন করুন
নিশ্চিত করুন যে উপরের ভেরিয়েবলগুলি আপনার প্রকল্পের জন্য সঠিকভাবে ঘোষণা করা হয়েছে।
- আপনি স্পিচ টু টেক্সট API-এ যে ডেমো ফাইলটি পাঠাচ্ছেন তার নামের সাথে AUDIO_FILENAME সেট করা আছে তা নিশ্চিত করুন। আপনার CreateTranscript.java ফাইলে, আপনি ইতিমধ্যেই এটি সঠিকভাবে সেট করা দেখতে পাবেন।
- ডাউনলোড করা শংসাপত্র ফাইলের নামে CREDENTIALS_FILE_PATH পুনঃনামকরণ করুন ('/
credentials.json'
হওয়া উচিত)। নিশ্চিত করুন যে এই ফাইলটি আপনার ফোল্ডারেরsrc/main/resources
ডিরেক্টরির মধ্যে রয়েছে, তাই GitHub ক্লোনিং আপনার জন্য এটি না করলে এই ডিরেক্টরিটি তৈরি করা নিশ্চিত করুন।
এখন, আপনি আপনার কোড চালানো শুরু করতে পারেন!
4. একটি ডক্স ক্লায়েন্ট শুরু করুন৷
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
পরিবর্তনশীল ব্যবহার করতে হবে।
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 ডকের ড্রাইভ ফাইল আইডি প্রদান করে। এই একই ID ডক এর URL এর মধ্যে পাওয়া যাবে ।
এর পরে, আপনি স্পিচ-টু-টেক্সট ক্লায়েন্ট শুরু করবেন।
6. স্পিচ টু টেক্সট 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
টাইপের একটি প্রতিলিপি। সুতরাং, প্রতিটি আইটেমের দুটি অংশ রয়েছে: একটি পাঠ্য প্রতিলিপি এবং 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;
7. একটি নথিতে পাঠ্য সন্নিবেশ করান৷
আপনি এখন Google ডকে ট্রান্সক্রিপ্ট টেক্সট ঢোকাবেন। একটি নথিতে কোনো পরিবর্তন করতে, আপনাকে BatchUpdate
পদ্ধতি ব্যবহার করতে হবে। BatchUpdate
হল বিভিন্ন ধরনের লেখার অনুরোধের জন্য একটি ধারক এবং, এখানে, আপনি InsertTextRequest
ব্যবহার করবেন।
EndOfSegmentLocation
হল একটি গুরুত্বপূর্ণ প্যারামিটার যা নির্দিষ্ট করে আপনার ডক-এ আপনি কোথায় আপনার পাঠ্য মুদ্রণ করতে চান৷ সোর্স কোডে, আপনি আপনার ডকের বডিতে টেক্সট ঢোকাচ্ছেন।
আপনার স্পিচ-টু-টেক্সট এপিআই ফলাফল এবং ডক্স এপিআই-তে কলগুলি কীভাবে আমাদেরকে Google ডক-এ একটি অডিও ফাইলের প্রতিলিপি সন্নিবেশ করতে দেয় তা দেখতে নিচের কোডটি আপনার ফাংশনে সন্নিবেশ করা যাক:
BatchUpdateDocumentRequest body = new BatchUpdateDocumentRequest();
service.documents().batchUpdate(docId,
body.setRequests(insertRequests)).execute();
অনুরোধ তৈরি করা হচ্ছে
BatchUpdate অনুরোধ করার সময়, আপনি দুটি অত্যন্ত গুরুত্বপূর্ণ স্পেসিফিকেশন সেট করেন: আপনি কি প্রিন্ট করতে চান ( .setText()
), সেইসাথে আপনার নথিতে আপনি তা করতে চান ( .setIndex(1)
)।
আপনি এখন আপনার তৈরি নথিতে আপনার অডিও ফাইলের প্রতিলিপি সন্নিবেশ করেছেন৷
8. কোড চলমান
এখন যেহেতু আপনার কাছে একটি অডিও ফাইল নিতে, এর ট্রান্সক্রিপ্ট পেতে এবং একটি নতুন তৈরি Google ডক-এ এর ট্রান্সক্রিপ্ট প্রিন্ট করার জন্য আপনার প্রয়োজনীয় সমস্ত কোড আছে, চলুন এই শোটি রাস্তায় নিয়ে আসা যাক!
যেহেতু আপনি gradle বিল্ড সিস্টেম ব্যবহার করে আপনার জাভা কোড চালাতে যাচ্ছেন, তাই আপনাকে আপনার build.gradle ফাইলটি বলতে হবে ঠিক কি তৈরি এবং চালাতে হবে। এই প্রজেক্টে এবং অন্যদের মধ্যে, নিশ্চিত করুন যে আপনি কোন জাভা ক্লাস চালাতে চান তার সাথে mainClassName
সামঞ্জস্যপূর্ণ রেখেছেন।
দারুণ! এখন আপনি আপনার কোড চালানোর জন্য প্রস্তুত. এটি করতে, আপনার কমান্ড লাইনে নিম্নলিখিত টাইপ করুন:
$ gradle run
শেষ ব্যবহারকারী প্রমাণীকরণ
প্রথমবার যখন আপনি এই কোডটি চালান, আপনি দেখতে পাবেন একটি URL মুদ্রিত হবে টার্মিনালে, আপনাকে আপনার পরিষেবা অ্যাকাউন্টে লগ ইন করতে এবং এর Google ডক্সে অ্যাক্সেস অনুমোদন করতে বলবে৷ অ্যাক্সেসের অনুমতি দেওয়ার পরে, আপনি আপনার ডিরেক্টরিতে সংরক্ষিত একটি নতুন ফাইল লক্ষ্য করবেন।
আপনার ওয়ার্কিং ডাইরেক্টরির ভিতরে, আপনি একটি নতুন তৈরি ফোল্ডার দেখতে পাবেন যার নাম টোকেন , যেখানে একটি ফাইল স্টোরড ক্রেডেনশিয়াল রয়েছে। এটি হল আপনার দেওয়া প্রমাণীকরণ টোকেন , যা আপনার ক্লায়েন্ট Google Auth Server থেকে অনুরোধ করেছিল, এর প্রতিক্রিয়া থেকে বের করা হয়েছে, এবং এখন আপনি যে কোনো API-এ পাঠাবেন।
সমাধান
যদি আপনার কোড কাজ না করে, তাহলে ফিনিশ ফোল্ডারের ভিতরে CreateTranscript.java ফাইলটি দেখুন। এই ফাইলটিতে আপনার সমস্ত কোড রয়েছে যা সফলভাবে চালানোর জন্য এটির প্রয়োজন।
এবার ফলাফল দেখি।
9. আপনার ফলাফল দেখা
আপনি এইমাত্র আপনার অডিও ফাইলের প্রতিলিপি সহ একটি নতুন Google নথি তৈরি করেছেন, তাই আসুন এটি একবার দেখে নেওয়া যাক৷
এই ডকটি সেই অ্যাকাউন্টের মাধ্যমে তৈরি করা হয়েছে যার সাথে শেষ-ব্যবহারকারী অনুমোদন প্রদান করেছে৷ একটি সম্ভাব্য সম্প্রসারণ হল যে আপনি স্বয়ংক্রিয়ভাবে ড্রাইভ API ব্যবহার করে অন্যদের সাথে এই নথিটি ভাগ করতে পারেন৷
আপনার সোর্স কোড এবং প্রদত্ত অডিও ফাইল ব্যবহার করে, আপনার যা দেখা উচিত তা এখানে:
10. অভিনন্দন!
আপনি এখন শিখেছেন কিভাবে একটি Google ডক তৈরি করতে হয়, স্পিচ-টু-টেক্সট এপিআইতে কল করতে হয় এবং আপনার তৈরি করা ডকে আপনার অডিও ফাইলের ট্রান্সক্রিপ্ট আউটপুট করতে হয়।
সম্ভাব্য উন্নতি
কীভাবে আরও আকর্ষক একীকরণ করা যায় সে সম্পর্কে এখানে কিছু ধারণা রয়েছে:
- আপনার Google ক্লাউড স্টোরেজ বাকেট ড্রাইভে যখন একটি অডিও ফাইল যোগ করা হয় তখন শোনার জন্য আপনার কোড সেট আপ করুন এবং এই কোডটি কার্যকর করতে একটি Google ক্লাউড ফাংশন ট্রিগার করুন
- খালি নয় এমন একটি Google ডকে পাঠ্য ঢোকানোর সাথে খেলা করুন
আরও জানুন
- Google ডক্স API ডেভেলপার ডকুমেন্টেশন পড়ুন
- প্রশ্ন পোস্ট করুন এবং google-docs-api ট্যাগের অধীনে স্ট্যাক ওভারফ্লোতে উত্তর খুঁজুন