সমস্যার বিবরণ
আমি একটি হার্ডওয়্যার প্রকল্পের অংশ হিসাবে ভয়েস স্বীকৃতিটি ব্যবহার করতে চাই, যা আমি সম্পূর্ণ স্ব স্বযুক্ত থাকতে চাই (আমি ছোট স্বল্প শক্তি, কম গতির ডিভাইস যেমন আরডিনোস এবং রাস্পবেরি পাই, কিনেক্টস ইত্যাদি ব্যবহার করি না, যার সাথে কোনও চলমান traditionalতিহ্যবাহী কম্পিউটার নেই) একটি ওএস জড়িত So সুতরাং একটি বদ্ধ / স্বযুক্ত প্রকল্প)।
ভয়েস স্বীকৃতিটি আপনার ইচ্ছা মতো পরিশ্রমের স্তরের উপর নির্ভর করে খুব জটিল হতে পারে। তুলনায় তুলনামূলকভাবে সহজ সেটগুলির প্রয়োজনীয়তার যা বিশ্বাস করি তা আমার কাছে রয়েছে। আমি কেবল আমার নিজের ভয়েসটিই স্বীকৃতি দিতে চাই এবং আমার কাছে 20 বা এর মতো একটি ছোট অভিধান রয়েছে যা আমি স্বীকার করতে চাই। সুতরাং আমার কাছে স্পিচ-টু-টেক্সট এবং ভয়েস স্বীকৃতি গ্রন্থাগারগুলি বা ইন্টারনেট অনুসন্ধান ইঞ্জিনগুলির মাধ্যমে আমি যে দুর্দান্ত 3 য় পক্ষের সফ্টওয়্যার পাই তা কোনও প্রয়োজন নেই (এগুলির কোনও ঘাটতি নেই!)। আমি বিশ্বাস করি যে আমার প্রয়োজনীয়তাগুলি "যথেষ্ট সহজ" (কারণগুলির মধ্যে) যা আমি নিজের সমাধানটি কোড করতে পারি। আমি ভাবছি যে কেউ কি তাদের নিজস্ব প্রক্রিয়াটি এভাবে লিখেছেন এবং আমার পদ্ধতিটি কি ত্রুটিযুক্ত? উচ্চ স্তরের গণিতের প্রয়োজন বা জটিল অ্যালগরিদম না লিখে এটি করার আরও ভাল উপায় কী? এটি সমাধানটি আমি নীচে চিন্তা করার চেষ্টা করেছি।
সমাধান বর্ণনা
আমি এটি সিতে লিখতে চাই তবে আমি কোনও ভাষা অজ্ঞেয়াদি প্রক্রিয়াটি নিয়ে আলোচনা করতে চাই, প্রক্রিয়াটির নিজস্বতার দিকে মনোনিবেশ করে। সুতরাং যে যদি আমরা করতে পারেন তা উপেক্ষা করা যাক।
ঘ। আমি কথার সাথে মেলে আমার শব্দের ডিকশনারিটি প্রাক-রেকর্ড করব। আমরা কল্পনা করতে পারি যে আমার আমার 20 টি বিভিন্ন শব্দের রেকর্ডিং রয়েছে, অথবা দুটি বা তিনটি শব্দের সংক্ষিপ্ত বাক্যাংশ বা বাক্য। আমি বিশ্বাস করি এটি অডিওকে টেক্সটে রূপান্তরকরণ এবং দুটি স্ট্রিংয়ের সাথে তুলনা করার চেয়ে দুটি রেকর্ডিং ফাইলের তুলনা করার প্রক্রিয়াটিকে সহজ করে তোলে।
ঘ। একটি মাইক্রোফোন আমার কোড চালানো আমার হার্ডওয়্যার ডিভাইসে সংযুক্ত। [1]। কোডটি নিয়মিত স্থির দৈর্ঘ্যের নমুনা নিচ্ছে, উদাহরণস্বরূপ দৈর্ঘ্যে 10msec বলুন, এবং বৃত্তাকার লগিং শৈলীতে উদাহরণস্বরূপ একটানা 10 টি নমুনা সংরক্ষণ করে। [2]। (আমি এই পরিসংখ্যানগুলি আমার মাথার উপরের অংশ থেকে আবিষ্কার করছি যাতে তারা প্রক্রিয়াটি বর্ণনা করার জন্য কেবল উদাহরণ)
[1] সঞ্চিত এবং সংগৃহীত অডিও নমুনাগুলি আরও ছোট রাখার জন্য এটি অভিধান রেকর্ডিংয়ের মতো একটি ব্যান্ড-পাস ফিল্টার এবং অপ-এম্পের মাধ্যমে সংযুক্ত হবে।
[2] আমি ঠিক কীভাবে একটি নমুনা নেব সে সম্পর্কে আমি নিশ্চিত নই, যদিও আমি একটি সংখ্যাসূচক চিত্র (পূর্ণসংখ্যা / ফ্লোট / ডাবল) তৈরি করতাম যা 10 মেসি স্যাম্পলটির অডিওকে উপস্থাপন করে (সম্ভবত কোনও সিআরসি মান) অথবা অডিও নমুনার MD5 যোগ ইত্যাদি) বা পরিসংখ্যানগুলির একটি স্ট্রিম (সম্ভবত ফ্রিকোয়েন্সিগুলির অডিও রিডিংয়ের একটি স্ট্রিম)। শেষ পর্যন্ত একটি "নমুনা" হবে একটি সংখ্যাসূচক চিত্র বা পরিসংখ্যান। এই অংশটি আরও অনেক বেশি হার্ডওয়ারের সাথে যুক্ত হতে চলেছে তাই এটি এখানে আলোচনার জন্য নয়।
ঘ। কোডটি এটি পর্যায়ক্রমে 10 টি নমুনা সঞ্চিত করে এবং একটি শব্দ বা শব্দগুচ্ছ বলা হচ্ছে বলে নির্দেশ করতে ভলিউম বৃদ্ধির সন্ধান করে (নিরবতা থেকে বিরতি) এবং তারপরে বৃদ্ধি হয় ধারাবাহিক নমুনা সংগ্রহ করার জন্য উদাহরণস্বরূপ 500 টি নমুনা বলা যায়। এর অর্থ এটি 10 সেকেন্ডের নমুনায় 5 সেকেন্ডের অডিও ক্যাপচার করে।
এটি এই নমুনাগুলি বা "স্লাইস" যা সঞ্চিত শব্দ এবং ক্যাপচার করা শব্দগুলির মধ্যে তুলনা করা হয়। যদি নমুনাগুলির একটি উচ্চ পরিমাণে সমতুল্য সঞ্চিত সংগ্রহের সাথে মেলে, কোডটি তার একই শব্দটি ধরে নিয়েছে।
The start of a store recording of the world "hello" for example,
stored words are split into 10 msec samples also
Stored Sample No | 1| 2| 3| 4| 5| 6| 7| 8|
Stored Sample Value |27|38|41|16|59|77|200|78|
Incoming audio (me saying "hello") with some "blank" samples
at the start to symbolise silence
Incoming Sample No | 1| 2| 3| 4| 5| 6| 7| 8| 9|10| 11|12|
Incoming Sample Value | | | |20|27|38|46|16|59|77|200|78|
ঘ। কোডটি একবার একটি সম্পূর্ণ নমুনা স্ট্রিম সংগ্রহ করে নিলে এটি নীচের অডিও রেকর্ডিং উত্পাদন শুরুতে ফাঁকা নমুনাগুলি ছাড়ে। এটি সঞ্চিত নমুনাটি আরও ভালভাবে সারিবদ্ধ করার জন্য নমুনা সেটটিকে পিছনের দিকে এবং কিছু জায়গায় ফরোয়ার্ড করতে পারে।
এটি নীচের মত একটি নমুনা সেট উত্পাদন করে:
Stored Sample No | 1| 2| 3| 4| 5| 6| 7| 8|
Stored Sample Value |27|38|41|16|59|77|200|78|
Incoming Sample No |-1| 1| 2| 3| 4| 5| 6| 7| 8|
Incoming Sample Value |20|27|38|46|16|59|81|201|78|
5 আমি বিশ্বাস করি যে প্রতিটি নমুনা কতটা কাছাকাছি হওয়া উচিত তার শতাংশের মান থাকার সাথে, সুতরাং নমুনা 7 টি 1% এর চেয়ে আলাদা যা 1% এর চেয়ে কম, এবং মোট নমুনার সংখ্যার জন্য শতাংশ শতাংশ যা তাদের নমুনার সাথে মিলে যাওয়ার শতাংশের মধ্যে থাকতে হবে , কোডটিতে নির্ভুলতার একটি সহজেই স্তরযুক্ত স্তর রয়েছে।
আমি এর আগে অডিও দিয়ে এর আগে কখনও কিছু করি নি, এটি অনেক কাজ হতে পারে। এই কারণেই আমি এই প্রশ্নটি জিজ্ঞাসা করছি, যদি আপনি সম্ভবত ইতিমধ্যে জানেন তবে এই প্রশ্নের উত্তরটি সুস্পষ্ট হয়ে উঠতে পারে (এর উত্তরটি যা হতে পারে)। আমি আশা করছি এটি একটি গণনাগতভাবে বিশাল কাজ হবে না কারণ আমি যে কয়েকটি হার্ডওয়্যার ব্যবহার করব তা লো সেকেন্ড স্টাফ হবে। শত শত মেগাহের্টজে (ওভার-ক্লকড রাস্প পাই ব্যবহার করে সম্ভবত 1 গিগাহার্টজ)। সুতরাং এটি কম কম্পিউটেশনাল পাওয়ার ব্যবহার করে অডিও নমুনাগুলির সাথে মেলে একটি অপরিশোধিত উপায়। আমি তাত্ক্ষণিক ফলাফলের জন্য লক্ষ্য রাখছি না, তবে ধারণার একটি শালীন প্রমাণের জন্য 30 সেকেন্ডেরও কম।
পিএস আমার কাছে এই "অডিও", "অডিও স্বীকৃতি", "ভয়েস", "ভয়েস স্বীকৃতি" ইত্যাদির মতো একটি নতুন ট্যাগ দিয়ে ট্যাগ করার রেপ নেই PS