এই পৃথিবীতে দুই ধরনের মানুষ আছে: যারা ক্যাপশন সহ টিভি শো দেখেন এবং যারা অদ্ভুত।
সমস্ত কৌতুক একপাশে, ভিডিওর জন্য বন্ধ ক্যাপশনের গুরুত্বকে ছোট করা যাবে না। বধির এবং শ্রবণে অক্ষম ব্যক্তিদের জন্য গুরুত্বপূর্ণ হওয়ার পাশাপাশি, অডিও অনুপলব্ধ বা স্পষ্টভাবে শ্রবণযোগ্য না হলে ক্যাপশনগুলিও গুরুত্বপূর্ণ৷ হতে পারে আপনি একটি সর্বজনীন স্থানে একটি ভিডিও দেখছেন এবং অডিওটি পরিবেষ্টিত গোলমালের দ্বারা ডুবে গেছে। অথবা হতে পারে যে ব্যক্তি ভিডিওতে কথা বলছেন এমন একটি মাইক্রোফোন ব্যবহার করছেন যা সর্বোত্তম মানের নয়, অথবা এমন উচ্চারণ বা উপভাষায় কথা বলছেন যা দর্শকের কাছে অপরিচিত। ক্যাপশন সবসময় একটি ভাল জিনিস. দুর্ভাগ্যবশত, একটি লাইভ স্ট্রিমে অডিও ক্যাপশন করা কঠিন।
লাইভ স্ট্রীম ক্যাপশন করার সমস্যায় পড়ার আগে, আসুন শব্দার্থবিদ্যা সম্পর্কে একটু কথা বলি। আপনি কি জানেন ক্লোজড ক্যাপশন এবং সাবটাইটেল শব্দের মধ্যে পার্থক্য আছে?
সংলাপের ট্রান্সক্রিপশন বা অনুবাদ, যখন সাউন্ড পাওয়া যায় কিন্তু বোঝা যায় না তার জন্য উপযুক্ত (যেমন কারণ ব্যবহারকারী মিডিয়া রিসোর্সের অডিও ট্র্যাকের ভাষা বোঝেন না)। ভিডিওতে ছাপানো।
স্পেক ক্যাপশনগুলিকে এভাবে বর্ণনা করে:
সংলাপের ট্রান্সক্রিপশন বা অনুবাদ, সাউন্ড এফেক্ট, প্রাসঙ্গিক বাদ্যযন্ত্রের সংকেত এবং অন্যান্য প্রাসঙ্গিক অডিও তথ্য, যখন শব্দ অনুপলব্ধ বা স্পষ্টভাবে শোনা যায় না তার জন্য উপযুক্ত (উদাহরণস্বরূপ এটি নিঃশব্দ, পরিবেষ্টিত শব্দ দ্বারা ডুবে যাওয়া, বা ব্যবহারকারী বধির ) ভিডিওর উপর আবৃত; হার্ড-অফ-শ্রবণের জন্য উপযুক্ত হিসাবে লেবেলযুক্ত।
এর মানে হল যে যখন আমরা লাইভ ভিডিওগুলির জন্য "বন্ধ ক্যাপশন" সম্পর্কে কথা বলি, তখন আমরা সাধারণত সাবটাইটেলগুলি উল্লেখ করি কারণ ক্যাপশনগুলিতে সাধারণত বর্ণনামূলক তথ্য থাকে৷ একটি টিভি অনুষ্ঠানের একটি দৃশ্যের কথা চিন্তা করুন যেখানে একজন অভিনেতা বাড়ি থেকে বের হতে গাড়িতে ওঠেন এবং তাদের স্ত্রীকে বিদায় জানান। এই দৃশ্যের ক্যাপশনে লেখা হতে পারে "বিদায়, প্রিয়। [গাড়ির ইঞ্জিন শুরু হয়]।"
আমরা AI সিস্টেম আমাদের জন্য এই ধরনের প্রাসঙ্গিক তথ্য বর্ণনা করার কাছাকাছি নই, তাই আমরা আমাদের লাইভ স্ট্রীমে বিশুদ্ধ "স্পিচ-টু-টেক্সট" সাবটাইটেল ক্যাপশন যোগ করার মধ্যে সীমাবদ্ধ; আমরা নীচের পদ্ধতি ব্যবহার করে তা করতে পারি।
দ্রষ্টব্য: আপনি লক্ষ্য করবেন যে এই ব্লগ পোস্টের শিরোনাম এবং মূল অংশে 'ক্যাপশন' বা 'ক্লোজড ক্যাপশন' শব্দগুলি ব্যবহার করা হয়েছে যদিও আমরা এখানে আসলে যে বিষয়ে কথা বলছি তা উপরের সংজ্ঞাগুলির উপর ভিত্তি করে সাবটাইটেল। দুর্ভাগ্যবশত, যেহেতু 'ক্লোজড ক্যাপশন' শব্দটি খুব সাধারণভাবে অপব্যবহার করা হয়, তাই ডেভেলপারদের এই ব্লগ পোস্টটি খুঁজে পেতে এবং তাদের লাইভ স্ট্রিমগুলিতে এই বৈশিষ্ট্যটি কীভাবে যুক্ত করতে হয় তা শিখতে সাহায্য করার জন্য এই শব্দটি অনুপযুক্তভাবে ব্যবহার করা সবচেয়ে বেশি অর্থবহ৷ শুধু জেনে রাখুন যে আমরা এখানে আসলেই যে বিষয়ে কথা বলছি তা হল সাবটাইটেল!
আমরা এই পোস্টে যে সমাধানটি দেখছি তা একটি অ্যামাজন ইন্টারেক্টিভ ভিডিও পরিষেবা (Amazon IVS) থেকে লাইভ স্ট্রিমে সম্প্রচারের উপর দৃষ্টি নিবদ্ধ করে
এই ডেমোর জন্য, আমি OBS-captions-plugin
(
এরপরে, সেটিংস পরিবর্তন করতে ক্যাপশন ডকে 'গিয়ার' আইকনটি নির্বাচন করুন।
নিশ্চিত করুন যে একটি ক্যাপশন উৎস নির্বাচন করা হয়েছে, এবং আপনার প্রয়োজন অনুসারে প্লাগইন কনফিগারেশন পরিবর্তন করুন। উদাহরণস্বরূপ, আমার জন্য ডিফল্ট ক্যাপশন টাইমআউট 15.0
সেকেন্ডে সেট করা হয়েছিল, কিন্তু আমি 5.0
সেকেন্ডকে আরও ভাল মান হিসাবে পেয়েছি।
একবার আপনি আপনার কনফিগারেশন সংরক্ষণ করে এবং একটি নতুন লাইভ স্ট্রিম শুরু করলে, প্লাগইনটি আপনার বক্তৃতাকে পাঠ্যে রূপান্তরিত করে এবং লাইভ স্ট্রীমে প্রয়োজনীয় ক্যাপশন তথ্য তৈরি করে।
Amazon IVS প্লেয়ারের সাথে ক্যাপশন ডেটা প্লে ব্যাক করতে, আমরা TextCue
ইভেন্টটি শোনার জন্য একটি ইভেন্ট শ্রোতা যোগ করতে পারি (
ivsPlayer.addEventListener(IVSPlayer.PlayerEventType.TEXT_CUE, (evt) => { console.log(evt); }
উপরে কনফিগার করা হ্যান্ডলার সমস্ত ইনকামিং TextCue
ইভেন্টগুলি কনসোলে লগ করে।
TextCue
ইভেন্টের text
বৈশিষ্ট্যে ক্যাপশন ডেটা রয়েছে।
কিছু HTML এবং CSS এর সাথে, আমরা ক্যাপশন ডেটাকে <video>
এলিমেন্টে ওভারলে হিসাবে রেন্ডার করতে পারি। এই বাস্তবায়নটি আপনার প্রয়োজনের উপর অত্যন্ত নির্ভরশীল, কিন্তু কোনো ক্যাপশন ডেটা ছাড়াই একটি নির্দিষ্ট সময়ের পরে ওভারলে স্বয়ংক্রিয়ভাবে লুকানোর বিষয়টি আপনার বিবেচনায় নেওয়া উচিত।
এই পোস্টে, আমরা কীভাবে স্পিচকে টেক্সটে রূপান্তর করতে একটি OBS প্লাগইন ব্যবহার করব এবং সেই টেক্সটটিকে একটি Amazon IVS লাইভ স্ট্রীমে ক্যাপশন ডেটা হিসাবে প্রকাশ করব তা দেখেছি।