অডিও বিশ্লেষণে স্বতঃসংশ্লিষ্ট


11

আমি স্বতঃসংশ্লিষ্ট বিষয়ে পড়ছি , তবে আমি নিশ্চিত না যে এটি ঠিক কীভাবে কাজ করে এবং কী আউটপুট আশা করা উচিত তা আমি ঠিক বুঝতে পেরেছি। আমি কি এই ভেবে ঠিক আছি যে আমার সিগন্যালটি এসি ফাংশনে ইনপুট করা উচিত এবং একটি স্লাইডিং উইন্ডো ইনপুট থাকা উচিত। প্রতিটি উইন্ডো (উদাহরণস্বরূপ, 1024 নমুনার) -1 এবং 1 এর মধ্যে একটি গুণফল আউটপুট করে The সরলতার জন্য, বলুন যে আমার কাছে ওভারল্যাপ নেই এবং কেবলমাত্র উইন্ডোটি 1024 নমুনা প্রতিবার সরাতে। 44100 এর নমুনায়, আমি কি 43 সহগ খুঁজে পেতে পারি এবং আমার কি তাদের সবগুলি রাখা দরকার?

বলুন আমি 200 সেকেন্ডের সংকেতের জন্য এটি সম্পাদন করব, আমাকে 8600 সহগ প্রদান করবে। পুনরাবৃত্তি সনাক্ত করতে এবং, পরিবর্তে, টেম্পো কীভাবে আমি এই সহগগুলি ব্যবহার করব? আমি তাদের গ্রুপ করার জন্য কোনও ধরণের নিউরাল নেটওয়ার্ক তৈরি করা উচিত, না এটি ওভারকিল?

কোন সাহায্যের জন্য ধন্যবাদ।


4
ধরুন আপনার নমুনা । আপনার এসি ফাংশনটি কী দেয় তা আমাদের বলতে পারেন? সম্ভাব্য উত্তরগুলি হতে পারে: "এটি " বা "এটি নম্বর যেখানে "বা" এটি সংখ্যা যেখানে "। তিনটি প্রস্তাবিত উত্তরই স্বতঃসংশ্লিষ্টতার ধারণার সাথে সামঞ্জস্যপূর্ণ। 1024x[1],x[2],,x[1024]i=11024(এক্স[আমি])21024আর[]আর[]=Σআমি=11024-এক্স[আমি]এক্স[আমি+ +]1024আর[]আর[]=Σআমি=11024-এক্স[আমি]এক্স[আমি+ +]+ +Σআমি=1এক্স[1024-+ +আমি]এক্স[আমি]
দিলীপ সরোতে

ওহে দিলীপ, সাহায্যের জন্য ধন্যবাদ। আমি এখনও এসি ফাংশনটি বাস্তবায়ন করি নি, আমি প্রথমে থিওরিটির চারপাশে মাথা পেতে চেষ্টা করছি। প্রথম সমীকরণটি সবচেয়ে সহজ বলে মনে হচ্ছে তবে কি ডেটা আগেই স্বাভাবিক করা দরকার?
এক্সএসএল

1
এখানে একটি উদাহরণ রয়েছে: gist.github.com/255291#L62
এন্ডোলিথ

উত্তর:


23

স্বতঃসংশোধনের ধারণাটি একটি প্রদত্ত ব্যবস্থায় একটি সংকেত এবং নিজের মধ্যে সামঞ্জস্যতার একটি পরিমাপ সরবরাহ করে। এটির কাছে যাওয়ার বিভিন্ন উপায় রয়েছে তবে পিচ / টেম্পো সনাক্তকরণের উদ্দেশ্যে আপনি এটিকে অনুসন্ধান পদ্ধতি হিসাবে ভাবতে পারেন। অন্য কথায়, আপনি সংকেত-নমুনা-দ্বারা-নমুনাটি দিয়ে পদক্ষেপ নিয়ে যান এবং আপনার রেফারেন্স উইন্ডো এবং পিছিয়ে থাকা উইন্ডোর মধ্যে একটি সম্পর্ক স্থাপন করেন। "লেগ 0" এ সম্পর্কিত সম্পর্কটি বিশ্বব্যাপী সর্বাধিক হবে কারণ আপনি নিজের একটি ভারব্যাটিম অনুলিপিটির সাথে উল্লেখটি তুলনা করছেন। আপনি যখন এগিয়ে যান, প্রাসঙ্গিকতা অগত্যা হ্রাস পাবে, তবে পর্যায়ক্রমিক সংকেতের ক্ষেত্রে, কিছু সময় এটি আবার বাড়তে শুরু করবে, তারপরে স্থানীয় সর্বাধিকের কাছে পৌঁছবে। "লেগ 0" এবং সেই প্রথম শিখরের মধ্যে দূরত্ব আপনাকে আপনার পিচ / টেম্পোর একটি অনুমান দেয়। যেভাবে আমি '

নমুনা-দ্বারা-নমুনা তুলনা কম্পিউটিং উচ্চ নমুনা হারে খুব কম গণনামূলকভাবে ব্যয়বহুল হতে পারে, তাই সাধারণত একটি এফএফটি-ভিত্তিক পদ্ধতির ব্যবহার করা হয়। আগ্রহের বিভাগটির এফএফটি নেওয়া, এটির জটিল সংঘটিত দ্বারা এটি গুণ করে , তারপরে বিপরীত এফএফটি নেওয়া আপনাকে চক্রীয় স্বতঃসংশোধন দেবে । কোডে ( নমপি ব্যবহার করে ):

freqs = numpy.fft.rfft(signal)
autocorr = numpy.fft.irfft(freqs * numpy.conj(freqs))

প্রভাবটি পর্যায়ক্রমিক উপাদানগুলির সাথে (যা সংজ্ঞা অনুসারে নিজের মতো হয়) এর সাথে সম্পর্কিত সিগন্যালে শব্দের পরিমাণ হ্রাস করতে পারে (যা নিজের সাথে সম্পর্কহীন)। বিপরীতমুখী রূপান্তর গ্রহণের আগে স্বতঃসংশোধন (অর্থাত্ সংযুক্তি গুণ) পুনরাবৃত্তি করলে শব্দ আরও কমবে। সাদা গোলমালের সাথে মিশ্রিত একটি সাইন ওয়েভের উদাহরণ বিবেচনা করুন। নিম্নলিখিত প্লটটি 440hz সাইন ওয়েভ দেখায়, একই সাইন ওয়েভ শব্দ করে "দূষিত", গোলমাল তরঙ্গের চক্রীয় স্বায়ত্তশাসন এবং দ্বৈত চক্রীয় স্বতঃসংশোধন দেখায়:

Autocorrelation

মূল সংকেতের প্রথম চক্রের শেষে ঠিক কীভাবে উভয় স্ব-সংশ্লেষ সংকেতের প্রথম শীর্ষটি অবস্থিত তা নোট করুন। সাময়িকতা নির্ধারণ করার জন্য আপনি এটি শীর্ষে যাচ্ছেন (এই ক্ষেত্রে পিচ)। প্রথম অটোকোররিলেশন সিগন্যালটি এখনও কিছুটা "উইগলি", সুতরাং শিখর সনাক্তকরণের জন্য, এক ধরণের স্মুথিংয়ের প্রয়োজন হবে। ফ্রিকোয়েন্সি ডোমেনে দু'বার স্বতঃসংশোধন একই জিনিস সম্পাদন করে (এবং তুলনামূলক দ্রুত)। নোট করুন যে "উইগলি" দ্বারা, জুম করে যখন সিগন্যালটি দেখায় তখন কী বোঝায়, প্লটের কেন্দ্রে ঘটে যাওয়া ডিপ নয় not চক্রীয় স্বতঃসংশোধনের দ্বিতীয়ার্ধটি সর্বদা প্রথম অর্ধের আয়না চিত্র হবে, সুতরাং এই ধরণের "ডিপ" টিপিক্যাল। শুধু অ্যালগরিদম সম্পর্কে পরিষ্কার করার জন্য, কোডটি দেখতে কেমন হবে তা এখানে:

freqs = numpy.fft.rfft(signal)
auto1 = freqs * numpy.conj(freqs)
auto2 = auto1 * numpy.conj(auto1)
result = numpy.fft.irfft(auto2)

আপনার একাধিক অটোকোররিলেশন করা দরকার কিনা তা নির্ভর করে সিগন্যালে কতটা শব্দ আছে।

অবশ্যই, এই ধারণাটিতে অনেক সূক্ষ্ম প্রকরণ রয়েছে, এবং আমি তাদের এখানে allুকতে যাচ্ছি না। আমি যে সর্বাধিক বিস্তৃত কভারেজটি দেখেছি (পিচ সনাক্তকরণের প্রসঙ্গে) তা রবিনার এবং স্ক্যাফার দ্বারা রচনামূলক সংকেত ডিজিটাল প্রসেসিংয়ে


এখন, টেম্পো সনাক্তকরণের জন্য স্বতঃসংশোধন যথেষ্ট হবে কিনা as উত্তরটি হ্যা এবং না. আপনি কিছু টেম্পোর তথ্য পেতে পারেন (উত্স সংকেতের উপর নির্ভর করে), তবে এটি সমস্ত ক্ষেত্রে এর অর্থ কী তা বোঝা শক্ত হতে পারে। উদাহরণস্বরূপ, ব্রেকআপের দুটি লুপের প্লট, তারপরে পুরো ক্রমটির চক্রীয় স্বতঃসংশোধনের প্লট রয়েছে:

ব্রেকবিট স্বতঃসংশ্লিষ্ট

রেফারেন্সের জন্য, এখানে সম্পর্কিত অডিও এখানে:

নিশ্চিতভাবেই, লুপ পয়েন্টের সাথে ঠিক মাঝখানে একটি চমৎকার স্পাইক রয়েছে, তবে এটি বেশ দীর্ঘ অংশে প্রসেসিং থেকে এসেছে। সর্বোপরি, যদি এটি একটি যথাযথ অনুলিপি না হয় (উদাহরণস্বরূপ যদি এটির সাথে কোনও উপকরণ থাকত), তবে স্পাইকটি পরিষ্কার হবে না। স্বতঃসংশ্লিষ্টতা স্পষ্টতই টেম্পো সনাক্তকরণে কার্যকর হবে তবে জটিল উত্স উপাদানের জন্য এটি সম্ভবত যথেষ্ট হবে না। উদাহরণস্বরূপ, আপনি যদি একটি স্পাইক পেয়ে থাকেন তবে আপনি কীভাবে জানবেন যে এটি সম্পূর্ণ পরিমাপ, বা কোয়ার্টার নোট, একটি অর্ধ নোট, বা অন্য কিছু? এক্ষেত্রে এটি যথেষ্ট পরিস্কার যে এটি একটি সম্পূর্ণ পরিমাপ, তবে সবসময় এটি হবে না। আমি অভ্যন্তরীণ কাজগুলি পরিষ্কার না হওয়া অবধি সহজ সংকেতগুলিতে এসি ব্যবহার করে ঘুরে বেড়াতে পরামর্শ দেব, তারপরে সাধারণভাবে টেম্পো সনাক্তকরণ সম্পর্কে আরও একটি প্রশ্ন জিজ্ঞাসা করব (কারণ এটি "বড়"


2
স্তব্ধ থাকুন, এটি কি অডিও সংকেতটির স্ব-সংবিধান নিজেই? এটি অবশ্যই ডিজিটাল লুপগুলি ছাড়া অন্য কোনও কিছুতে টেম্পো সনাক্তকরণের জন্য খুব কার্যকর নয়। কিছু আরএমএস খামের স্বতঃসংশোধন সাধারণভাবে আরও ভালভাবে কাজ করা উচিত, বিশেষত একাধিক ফ্রিকোয়েন্সি ব্যান্ডের জন্য পৃথকভাবে।
10:51

1
সময় দিক STFT এর Autocorrelation প্রশংসনীয় ভাল কাজ করে, যতদিন হয়েছে যেমন সঙ্গীত কিছু বীট ধরনের। এটি মূলত প্রচুর পরিমাণে ফ্রিকোয়েন্সি ব্যান্ডের স্বতঃসংশোধন চালানো এবং তারপরে তাদের সংমিশ্রণের সমান।
এন্ডোলিথ

2
@ বাম দিকের ডানদিকে, টেম্পো সনাক্তকরণ (প্রাক, পোস্ট প্রসেসিং) এর জন্য নিজে থেকে স্বতঃসংশ্লিষ্টকরণের জন্য অনেকগুলি কাজ করা দরকার। আমি মূলত ওপি-র প্রশ্নের প্রথম বাক্যে (যেমন "স্বতঃসংশ্লিষ্টতা কীভাবে কাজ করে") এর প্রতিক্রিয়া জানাচ্ছি, তারপরে তিনি টেম্পো সনাক্তকরণ সম্পর্কে আরও একটি প্রশ্ন জিজ্ঞাসা করছেন, কারণ অন্যান্য প্রক্রিয়া জড়িত হবে।
ডেটাজেস্ট

@endolith এখানে আপনি কী বোঝাতে চেয়েছেন Autocorrelation of the STFT in the time direction? বিশেষত সময় দিকের অংশ
পপ্ট্র্লল

1
@pctctl এর অর্থ এসটিএফটির প্রতিটি সারিটির স্বতঃসংশোধন গণনা করা
এন্ডোলিথ

3

আপনার মতো মনে হচ্ছে বীট সনাক্তকরণ করতে অটোকোররিলেশন ব্যবহার করতে চান। আপনি এটি করতে পারেন তবে আমি আপনাকে অডিওটি ব্যাপকভাবে ডাউনসাম্পল করার পরামর্শ দিচ্ছি। আপনি 1 এবং 3 Hz (60 বিপিএম থেকে 180 বিপিএম) এর মধ্যে একটি সংকেত খুঁজছেন যাতে আপনার প্রয়োজন না হয় বা 44100 হার্জ রেজোলিউশন চান না। একটি সঠিকভাবে গণনা করা এবং স্বাভাবিক করা স্বতঃসংশোধন 1.0 এ ল্যাগ 0 এ হয় (সিগন্যাল পুরোপুরি নিজের সাথে সংযুক্ত থাকে)। পর্যায়ক্রমিক সিগন্যালের জন্য, এসি শূন্যের নীচে নেমে আসে, তারপরে স্তনবৃন্তের মৌলিক ফ্রিকোয়েন্সিটির সাথে সামঞ্জস্য রেখে সামঞ্জস্যভাবে ছোট শিখরগুলির সাথে ফিরে আসে। এই শিখরের সন্ধান করতে আপনাকে অবশ্যই যুক্তিসঙ্গত পরিসর বেছে নিতে হবে। শব্দের জন্য, স্বতঃসংশ্লিষ্টতা হ্রাস পায় এবং মূলত শূন্যের কাছাকাছি স্কুইগলসে ফ্ল্যাটলাইনগুলি। থাম্বের নিয়ম হিসাবে, যদি আপনার নরমালীন এসি তে 0.5> 0.5 থাকে তবে আপনার পর্যায়ক্রমিক সংকেত রয়েছে।


1

স্বয়ংক্রিয় সম্পর্কটি কেবল নিজের সাথে সংকেতের ক্রস পারস্পরিক সম্পর্ক। এটির গণনা করার একটি সহজ উপায় হ'ল মূল সংকেত এবং সিগন্যালের একটি সময় উল্টানো সংস্করণের মধ্যে একটি সমঝোতা করা। আপনার যদি একটি সিগন্যাল থাকে যা 1000 নমুনা দীর্ঘ হয় তবে এর স্বতঃসম্পর্কতার সাথে 1999 (2 * N-1)-শূন্য নমুনা রয়েছে। এই নমুনাগুলির মধ্যে কেবলমাত্র 1000 টি স্বতন্ত্র কারণ কারণ অটো সংযোগ (বাস্তব সংকেতের জন্য) সর্বদা সময় মতো প্রতিসম হয়, যেমন এসি [এন] = এসি--এন]।

অবিচ্ছিন্ন সংকেতগুলিকে সীমাবদ্ধ খণ্ডে বিভক্ত করা দরকার। এটি ফুরিয়ার ট্রান্সফর্মের অনুরূপ: প্রযুক্তিগতভাবে আপনাকে ইনফ থেকে + ইনফ থেকে সংহত করতে হবে তবে এটিগুলি ভাগে বিভক্ত (ওভারল্যাপ এবং / অথবা উইন্ডোং সহ প্রয়োজন অনুসারে) কার্যকর ফলাফলও দেয়। উইন্ডোর দৈর্ঘ্য, আকৃতি এবং ওভারল্যাপের পছন্দ প্রয়োগের উপর নির্ভর করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.