C# এ টেক্সট টু স্পিচ কনভার্টার প্রোগ্রাম

উইন্ডোজের ন্যারাটর প্রোগ্রামটার কথা কারো মনে আছে? কোন টেক্সট সিলেক্ট করে দিলে সে সেটা আমাদের শুনিয়ে দিতো? কারো কি কখনো কৌতূহল জাগেনি জিনিসটা কীভাবে কাজ করে? কিংবা এক আধটু প্রোগ্রামিং করতে জানার পরে এরকম কিছু একটা বানাতে ইচ্ছা করেনি? বাকিদের কথা জানি না, আমার বেশ ইচ্ছা করতো। কিন্তু করার উপায় জানতাম না এই কদিন আগেও। উইন্ডোজ ফোন ৮.১ এর জন্য একটা অ্যাপ বানাতে গিয়ে এই টেক্সট টু স্পিচ জিনিসটা কীভাবে বানানো যায় খুঁজে পেয়েছিলাম। আমি আজকে উইন্ডোজ ফোনের জন্য কোন অ্যাপ বানাবো না । তবে টেক্সট টু স্পিচ প্রোগ্রাম ঠিকই বানাবো এবং সেটা হবে ওল্ড ফ্যাশন্ড C/C++ স্টাইল কনসোল অ্যাপ্লিকেশন এবং সেটা ইউজার থেকে টেক্সট (বা টেকনিকাল ভাষায় string) ইনপুট নিবে এবং সেটা আমাদের শুনাবে। তাহলে শুরু করা যাক!

প্রথমে Visual Studio তে একটা কনসোল অ্যাপ্লিকেশন প্রোজেক্ট ওপেন করি। অবশ্যই C# এর জন্য!

প্রোজেক্ট ওপেন করা

প্রোজেক্টের নাম দিলাম Text To Speech । এইবার OK বাটনে ক্লিক করে প্রোজেক্ট লোড করি ।

loaded

এবার আমরা কোড লেখার জন্য রেডি। তবে কোড লেখার আগে একটা ছোট কাজ করতে হবে । আমার প্রোজেক্টে কষ্ট করে .NET লাইব্রেরির System.Speech নেমস্পেস টাকে রেফারেন্স হিসেবে অ্যাড করে নিতে হবে । কেন? কারণ এই নেমস্পেসের অধীনে SpeechSynthesizer নামে একটা ক্লাস আছে, যা  দিয়ে আমরা একটা স্ট্রিং কে স্পিচে কনভার্ট করবো।

রেফারেন্স অ্যাড করার জন্য সলিউশন এক্সপ্লোরার এ Text To Speech এর উপর রাইট ক্লিক করে Add > Reference এ ক্লিক করি।

সার্চ বক্সে Speech লিখলে সার্চ রেজাল্টে System.Speech এসে পড়বে।

এরপর রেফারেন্স এ টিক দিয়ে OK তে ক্লিক করলে আমার কাজ শেষ। এবার কোড লেখার পালা।

কোডের শুরুতে আমাকে using ডিরেক্টিভ দিয়ে নেমস্পেস টাকে কল করে নিতে হবে । রেফারেন্স অ্যাড করাই শেষ না । সেটাকে কাজে লাগানোর জন্য একটা লাইন কষ্ট করে লিখতে হবে । তো নিচের লাইনটা লেখি কোডে (প্রয়োজনে ছবি আছে নিচে)

using System.Speech.Synthesis;

এবার কাজের কোড লেখি। আমাদের ইনপুটের জন্য একটা স্ট্রিং লাগবে , আর সেটাকে স্পিচে কনভার্ট করার জন্য SpeechSynthesizer এর একটা অবজেক্ট লাগবে , যার Speak() মেথড ব্যবহার করে আমরা স্ট্রিং কে স্পিচে কনভার্ট করবো। নিচে কোডের সম্পূর্ণ ছবি দেয়া হলো আর কোড গিটে আছেঃ ( লিংক )

fullCode

Speak() মেথড প্যারামিটার হিসেবে একটা স্ট্রিং নেয় এবং সেটাকে স্পিচে কনভার্ট করে শুনিয়ে দেয়। Speak() এর বদলে SpeakAsync() দিয়েও একই কাজ করা যায়। তবে তার কাজ একটু আলাদা। শুধু Speak() কল করলে সে নিজের কাজ শেষ না হওয়া পর্যন্ত বাকি সব টাস্ক কে হল্ট / থামিয়ে রাখে । নিজের কাজ শেষ হলে এরপরই অন্য কাজ এক্সিকিউট করতে দেয় ।আর SpeakAsync() এর ক্ষেত্রে, সে অন্যান্য টাস্ক এর সাথে প্যারালালি কাজ করতে পারে। মানে আলাদা থ্রেডে কাজ করে । অর্থাৎ Speak() মেথড  সিনক্রোনাস । নিজের কাজ শেষ না হওয়া অবধি বাকি সব থ্রেড টাস্ক হল্ট করে দেয় । আর SpeakAsync() অ্যাসিনক্রোনাস, সে অন্য থ্রেডের সাথে কাজ করতে পারে তবে কোন অর্ডার মেইনটেইন করে না যে আরেকটা থ্রেডের কাজ শেষ হলে চালু হবে নাকি নিজের টা আগে করবে। প্রোগ্রামে একের অধিক কাজ করার দরকার থাকলে SpeakAsync() দিয়ে কাজ করা ভালো , তাতে শুধু স্ট্রিং থেকে স্পিচে নেবার জন্য প্রোগ্রাম কে বসে থাকা লাগবে না। তো আমাদের কোড লেখা শেষ, এখন বিল্ড করে রান করি । কিবোর্ডের F5 কি প্রেস করলেই চলবে । অথবা ভিজুয়াল স্টুডিও এর টুলবারের স্টার্ট বাটনে ক্লিক করলেও হবে।

কনসোল উইন্ডোঃ

output

তো এই ছিলো C# দিয়ে টেক্সট টু স্পিচ কনভার্টার প্রোগ্রাম। এতক্ষণ কষ্ট করে পড়ার জন্য ধন্যবাদ। 🙂

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s