কীভাবে এফএফটি বা ডিএফটি ব্যবহার করে অডিওকে পুনরায় নমুনা করতে হয়


12

আমি প্রথমে কোনও এফএফটি সম্পাদন করে ভয়েস অডিও নমুনা নিচে রেখেছি, তারপরে কেবল আমার প্রয়োজনীয় ফলাফলের অংশগুলি নিয়েছি এবং তারপরে একটি বিপরীত এফএফটি সম্পাদন করব performing তবে, এটি কেবলমাত্র সঠিকভাবে কাজ করছে যখন আমি উভয়ই দু'রকমের ফ্রিকোয়েন্সি ব্যবহার করছি, 32768 থেকে 8192 পর্যন্ত ডাউন-স্যাম্পলিং বলুন I আমি 32k ডেটাতে একটি এফএফটি সঞ্চালন করি, উপাত্তের উপরের 3/4 বাতিল করে এবং তারপর একটি সম্পাদন করি বাকী 1/4 এ বিপরীত এফএফটি।

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

প্রাথমিক এফএফটি এবং শেষে বিপরীত এফএফটি উভয়ই আমি কীভাবে এফএফটি ডেটা সঠিকভাবে জিরো প্যাডে যাব? ধরে নিলাম আমার 44.1khz এ একটি নমুনা রয়েছে যা 16khz এ পৌঁছাতে হবে, আমি বর্তমানে এই জাতীয় কিছু চেষ্টা করছি, নমুনাটি 1000 আকারের।

  1. শেষে 1024 এ প্যাড ইনপুট ডেটা
  2. এফএফটি সম্পাদন করুন
  3. অ্যারেতে প্রথম 512 টি আইটেম পড়ুন (আমার কেবল প্রথম 362 প্রয়োজন, তবে ^ 2 প্রয়োজন)
  4. বিপরীত এফএফটি সম্পাদন করুন
  5. অডিও প্লে বাফারে প্রথম 362 টি আইটেম পড়ুন

এটি থেকে, আমি শেষে আবর্জনা পেয়েছি। একই জিনিসটি করছেন তবে নমুনাগুলি ইতিমধ্যে ^ 2 হওয়ার কারণে পদক্ষেপ 1 এবং 3 এ প্যাড না করে সঠিক ফলাফল দেয়।

c#  audio 

9
এফএফটি আসলে এটি করার সঠিক উপায় নয়। আপনি সর্বাধিক দক্ষতার জন্য একটি পলিফেজ ফিল্টারব্যাঙ্ক চান, তবে আপনি যদি সমস্যাটি সমাধান করতে চান তবে প্রথমে জিসিডির আপসাম্পল, তারপরে লোপপাস, তারপরে ডাউনসাম্পল।
বজর্ন রোচে

হাই বজর্ন: "জিসিডি" কী?
স্পিডকোডার 5

উত্তর:


16

প্রথম পদক্ষেপটি আপনার শুরুর নমুনা হার এবং আপনার টার্গেটের নমুনা হার উভয়ই যুক্তিযুক্ত সংখ্যা যাচাই করা । যেহেতু তারা পূর্ণসংখ্যা হয় তারা স্বয়ংক্রিয়ভাবে যুক্তিযুক্ত সংখ্যা। যদি তাদের মধ্যে একটি যুক্তিসঙ্গত সংখ্যা না হয় তবে এখনও নমুনার হার পরিবর্তন করা সম্ভব হবে তবে এটি একটি ভিন্ন প্রক্রিয়া এবং আরও কঠিন।

পরবর্তী পদক্ষেপটি হল দুটি নমুনার হারগুলি ফ্যাক্টর করা। সেক্ষেত্রে প্রারম্ভিক নমুনার হার 44100, যা । লক্ষ্য নমুনার হার, 16000, 2 25 3 এর গুণনীয়ক । সুতরাং, শুরুর নমুনা হারকে লক্ষ্য হারে রূপান্তর করতে আমাদের অবশ্যই 3 27 2 দ্বারা এবং 2 55 দ্বারা বিভক্ত করতে হবে ।22*32*52*7227*5332*7225*5

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

এটি কীভাবে কাজ করে তা বোঝার জন্য এটি কল্পনা করতে সহায়তা করে। আপনি একটি অডিও সিগন্যাল দিয়ে শুরু করেছেন যা দেখতে পেয়েছে, ফ্রিকোয়েন্সি ডোমেনে, নীচের চিত্রের মতো কিছু। 44.1 kHz নমুনার হার

আপনি যখন আপনার প্রক্রিয়াজাতকরণটি সম্পন্ন করবেন আপনি যখন নমুনার হার 16 কেজি হার্জ হ্রাস করতে চান তবে আপনি যতটা সম্ভব বিকৃতি চান। অন্য কথায়, আপনি কেবল উপরের চিত্র থেকে -8 কেএজেডজ থেকে +8 কেএইচজেডে রেখে সমস্ত কিছু ফেলে রাখতে চান। এটি নীচের ছবিতে ফলাফল। এখানে চিত্র বর্ণনা লিখুন

দয়া করে নোট করুন যে নমুনার হারগুলি স্কেল করার জন্য নয়, তারা ধারণাগুলি চিত্রিত করার জন্য কেবল সেখানে রয়েছে।

25*5

আপনার সন্দেহ হতে পারে, বেশ কয়েকটি সম্ভাব্য সমস্যা রয়েছে। আমি প্রত্যেকটির মধ্য দিয়ে যাব এবং কীভাবে আপনি এগুলি কাটিয়ে উঠতে পারবেন তা ব্যাখ্যা করব।

  1. যদি আপনার ডেটা ডেসিমেশন ফ্যাক্টরের সুন্দর একাধিক না হয় তবে আপনি কী করবেন? ডেসিমেশন ফ্যাক্টরের একাধিক করার জন্য আপনার ডেটার প্রান্তটি যথেষ্ট জিরো দিয়ে প্যাডিং দিয়ে আপনি সহজেই এটিকে কাটিয়ে উঠতে পারেন। ডেটা এফএফটি'র আগে প্যাড করা হয়।

  2. যদিও আমি যে পদ্ধতিটি ব্যাখ্যা করেছি তা খুব সহজ, এটি সময়-ডোমেনে বাজানো এবং অন্যান্য কদর্য শিল্পকর্মের পরিচয় দিতে পারে এটি এটিও আদর্শ নয়। উচ্চ ফ্রিকোয়েন্সি ডেটা ফেলে দেওয়ার আগে আপনি ফ্রিকোয়েন্সি ডোমেন ডেটা ফিল্টার করে এড়াতে পারেন। আপনি আপনার ফিল্টার দৈর্ঘ্যের এফএফটি'র মাধ্যমে এটি করেন-1জিরোস (দয়া করে নোট করুন যে ডেটা নমুনার সংখ্যা এবং প্যাডিং নমুনাগুলির পরিমাণ অবশ্যই ডেসিমেশন ফ্যাক্টরের একটি ইতিবাচক একাধিক হতে হবে - আপনি এই সীমাবদ্ধতাটি পূরণের জন্য প্যাডিং দৈর্ঘ্য বাড়িয়ে নিতে পারেন), প্যাডেড ডেটা এফএফটি'র করে, ফ্রিকোয়েন্সি ডোমেনকে গুণ করে ডেটা এবং ফিল্টার এবং তারপরে উচ্চ ফ্রিকোয়েন্সি (> 8 কেএইচজেড) অ্যালিজ করে উচ্চ ফ্রিকোয়েন্সি ফলাফলগুলি বাদ দেওয়ার আগে কম ফ্রিকোয়েন্সি (<8 kHz) ফলাফলগুলিতে নেমে আসে। দুর্ভাগ্যক্রমে, যেহেতু ফ্রিকোয়েন্সি ডোমেনে ফিল্টার করা তার নিজস্ব ক্ষেত্রে একটি বড় বিষয়, তাই আমি এই উত্তরে আরও বিশদে যেতে পারব না। যদিও আমি বলব যে আপনি যদি একাধিক অংশে ডেটা ফিল্টার করে এবং প্রক্রিয়াজাত করে থাকেন তবে ফিল্টারিংকে অবিচ্ছিন্ন করতে আপনাকে ওভারল্যাপ-এন্ড-অ্যাড বা ওভারল্যাপ-এ-সেভ বাস্তবায়ন করতে হবে ।

আশা করি এটা কাজে লাগবে.

সম্পাদনা: ফ্রিকোয়েন্সি ডোমেন নমুনার প্রারম্ভিক সংখ্যা এবং ফ্রিকোয়েন্সি ডোমেন নমুনাগুলির লক্ষ্য সংখ্যার মধ্যে পার্থক্য এমন কি হওয়া দরকার যাতে আপনি ফলাফলের নেতিবাচক দিক হিসাবে একই ধরণের নমুনাকে ফলাফলের ইতিবাচক দিক থেকে সরাতে পারেন। আমাদের উদাহরণের ক্ষেত্রে, নমুনাগুলির শুরুর সংখ্যাটি হ'ল ডেসিমেশন হার বা ৪৪১, এবং নমুনাগুলির লক্ষ্য সংখ্যা হ'ল আন্তঃবিবর্তন হার বা 160. পার্থক্যটি 279, যা এমনকি নয়। সমাধানটি এফএফটি দৈর্ঘ্যকে দ্বিগুণ করে 882 করতে হবে, যার ফলে নমুনাগুলির লক্ষ্য সংখ্যাকেও দ্বিগুণ করে 320 করা যায়। এখন পার্থক্যটিও সমান, এবং আপনি কোনও সমস্যা ছাড়াই উপযুক্ত ফ্রিকোয়েন্সি ডোমেন নমুনাগুলি ফেলে দিতে পারেন।


খুব সুন্দর. আপনি কীভাবে উড়ানের মতো সুন্দর পরিসংখ্যান তৈরি করছেন, জিম?
স্পেসি

@ মোহাম্মদ আমি সাধারণত পাওয়ারপয়েন্ট ব্যবহার করি। এই ক্ষেত্রে আমি পাওয়ারপয়েন্টের লিব্রে অফিস সংস্করণ ব্যবহার করেছি, যা আমি বিশ্বাস করি "ইমপ্রেস" বলা হয়।
জিম ক্লে

হ্যালো, আপনার পয়েন্টে আমার একটি প্রশ্ন আছে (2) এই পদক্ষেপের ঠিক কীটি বোঝাতে চাইছেন: "... এবং তারপরে উচ্চ ফ্রিকোয়েন্সি (> 8 কেএইচজেড) অ্যালিজ করে উচ্চ ফ্রিকোয়েন্সি ফলাফলগুলি বাদ দেওয়ার আগে কম ফ্রিকোয়েন্সি (<8 কেএইচজেড) ফলাফলগুলিতে নেমে আসে।" আমি তার আগে পদক্ষেপগুলি বুঝতে পারি। আমি আমার ফিল্টারটির এফ-ডোমেন দিয়ে আমার এফ-ডোমেন ডেটা গুন করার পরে, তবে কী? এছাড়াও, আপনি কীভাবে আপনার ডেটা উপস্থাপন করতে চান এই পদ্ধতিটি কি কাজ করে? ধন্যবাদ.
TheGrapeBeyond

@TheGrapeBeyond সময় ডোমেনে আপনি যখন উপন্যাস রাখেন তখন আপনি সমস্ত Nyquist অঞ্চল একসাথে যুক্ত করেন। সমস্ত নাইকুইস্ট জোনের প্রথম উপাদানগুলি একসাথে যুক্ত হয়ে প্রথম নাইকুইস্ট জোনের নতুন প্রথম উপাদান হয়ে যায়। সব Nyquist জোনের দ্বিতীয় উপাদান একসঙ্গে যোগ এবং প্রথম Nyquist জোন, ইত্যাদি নতুন দ্বিতীয় উপাদান হয়ে পেতে
জিম ক্লে

হুম, আমি নিশ্চিত নই যে আপনি কীভাবে এফএফটি-ভিত্তিক পুনরায় মডেলিং করছেন তা আমি বুঝতে পেরেছি, কারণ আমি যখন এখানে চেষ্টা করে দেখি তখন খুব অদ্ভুত ফলাফল পাই। আমি এটি নিয়ে একটি প্রশ্ন করব।
TheGrapeBeEnd

3

উপরের উত্তরটি সত্যিই সম্পূর্ণ হলেও:

এখানে এর সংক্ষিপ্তসার:

  1. সিগন্যালটির আকার নেওয়ার জন্য এটির পুরো সংখ্যা হওয়া দরকার। সিগন্যালের ডাউন স্যাম্পলিংয়ের আগে আপনাকে সিগন্যালটি ফিল্টার করতে হবে।
  2. আপনি প্রথমে সংকেত আপ-স্যাম্পলিং / ইন্টারপোল্টিংয়ের মাধ্যমে যুক্তিযুক্ত সংখ্যাটি নিখরচায়িত করতে পারবেন।
  3. আপসাম্পলিংটি কেবল শূন্যগুলি serোকাচ্ছে এবং তারপরে সংকেত ফিল্টার করছে।
  4. সুতরাং 3/4 নমুনা হার অর্জন। প্রতিটি সিগন্যালের নমুনার মধ্যে 4 টি শূন্য byুকিয়ে সংকেতটিকে উপস্থাপন করুন। একটি ফিল্টার প্রয়োগ করুন। তারপরে সিগন্যালটি ফিল্টার করুন এবং প্রতি 4 সিগন্যালের নমুনার মধ্যে প্রতি 3 টি মুছুন।

এ সম্পর্কে বিশদ:

http://www.ws.binghamton.edu/fowler/fowler%20personal%20page/EE523_files/Ch_14_1%20Subband%20Intro%20&%20Multirate%20(PPT).pdf

এছাড়াও: যদি এটি একেবারে প্রয়োজনীয় না হয় তবে আইএফএফটি গণনা করার জন্য এফএফটি কম্পিউটার করবেন না। এটি একটি অবিশ্বাস্যরূপে ধীর প্রক্রিয়া এবং বেশিরভাগ সিগন্যাল প্রক্রিয়াজাতকরণ কাজের জন্য এটি অনুপযুক্ত বলে মনে করে। এফএফটি সাধারণত কোনও সমস্যা বিশ্লেষণ করতে বা কেবল ফ্রিকোয়েন্সি ডোমেনে সিগন্যাল প্রসেসিং প্রয়োগ করার জন্য ব্যবহৃত হয়।


1

বজর্ন রোচে যেমন বলছিলেন, এর জন্য এফএফটি ব্যবহার করা মারাত্মকভাবে অসুবিধাজনক হবে। তবে এখানে ফ্রিকোয়েন্সি ডোমেনে আপসামাল ফিল্টার এবং ডাউনসাম্পল পদ্ধতিটি ব্যবহার করে এটি খুব সাধারণ ফ্যাশনে চলে যায়।

1 - দৈর্ঘ্যের এন এর পছন্দসই ভেক্টর সংকেত নিন Take

2 - এন পয়েন্ট এফএফটি সম্পাদন করুন।

3 - জিরো এফএফটি ভেক্টরের মাঝখানে 160 * এন জিরো দিয়ে এফএফটি প্যাড করে।

4 - আইএফএফটি সম্পাদন করুন

5 - অন্যান্য 440 টি বাতিল করে 441 নমুনার মধ্যে একটি নির্বাচন করুন।

আপনাকে দৈর্ঘ্যের N * 160/441 এর ভেক্টরটি রেখে দেওয়া হবে, এটি আপনার পুনর্নির্মাণের সংকেত হবে।

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

আশা করি এটা সাহায্য করবে.

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