স্বতঃসংশোধনের ধারণাটি একটি প্রদত্ত ব্যবস্থায় একটি সংকেত এবং নিজের মধ্যে সামঞ্জস্যতার একটি পরিমাপ সরবরাহ করে। এটির কাছে যাওয়ার বিভিন্ন উপায় রয়েছে তবে পিচ / টেম্পো সনাক্তকরণের উদ্দেশ্যে আপনি এটিকে অনুসন্ধান পদ্ধতি হিসাবে ভাবতে পারেন। অন্য কথায়, আপনি সংকেত-নমুনা-দ্বারা-নমুনাটি দিয়ে পদক্ষেপ নিয়ে যান এবং আপনার রেফারেন্স উইন্ডো এবং পিছিয়ে থাকা উইন্ডোর মধ্যে একটি সম্পর্ক স্থাপন করেন। "লেগ 0" এ সম্পর্কিত সম্পর্কটি বিশ্বব্যাপী সর্বাধিক হবে কারণ আপনি নিজের একটি ভারব্যাটিম অনুলিপিটির সাথে উল্লেখটি তুলনা করছেন। আপনি যখন এগিয়ে যান, প্রাসঙ্গিকতা অগত্যা হ্রাস পাবে, তবে পর্যায়ক্রমিক সংকেতের ক্ষেত্রে, কিছু সময় এটি আবার বাড়তে শুরু করবে, তারপরে স্থানীয় সর্বাধিকের কাছে পৌঁছবে। "লেগ 0" এবং সেই প্রথম শিখরের মধ্যে দূরত্ব আপনাকে আপনার পিচ / টেম্পোর একটি অনুমান দেয়। যেভাবে আমি '
নমুনা-দ্বারা-নমুনা তুলনা কম্পিউটিং উচ্চ নমুনা হারে খুব কম গণনামূলকভাবে ব্যয়বহুল হতে পারে, তাই সাধারণত একটি এফএফটি-ভিত্তিক পদ্ধতির ব্যবহার করা হয়। আগ্রহের বিভাগটির এফএফটি নেওয়া, এটির জটিল সংঘটিত দ্বারা এটি গুণ করে , তারপরে বিপরীত এফএফটি নেওয়া আপনাকে চক্রীয় স্বতঃসংশোধন দেবে । কোডে ( নমপি ব্যবহার করে ):
freqs = numpy.fft.rfft(signal)
autocorr = numpy.fft.irfft(freqs * numpy.conj(freqs))
প্রভাবটি পর্যায়ক্রমিক উপাদানগুলির সাথে (যা সংজ্ঞা অনুসারে নিজের মতো হয়) এর সাথে সম্পর্কিত সিগন্যালে শব্দের পরিমাণ হ্রাস করতে পারে (যা নিজের সাথে সম্পর্কহীন)। বিপরীতমুখী রূপান্তর গ্রহণের আগে স্বতঃসংশোধন (অর্থাত্ সংযুক্তি গুণ) পুনরাবৃত্তি করলে শব্দ আরও কমবে। সাদা গোলমালের সাথে মিশ্রিত একটি সাইন ওয়েভের উদাহরণ বিবেচনা করুন। নিম্নলিখিত প্লটটি 440hz সাইন ওয়েভ দেখায়, একই সাইন ওয়েভ শব্দ করে "দূষিত", গোলমাল তরঙ্গের চক্রীয় স্বায়ত্তশাসন এবং দ্বৈত চক্রীয় স্বতঃসংশোধন দেখায়:
মূল সংকেতের প্রথম চক্রের শেষে ঠিক কীভাবে উভয় স্ব-সংশ্লেষ সংকেতের প্রথম শীর্ষটি অবস্থিত তা নোট করুন। সাময়িকতা নির্ধারণ করার জন্য আপনি এটি শীর্ষে যাচ্ছেন (এই ক্ষেত্রে পিচ)। প্রথম অটোকোররিলেশন সিগন্যালটি এখনও কিছুটা "উইগলি", সুতরাং শিখর সনাক্তকরণের জন্য, এক ধরণের স্মুথিংয়ের প্রয়োজন হবে। ফ্রিকোয়েন্সি ডোমেনে দু'বার স্বতঃসংশোধন একই জিনিস সম্পাদন করে (এবং তুলনামূলক দ্রুত)। নোট করুন যে "উইগলি" দ্বারা, জুম করে যখন সিগন্যালটি দেখায় তখন কী বোঝায়, প্লটের কেন্দ্রে ঘটে যাওয়া ডিপ নয় not চক্রীয় স্বতঃসংশোধনের দ্বিতীয়ার্ধটি সর্বদা প্রথম অর্ধের আয়না চিত্র হবে, সুতরাং এই ধরণের "ডিপ" টিপিক্যাল। শুধু অ্যালগরিদম সম্পর্কে পরিষ্কার করার জন্য, কোডটি দেখতে কেমন হবে তা এখানে:
freqs = numpy.fft.rfft(signal)
auto1 = freqs * numpy.conj(freqs)
auto2 = auto1 * numpy.conj(auto1)
result = numpy.fft.irfft(auto2)
আপনার একাধিক অটোকোররিলেশন করা দরকার কিনা তা নির্ভর করে সিগন্যালে কতটা শব্দ আছে।
অবশ্যই, এই ধারণাটিতে অনেক সূক্ষ্ম প্রকরণ রয়েছে, এবং আমি তাদের এখানে allুকতে যাচ্ছি না। আমি যে সর্বাধিক বিস্তৃত কভারেজটি দেখেছি (পিচ সনাক্তকরণের প্রসঙ্গে) তা রবিনার এবং স্ক্যাফার দ্বারা রচনামূলক সংকেত ডিজিটাল প্রসেসিংয়ে ।
এখন, টেম্পো সনাক্তকরণের জন্য স্বতঃসংশোধন যথেষ্ট হবে কিনা as উত্তরটি হ্যা এবং না. আপনি কিছু টেম্পোর তথ্য পেতে পারেন (উত্স সংকেতের উপর নির্ভর করে), তবে এটি সমস্ত ক্ষেত্রে এর অর্থ কী তা বোঝা শক্ত হতে পারে। উদাহরণস্বরূপ, ব্রেকআপের দুটি লুপের প্লট, তারপরে পুরো ক্রমটির চক্রীয় স্বতঃসংশোধনের প্লট রয়েছে:
রেফারেন্সের জন্য, এখানে সম্পর্কিত অডিও এখানে:
নিশ্চিতভাবেই, লুপ পয়েন্টের সাথে ঠিক মাঝখানে একটি চমৎকার স্পাইক রয়েছে, তবে এটি বেশ দীর্ঘ অংশে প্রসেসিং থেকে এসেছে। সর্বোপরি, যদি এটি একটি যথাযথ অনুলিপি না হয় (উদাহরণস্বরূপ যদি এটির সাথে কোনও উপকরণ থাকত), তবে স্পাইকটি পরিষ্কার হবে না। স্বতঃসংশ্লিষ্টতা স্পষ্টতই টেম্পো সনাক্তকরণে কার্যকর হবে তবে জটিল উত্স উপাদানের জন্য এটি সম্ভবত যথেষ্ট হবে না। উদাহরণস্বরূপ, আপনি যদি একটি স্পাইক পেয়ে থাকেন তবে আপনি কীভাবে জানবেন যে এটি সম্পূর্ণ পরিমাপ, বা কোয়ার্টার নোট, একটি অর্ধ নোট, বা অন্য কিছু? এক্ষেত্রে এটি যথেষ্ট পরিস্কার যে এটি একটি সম্পূর্ণ পরিমাপ, তবে সবসময় এটি হবে না। আমি অভ্যন্তরীণ কাজগুলি পরিষ্কার না হওয়া অবধি সহজ সংকেতগুলিতে এসি ব্যবহার করে ঘুরে বেড়াতে পরামর্শ দেব, তারপরে সাধারণভাবে টেম্পো সনাক্তকরণ সম্পর্কে আরও একটি প্রশ্ন জিজ্ঞাসা করব (কারণ এটি "বড়"