পাঠ ৪২ · ৫৭-এর মধ্যে · মডিউল ৯
Home / Courses / Human-Computer Interaction / ভয়েস ইন্টারফেস

ভয়েস ইউজার ইন্টারফেস ও কনভার্সেশনাল ডিজাইন

Voice user interfaces & conversational design
৮ মিনিট পড়া মধ্যম · Intermediate Python কোডসহ সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • VUI-এর মৌলিক চ্যালেঞ্জ ব্যাখ্যা করতে পারা (কোনো স্থায়ী ভিজ্যুয়াল রেফারেন্স নেই, অ্যাম্বিগুইটি, ডিসকভারেবিলিটি)
  • "visibility of system status" নীতি ভয়েস মোডালিটিতে কীভাবে প্রয়োগ করতে হয় তা বোঝা
  • একটি সত্যিকারের, চলমান কোড ডেমো দিয়ে দেখা কীভাবে কনটেক্সট অ্যাম্বিগুইটি কমায়
  • ভালো কনভার্সেশনাল ডিজাইনের ব্যবহারিক নীতিমালা প্রয়োগ করতে পারা

১ · ভয়েস ইন্টারফেসের মৌলিক চ্যালেঞ্জ

একটি গ্রাফিক্যাল ইন্টারফেসে (GUI) মেনু, বাটন, আইকন সবসময় স্ক্রিনে দৃশ্যমান থাকে — ব্যবহারকারী চাইলেই তাকিয়ে দেখতে পারেন কী কী অপশন আছে। ভয়েস ইউজার ইন্টারফেস (VUI)-এ এই সুবিধা নেই — কথা transient (ক্ষণস্থায়ী): একবার বলা হয়ে গেলে তা "স্ক্রিনে" থেকে যায় না, এবং কোনো একসাথে-দৃশ্যমান "মেনু" নেই যা সব সম্ভাব্য কমান্ড দেখায়।

এর ফলে ব্যবহারকারীকে মনে রাখতে হয় কী বলা যায়, বরং দেখে চিনতে পারার সুযোগ পান না — কগনিটিভ সাইকোলজির পরিভাষায় (M2/L05) এটি recall-ভিত্তিক ইন্টারঅ্যাকশন, recognition-ভিত্তিক নয়, এবং recall সবসময় recognition-এর চেয়ে বেশি কগনিটিভ লোড তৈরি করে।

২ · অ্যাম্বিগুইটি ও কনটেক্সটের ভূমিকা

ভয়েস কমান্ড প্রায়ই সংক্ষিপ্ত ও প্রাকৃতিক ভাষায় বলা হয় ("এটা জোরে করো", "ভলিউম বাড়াও") — কিন্তু এই সংক্ষিপ্ততা অ্যাম্বিগুইটি তৈরি করে। যদি বাসায় একাধিক স্মার্ট ডিভাইস থাকে (স্পিকার, থার্মোস্ট্যাট, টিভি), তাহলে "আপ করো" (up) বলাটা কোন ডিভাইসকে বোঝাচ্ছে তা স্পষ্ট নয়, যদি না অতিরিক্ত কনটেক্সট (সাম্প্রতিক কথোপকথনের বিষয়, ঘরে থাকা ডিভাইস, ব্যবহারকারীর অবস্থান) যোগ করা হয়।

নিচের কোড সেলটি একটি অত্যন্ত সরলীকৃত, ইলাস্ট্রেটিভ ডেমো — এটি কোনো প্রকৃত NLU (Natural Language Understanding) সিস্টেম নয়, শুধু একটি সাধারণ কীওয়ার্ড-ম্যাচিং ফাংশন যা দেখায় কনটেক্সট ছাড়া কতগুলো ডিভাইস একটি অস্পষ্ট কমান্ডের সাথে মিলে যায়, এবং কনটেক্সট যোগ করলে সেই সংখ্যা কীভাবে কমে যায়:

Python
# একটি সরল, ইলাস্ট্রেটিভ "অ্যাম্বিগুয়াস কমান্ড" ডেমো -- সত্যিকারের NLU সিস্টেম নয়,
# শুধু দেখানোর জন্য যে কনটেক্সট ছাড়া একই ভয়েস কমান্ড একাধিকভাবে ব্যাখ্যা করা যায়।

devices = {
    "স্পিকার":       ["volume", "up", "down", "loud", "quiet"],
    "থার্মোস্ট্যাট":  ["temperature", "up", "down", "warm", "cool"],
    "টিভি":          ["volume", "up", "down", "loud", "quiet", "channel"],
}

def find_matches(command_words, active_context=None):
    matches = []
    for device, keywords in devices.items():
        if active_context and device != active_context:
            continue
        overlap = set(command_words) & set(keywords)
        if overlap:
            matches.append((device, sorted(overlap)))
    return matches

command = ["up"]  # ব্যবহারকারী বলেছেন "এটা আরেকটু আপ করো"

no_context = find_matches(command)
with_context = find_matches(command, active_context="থার্মোস্ট্যাট")

print("কনটেক্সট ছাড়া 'up' মিলে যায়:", no_context)
print("কনটেক্সট (সাম্প্রতিক বিষয়: থার্মোস্ট্যাট) সহ 'up' মিলে যায়:", with_context)
print()
print(f"সম্ভাব্য ডিভাইস সংখ্যা -- কনটেক্সট ছাড়া: {len(no_context)}, কনটেক্সট সহ: {len(with_context)}")

    
লক্ষ্য করুন — কনটেক্সট ছাড়া "up" শব্দটি তিনটি ডিভাইসের সাথেই মিলে যায় (স্পিকার, থার্মোস্ট্যাট, টিভি — সবগুলোর কীওয়ার্ড তালিকায় "up" আছে), কিন্তু সাম্প্রতিক কথোপকথনের বিষয় (active_context) হিসেবে "থার্মোস্ট্যাট" যোগ করলেই সম্ভাব্য মিল একটিতে নেমে আসে। এটাই একটি প্রকৃত VUI-এর মূল কাজ — প্রতিটি কমান্ডকে বিচ্ছিন্নভাবে না বুঝে, কথোপকথনের ইতিহাস/অবস্থা ব্যবহার করে অ্যাম্বিগুইটি কমানো।

৩ · ভালো কনভার্সেশনাল ডিজাইনের নীতিমালা

  • আনুপাতিক নিশ্চিতকরণ (proportional confirmation) — কম-ঝুঁকির কমান্ডে (যেমন "সময় কত") তাৎক্ষণিক উত্তর দিন, কিন্তু বেশি-ঝুঁকির/ধ্বংসাত্মক কমান্ডে ("সব রিমাইন্ডার মুছে ফেলো") স্পষ্টভাবে নিশ্চিত করে নিন — M4/L19-এর error-prevention নীতির ভয়েস-সংস্করণ।
  • করুণাময় ব্যর্থতা (graceful failure) — কমান্ড না বুঝলে "আমি বুঝতে পারিনি" বলে থেমে না গিয়ে, একটি স্পষ্টীকরণ প্রশ্ন করুন ("আপনি কি ভলিউম, নাকি তাপমাত্রা বাড়াতে চাইছেন?") — উপরের ডেমোর মতো, একাধিক সম্ভাব্য মিল থাকলে ব্যবহারকারীকেই বেছে নিতে বলা।
  • সক্ষমতার ইঙ্গিত দিন — "visibility of system status" প্রয়োগ করতে, সিস্টেমকে মাঝেমধ্যে ইঙ্গিত দিতে হয় কী সম্ভব ("আপনি এটাও বলতে পারেন...") — কিন্তু প্রতিটি উত্তরে দীর্ঘ তালিকা আবৃত্তি করা এড়িয়ে চলা উচিত, কারণ এটি কথোপকথনকে ক্লান্তিকর করে তোলে।
  • অডিও অবস্থা-সংকেত ব্যবহার করুন — শোনা হচ্ছে/ভাবছে/শেষ হয়েছে — এই অবস্থাগুলোর জন্য ছোট শব্দ-সংকেত (L40-এর ইয়ারকন ধারণা) ব্যবহারকারীকে জানায় সিস্টেম কোথায় আছে, স্ক্রিন ছাড়াই।
মূল কথা · Key takeaway

M4/L16-এর "visibility of system status" নীতি সব মোডালিটিতেই প্রযোজ্য, কিন্তু ভয়েসে এটি প্রয়োগ করা সবচেয়ে কঠিন — কারণ কোনো স্থায়ী স্ক্রিন নেই যেখানে অবস্থা "রেখে দেওয়া" যায়। প্রতিটি সংকেত মুহূর্তে দিতে হয় এবং তারপর হারিয়ে যায়। এখানেই ভালো VUI ডিজাইনের প্রকৃত কঠিন অংশ — কম শব্দে বেশি স্পষ্টতা তৈরি করা।

৪ · একাধিক মোডালিটি একসাথে — ভয়েস + স্ক্রিন

আজকাল অনেক ভয়েস সহকারী একটি স্ক্রিনযুক্ত ডিভাইসেও চলে (স্মার্ট ডিসপ্লে) — এখানে ভয়েসের দুর্বলতা (কোনো স্থায়ী রেফারেন্স নেই) স্ক্রিনের শক্তি (স্থায়ী, স্ক্যান-করা-যায় এমন তথ্য) দিয়ে পূরণ করা যায়। এই ধরনের একাধিক-মোডালিটি একত্রীকরণ M11-এ "মাল্টিমোডাল ইন্টারঅ্যাকশন" হিসেবে আরও বিস্তারিত আলোচনা হবে। এটিও লক্ষণীয় যে আধুনিক ভয়েস সহকারীগুলোর অন্তর্নিহিত AI-ভিত্তিক ভাষা-বোঝার প্রযুক্তি (ট্রাস্ট ক্যালিব্রেশন, ব্যাখ্যাযোগ্যতা ইত্যাদি) এই কোর্সের পরিধির বাইরে — Human-Centered AI কোর্স সেই AI-নির্দিষ্ট গভীরতা কভার করে; এই পাঠ শুধু সাধারণ কনভার্সেশনাল-ইন্টারঅ্যাকশন-ডিজাইনের নীতির উপর ফোকাস করে যা যেকোনো VUI-তে (AI-চালিত হোক বা সাধারণ রুল-বেসড IVR সিস্টেম হোক) প্রযোজ্য।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ উপরের ডেমোতে "up" শব্দটি তিনটি ডিভাইসের সাথে মিলে যায়। বাস্তব জীবনে একজন ব্যবহারকারী "থার্মোস্ট্যাট আপ করো" না বলে শুধু "আপ করো" বলেন কেন, এবং একটি ভালো VUI কীভাবে এটি সামলাবে?

মানুষ স্বাভাবিকভাবেই কথোপকথনে সংক্ষিপ্ত ভাষা ব্যবহার করে, বিশেষ করে যখন বিষয়টি "স্পষ্ট" মনে হয় (যেমন মাত্রই থার্মোস্ট্যাট নিয়ে কথা হয়েছে)। একটি ভালো VUI সাম্প্রতিক কথোপকথনের ইতিহাস মনে রাখে (উপরের ডেমোর active_context-এর মতো) এবং সেই ভিত্তিতে অস্পষ্ট রেফারেন্স সমাধান করে — এটিকে "কথোপকথনের অবস্থা" (conversation state) বলা হয়, এবং এটি ছাড়া প্রতিটি কমান্ডে ব্যবহারকারীকে সম্পূর্ণ বাক্য বলতে বাধ্য করা হয়, যা স্বাভাবিক কথাবার্তার মতো মনে হয় না।

প্র ০২ একটি ভয়েস সহকারী যদি প্রতিটি প্রশ্নের শুরুতে "আপনি যা যা বলতে পারেন তার তালিকা" আবৃত্তি করে, এটি কি ভালো ডিজাইন? "visibility of system status" নীতির সাথে এর সম্পর্ক কী?

না — এটি একটি বাস্তব ওভার-কারেকশন। যদিও "visibility of system status" গুরুত্বপূর্ণ, ভয়েসে প্রতিটি মিথস্ক্রিয়ায় দীর্ঘ তালিকা আবৃত্তি করা কথোপকথনকে ধীর ও ক্লান্তিকর করে তোলে (এটি নিজেই একটি নতুন usability সমস্যা তৈরি করে)। ভালো সমাধান হলো প্রাসঙ্গিক, সংক্ষিপ্ত ইঙ্গিত দেওয়া — শুধু তখনই বিকল্প বলা যখন ব্যবহারকারী সমস্যায় পড়েছেন বলে মনে হয় (যেমন কমান্ড না বোঝার পর), সবসময় নয়।

প্র ০৩ M41-এ শেখা টাচ-জেসচার ডিসকভারেবিলিটি সমস্যার সাথে VUI-এর ডিসকভারেবিলিটি সমস্যার মিল ও পার্থক্য কী?

মিল: দুটোতেই কোনো "সবসময়-দৃশ্যমান" ইঙ্গিত নেই যা ব্যবহারকারীকে বলে দেয় কী করা যায় — উভয় ক্ষেত্রেই ব্যবহারকারীকে recall করতে হয়, recognize নয়। পার্থক্য: টাচ জেসচারে অন্তত একটি চাক্ষুষ প্রেক্ষাপট (স্ক্রিন) থাকে যেখানে edge-peek-এর মতো আংশিক ইঙ্গিত যোগ করা যায় (M41)। ভয়েসে প্রায়ই কোনো স্ক্রিনই থাকে না (স্মার্ট স্পিকার) — তাই ইঙ্গিত দেওয়ার একমাত্র উপায় হলো কথার মধ্যেই সংক্ষিপ্তভাবে বলা, যা VUI-এর ডিসকভারেবিলিটি সমস্যাকে আরও কঠিন করে তোলে।

অনুশীলন

  1. চিন্তা করুন: উপরের কোড সেলে devices ডিকশনারিতে যদি একটি নতুন ডিভাইস "লাইট": ["brightness", "up", "down", "bright", "dim"] যোগ করা হয়, তাহলে no_context-এ মিলে যাওয়া ডিভাইসের সংখ্যা কী হবে বলে আপনার ধারণা?

    "লাইট"-এর কীওয়ার্ড তালিকায়ও "up" আছে, তাই no_context-এ মিলে যাওয়া ডিভাইসের সংখ্যা বর্তমান ৩ থেকে বেড়ে ৪ হবে — যত বেশি ডিভাইস একই সাধারণ শব্দ ("up") শেয়ার করে, তত বেশি অ্যাম্বিগুইটি তৈরি হয়, এবং কনটেক্সটের গুরুত্ব তত বেশি বেড়ে যায়।

  2. পরীক্ষা করুন: উপরের কোড সেলে devices ডিকশনারিতে অনুশীলন ১-এর "লাইট" এন্ট্রি যোগ করে এবং command-কে ["brightness", "up"]-এ পরিবর্তন করে Run চেপে দেখুন no_context-এ কয়টি ডিভাইস মেলে, এবং কেন এটি শুধু "up" ব্যবহার করার চেয়ে ভালো ফল দেয়।

    ["brightness", "up"] দিয়ে শুধু "লাইট"-ই মেলে (১টি ডিভাইস), কারণ "brightness" শব্দটি শুধু লাইটের কীওয়ার্ড তালিকায় আছে — অন্য কোনো ডিভাইসে নেই। এটি দেখায় বাস্তব VUI ডিজাইনে একটি গুরুত্বপূর্ণ কৌশল: ব্যবহারকারীকে একটিমাত্র অস্পষ্ট শব্দ ("up") না বলে একটু বেশি নির্দিষ্ট শব্দ ("brightness up") ব্যবহারে উৎসাহিত করা অ্যাম্বিগুইটি অনেকটাই কমিয়ে দেয় — কনটেক্সট-ট্র্যাকিং ছাড়াই।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

আগের পাঠ
টাচ ও জেসচার ইন্টারঅ্যাকশন ডিজাইন