ট্রান্সক্রিপ্ট বলে দেয় কী বলা হয়েছে। ইন্টারভিউ, মিটিং ও পডকাস্টে কে কথাটি বলেছেন, সেটিও জানা দরকার—স্পিচ গবেষণায় এই সমস্যার নাম স্পিকার ডায়ারাইজেশন (speaker diarization)। iPhone 1.8.5, Mac App Store 1.3.2 এবং সরাসরি ডাউনলোড করা Mac বিল্ড 1.5.1 থেকে Whisper Notes পুরো প্রক্রিয়াটি ডিভাইসে চালায়।
এই লেখায় আমরা এর কাজের পদ্ধতি, ক্লাউডে তৈরি গ্রাউন্ড ট্রুথের বিপরীতে benchmark ফল, এবং একটি ব্যর্থতার ধরন তুলে ধরছি যা ইঞ্জিনিয়ারিং দিয়ে পুরোপুরি দূর করা যায়নি—সঙ্গে আমরা বিকল্প হিসেবে কী করেছি।
এটি কী করে
একটি নোট খুলুন—রেকর্ডিং, ইমপোর্ট করা অডিও বা ভিডিও ফাইল, কিংবা মিটিং রেকর্ডিং—তারপর বক্তা বোতাম চাপুন। কয়েক সেকেন্ড পর প্রতিটি অনুচ্ছেদে বক্তার লেবেল ও টাইমস্ট্যাম্প থাকবে।
Mac ও iPhone-এ বক্তা লেবেল। কোনো বাক্যে ট্যাপ করলে অডিও ঠিক সেই মুহূর্তে চলে যায়।
শুরুতে লেবেল থাকে বক্তা 1 ও বক্তা 2। একবার নাম বদলালে পুরো ট্রান্সক্রিপ্টে তা আপডেট হয়। যেকোনো বাক্যে ট্যাপ করে অডিওর সেই জায়গায় যাওয়া যায়, তাই মূল কণ্ঠের সঙ্গে উদ্ধৃতি মিলিয়ে দেখা সহজ।
বক্তার নাম বদলালে নোটের প্রতিটি অনুচ্ছেদ আপডেট হয়।
কল শেষ হলে মিটিং রেকর্ডিং স্বয়ংক্রিয়ভাবে বক্তা শনাক্ত করে (সেটিংস থেকে বন্ধ করা যায়)। এক্সপোর্টেও লেবেল থাকে: বক্তাসহ ট্রান্সক্রিপ্ট কপি করুন লেবেল ক্লিপবোর্ডে নেয়, আর SRT ও VTT ফাইল সাবটাইটেলে সেগুলো রাখে।
ডায়ারাইজেশন শব্দ নয়, কণ্ঠ নিয়ে কাজ করে। তাই অ্যাপ যে 100+ ভাষা ট্রান্সক্রাইব করে, সব ভাষায় এটি একইভাবে চলে।
Neural Engine-এ 19 MB মডেল
ডায়ারাইজেশন তিন ধাপে “কে কখন বলেছে” নির্ধারণ করে। অডিওকে কথাযুক্ত অংশে ভাগ করা হয়। প্রতিটি অংশকে ভয়েসপ্রিন্টে বদলানো হয়—ছোট একটি ভেক্টর, যা শব্দ নয়, কণ্ঠকে বর্ণনা করে। তারপর ভয়েসপ্রিন্ট ক্লাস্টার করা হয়; একই ক্লাস্টারের অংশ একই লেবেল পায়।
Whisper Notes pyannote-এর community-1 pipeline-কে Core ML-এ রূপান্তর করে, যাতে দুই ধাপই Neural Engine-এ চলে। একবারের ডাউনলোড 19 MB; M-series Mac-এ 5.7 মিনিটের কথোপকথন প্রসেস করতে 2–4 সেকেন্ড লাগে।
অডিও → কথাযুক্ত অংশ → ভয়েসপ্রিন্ট → ক্লাস্টার → লেবেল
প্রতিটি ধাপ ডিভাইসে চলে।
ট্রান্সক্রিপশনের চেয়েও ডায়ারাইজেশনে এটি বেশি গুরুত্বপূর্ণ। ভয়েসপ্রিন্ট বায়োমেট্রিক তথ্য—আঙুলের ছাপের মতো এটি একজনকে শনাক্ত করে। লোকাল pipeline-এ আপনার, সহকর্মী ও ইন্টারভিউ দেওয়া ব্যক্তির ভয়েসপ্রিন্ট ডিভাইসে তৈরি, ক্লাস্টার ও মুছে ফেলা হয়। কোথাও পাঠানো হয় না।
আমরা কী মেপেছি
ডায়ারাইজেশনের জন্য আমরা স্থির দুটি ফাইলের benchmark রাখি। ক্লাউড ASR ও ডায়ারাইজেশন সেবা ElevenLabs থেকে গ্রাউন্ড ট্রুথ তৈরি করে হাতে যাচাই করা হয়। স্কোরিং প্রতি 10 ms কথাকে একজন বক্তার নামে দেয় এবং ফল ও রেফারেন্সের সেরা মিল ব্যবহার করে। দুটি ফাইল ছোট নমুনা, তাই সংখ্যাগুলো দিকনির্দেশক—চূড়ান্ত সিদ্ধান্ত নয়।
প্রথম ফাইলটি সাধারণ পরিস্থিতি: পাঁচ মিনিটের ইংরেজি পডকাস্ট, স্পষ্ট ভিন্ন কণ্ঠের দুই বক্তা। অধিকাংশ ইন্টারভিউ, পডকাস্ট ও একান্ত মিটিং এমনই।
| দুই বক্তার ইংরেজি পডকাস্ট (5 মিনিট) | ফল |
|---|---|
| ফ্রেম-স্তরে বক্তা নির্ধারণ (10 ms রেজোলিউশন) | 96.7% |
| বাক্য-স্তরের নির্ভুলতা (যা আপনি পড়েন) | 99.1% |
| প্রসেসিং সময়, M-series Neural Engine | 2–4 সেকেন্ড |
বাকি 0.9% হলো তিনটি সীমানা বিচ্যুতি, মোট 3.4 সেকেন্ড—রেফারেন্সের নিজস্ব রেজোলিউশনের কাছাকাছি। এমন অডিওতে অন-ডিভাইস ফল আমাদের গ্রাউন্ড ট্রুথ তৈরিকারী ক্লাউড সেবার সমতুল্য।
কঠিন পরিস্থিতি
দ্বিতীয় ফাইলটি ইচ্ছা করেই কঠিন: প্রতিধ্বনিময় ঘরে একই রকম দুই পুরুষ কণ্ঠ, আর উপস্থাপক 19 বার মাঝখানে বলেন—প্রতিবার গড়ে 2.3 সেকেন্ড। অতিথি বলেছেন 272 সেকেন্ড; উপস্থাপক 43 সেকেন্ড। এই অ্যাকুস্টিক ধরনই যেকোনো ভাষায় স্পিকার ডায়ারাইজেশন ভেঙে দেয়: কাছাকাছি কণ্ঠ ছোট ছোট পালায় কথা বলে।
অটোমেটিক ক্লাস্টারিং এখানে ভেঙে পড়ে। দুই ভয়েসপ্রিন্ট এত কাছাকাছি যে অ্যালগরিদম সেগুলো এক করে প্রায় পুরো কথোপকথন এক লেবেলে দেয়। রেকর্ডিংটি ঘটনাচক্রে একটি চীনা ইন্টারভিউ, তাই আমরা স্পষ্ট অনুমানটি পরীক্ষা করতে পেরেছি—ভাষার জন্য বিশেষায়িত মডেল আরও ভালো করবে। চীনা কণ্ঠে বিশেষভাবে প্রশিক্ষিত দুটি স্পিকার মডেল CPU pipeline-এ চালিয়েছি:
| মডেল | ইংরেজি পডকাস্ট | কঠিন ফাইল* | সময় (5.7 মিনিট অডিও) |
|---|---|---|---|
| pyannote community-1 (আমাদের, Neural Engine) | 96.7% | 81–82% | 2–4 সেকেন্ড |
| CAM++ (চীনায় প্রশিক্ষিত, CPU) | 93.9% | 81.2% | 36–103 সেকেন্ড |
| ERes2NetV2 (চীনায় প্রশিক্ষিত, CPU) | — | 80.5% | 220–290 সেকেন্ড |
* কঠিন ফাইলে বক্তার সংখ্যা দেওয়ার পর ফ্রেম-স্তরের নির্ভুলতা। সংখ্যা না দিলে সব মডেল একজন বক্তার দিকে সঙ্কুচিত হয়।
দুটিই 10 থেকে 100 গুণ বেশি কম্পিউট ব্যবহার করেও একইভাবে ব্যর্থ হয়। কঠিন দিকটি অ্যাকুস্টিক, ভাষাগত নয়—সীমা হলো বর্তমান ভয়েস embedding যেকোনো ভাষায় কী আলাদা করতে পারে।
এতে সরাসরি সমাধানটি বাদ পড়ল এবং অন্য পথ মিলল: pipeline যে তথ্য অনুমান করতে পারে না, সেটি দেওয়া—ঘরে কতজন আছেন। সংখ্যা নির্দিষ্ট করলে (মেনুতে 2 থেকে 6), কঠিন ফাইল ব্যর্থ অবস্থা থেকে বাক্য-স্তরে 89% হয়। সাধারণ অডিওতে সঠিক বলে অটো-ডিটেক্টই ডিফল্ট থাকে।
বক্তার সঠিক সংখ্যা দিয়ে শনাক্তকরণ আবার চালান। একই মেনু বক্তা লেবেলসহ SRT ও VTT এক্সপোর্ট করে।
ছোট বাধাগুলো ঠিক করা
সংখ্যা ঠিক করার পর বাকি ভুলের প্রায় অর্ধেক ছিল তিন সেকেন্ডের কম কথায়। দুই সেকেন্ডের ক্লিপ embedding মডেলকে খুব কম সংকেত দেয়; দ্রুত কথোপকথনে ভয়েসপ্রিন্টে পাশের বক্তার কণ্ঠও মিশে যায়।
তাই ক্লাস্টারিংয়ের পর pipeline 3.5 সেকেন্ডের কম প্রতিটি বাক্য আবার পরীক্ষা করে: কেবল সেই বাক্যের ফ্রেমে mask দিয়ে ভয়েসপ্রিন্ট নতুন করে হিসাব করে, প্রতিটি বক্তার anchor—তাঁর দীর্ঘতম বক্তব্যগুলোর গড়—এর সঙ্গে মেলায়, এবং পার্থক্য স্পষ্ট হলেই লেবেল বদলায়। একই মডেল পুনরায় ব্যবহৃত হয়; অতিরিক্ত ডাউনলোড নেই।
| সামগ্রিক বাক্য নির্ভুলতা | সংশোধনের আগে | পরে |
|---|---|---|
| কঠিন ফাইল (বক্তা সংখ্যা দেওয়া) | 89.0% | 94.8% |
| ইংরেজি পডকাস্ট (অটো) | 98.5% | 99.1% |
সিদ্ধান্তের সীমা ইচ্ছা করেই কঠোর: দুই ফাইলে সংশোধক 21টি লেবেল বদলেছে এবং নতুন কোনো ভুল যোগ করেনি।
সীমাবদ্ধতা
• রেকর্ডিং শেষ হলে লেবেল আসে, কল চলাকালে নয়। মিটিং চলার সময় বক্তার নামসহ লাইভ ক্যাপশন চাইলে Otter বা Notta-র মতো ক্লাউড সেবা উপযুক্ত।
• একই সময়ে কথা বললে প্রতিটি বাক্যে একটি লেবেল থাকে।
• কাছাকাছি কণ্ঠ এখনো কঠিন। কঠিন ফাইলে 94.8% হলো বক্তা সংখ্যা দেওয়ার পর বর্তমান সীমা, সমাধান হয়ে যাওয়া সমস্যা নয়।
যে সংস্করণে পাওয়া যাবে
বক্তা শনাক্তকরণ $6.99-এর একবারের কেনাকাটায় অন্তর্ভুক্ত। সঙ্গে আছে অ্যাপের তিন ট্রান্সক্রিপশন ইঞ্জিন—Parakeet V3, Whisper Large V3 Turbo ও SenseVoice—এবং লোকাল AI এডিটিং। আলাদা প্ল্যান বা অ্যাকাউন্ট নেই।
• iPhone: App Store, সংস্করণ 1.8.5 বা নতুন।
• Mac App Store: সংস্করণ 1.3.2 বা নতুন।
• Mac সরাসরি ডাউনলোড (DMG): সংস্করণ 1.5.1 বা নতুন, whispernotes.app থেকে বিনামূল্যে ট্রায়ালসহ।
মিটিং রেকর্ডিং কীভাবে কাজ করে জানতে অফলাইন মিটিং ট্রান্সক্রিপশন নিয়ে আমাদের লেখা দেখুন।