যে সমস্যার সমাধান করে
স্থানীয় সাংবাদিক ও বাসিন্দারা জানতে চান কোনো জোনিং পরিবর্তন, বাজেটের খাত বা স্কুল নীতি নিয়ে কর্মকর্তারা কী বলেছেন। তা খুঁজতে অনেক মিটিংয়ের ঘণ্টার পর ঘণ্টা ভিডিও টেনে দেখতে হয়। এজেন্ডা ও কার্যবিবরণীতে খুব কমই পুরো আলোচনা থাকে, আর অনেক স্থানীয় নিউজরুমে এখন প্রতিটি মিটিংয়ে পাঠানোর মতো রিপোর্টার নেই।
প্রথম ভার্সনে কী কী রাখবেন
- সংস্থার চ্যানেল থেকে প্রতিটি মিটিংয়ের স্বয়ংক্রিয় সংগ্রহ
- স্পিকার লেবেল, যাতে কর্মকর্তা অনুযায়ী সার্চ করা যায়
- বছরের পর বছরের মিটিং জুড়ে বিষয় ও কিওয়ার্ড সার্চ
- কোনো বিষয় বা ঠিকানা আলোচিত হলে অ্যালার্ট
- রেকর্ডিংয়ের ঠিক মুহূর্তের শেয়ারযোগ্য লিংক
ধাপে ধাপে কীভাবে বানাবেন
- 01
মিটিংয়ের ভিডিও সংগ্রহ করুন
কাউন্সিলের চ্যানেল বা মিটিং প্লেলিস্ট রিজলভ করুন এবং নিয়মিত নতুন আপলোড চেক করতে থাকুন।
- 02
বক্তাসহ ট্রান্সক্রাইব করুন
speakerLabels চালু করে এবং পরিচিত নামসহ speakerId দিয়ে ASR ব্যবহার করুন, যাতে প্রতিটি অংশ একজন বক্তার নামে চিহ্নিত হয়। মিটিং লম্বা হয়, তাই খরচ আগে দেখতে এস্টিমেট এন্ডপয়েন্ট ব্যবহার করুন।
- 03
মিটিং ও বক্তা অনুযায়ী ইনডেক্স করুন
মিটিংয়ের তারিখ, বক্তা ও টাইমস্ট্যাম্পসহ অনুচ্ছেদ সংরক্ষণ করুন, এবং ফুল-টেক্সট ও সিমান্টিক সার্চ যোগ করুন।
- 04
অ্যালার্ট যোগ করুন
ব্যবহারকারীদের রাস্তার নাম বা নীতিগত বিষয়ের মতো সার্চ সেভ করতে দিন, এবং নতুন মিটিংয়ে তা উঠলে তাদের ইমেইল করুন।
স্টার্টার কোড
এই আইডিয়াটি "রেসিপি 3: পুরো প্লেলিস্ট একসাথে নলেজ বেসে লোড করুন" প্যাটার্নের ওপর তৈরি। নিজের চ্যানেল, প্রম্পট ও স্টোরেজ বসিয়ে নিন।
import requests
API = "https://www.youtubetranscript.dev/api/v2"
HEADERS = {"Authorization": "Bearer yt_sk_live_YOUR_KEY"}
playlist = requests.post(f"{API}/playlists/resolve", headers=HEADERS,
json={"playlist_url": "https://www.youtube.com/playlist?list=PLAYLIST_ID",
"limit": 100}).json()
ids = [v["video_id"] for v in playlist["items"]]
batch = requests.post(f"{API}/batch", headers=HEADERS, json={
"video_ids": ids,
"format": {"timestamp": True, "paragraphs": True},
}).json()
# Large batches run async: poll GET /batch/{batch_id} until status is "completed"
for r in batch.get("results", []):
if r["status"] == "completed":
for p in r["data"]["transcript"].get("paragraphs") or []:
store(video_id=r["video_id"], start=p["start"], text=p["text"]) # your vector DBকেন বানানো মূল্যবান
স্থানীয় সংবাদমাধ্যম, অ্যাডভোকেসি গ্রুপ এবং রিয়েল এস্টেট বা নীতি বিষয়ক প্রতিষ্ঠান অ্যালার্ট ও গবেষণা টুলের জন্য টাকা দেবে। নাগরিক প্রজেক্টগুলো প্রায়ই অনুদানে চলে অথবা পেইড অ্যালার্টসহ ফ্রি পাবলিক আর্কাইভ দেয়।
যে ভুলগুলো এড়াবেন
- অনেক বক্তার লম্বা মিটিংয়ে স্বয়ংক্রিয় ক্যাপশনের ওপর নির্ভর করা: স্পিকার লেবেল আর্কাইভকে অনেক বেশি কাজের করে তোলে।
- দৈর্ঘ্য কম করে ধরা: মিটিং ঘণ্টার পর ঘণ্টা চলে, তাই জমে থাকা ভিডিও ট্রান্সক্রাইব করার আগে ASR ক্রেডিটের হিসাব করুন।
- প্রসঙ্গ ছাড়া প্রকাশ করা: প্রতিটি উদ্ধৃতি রেকর্ডিংয়ে লিংক করুন যাতে পাঠক নিজে শুনতে পারেন।
এই আইডিয়া নিয়ে প্রশ্ন
YouTube থেকে কি সিটি কাউন্সিলের মিটিং ট্রান্সক্রাইব করা যায়?
হ্যাঁ। ক্যাপশন থাকলে তা ব্যবহার করুন, অথবা লম্বা মিটিংয়ের আরও পাঠযোগ্য ট্রান্সক্রিপ্টের জন্য স্পিকার লেবেলসহ AI স্পিচ রিকগনিশন ব্যবহার করুন।
কে কথা বলছেন তা কীভাবে শনাক্ত করব?
বক্তাদের আলাদা করতে স্পিকার লেবেল চালু করুন, এবং তাদের চিহ্নিত করতে পরিচিত নাম বা ভূমিকার তালিকাসহ স্পিকার আইডেন্টিফিকেশন ব্যবহার করুন।
তিন ঘণ্টার একটি মিটিং ট্রান্সক্রাইব করতে খরচ কত?
অ্যাড-অন ছাড়া AI স্পিচ রিকগনিশনে প্রতি ঘণ্টায় প্রায় 40 ক্রেডিট লাগে। শুরু করার আগে ঠিক খরচ দেখতে এস্টিমেট এন্ডপয়েন্ট ব্যবহার করুন।