AUDIO·DSP
الصوت · العقدة 01
↩ البوابة

المنشور الرياضيالمبادئ الأولى

فورييه: من الزمن إلى التردد

العيّنة تخبرك بالسعة في لحظة، لا بالنغمات الموجودة. فورييه أعظم أداة في معالجة الإشارة: أي إشارة = مجموع موجات جيبية. هو "منشور" يفكّك الصوت إلى أطيافه — وهو نفس مبدأ DCT في الصور، لكنه هنا قلب كل شيء.

عندك ١٠٢٤ عيّنة من صوت بيانو يعزف وتراً (ثلاث نغمات معاً). الأرقام تبدو فوضى متذبذبة. كيف تستخرج النغمات الثلاث (تردداتها) من هذا الجدار؟

فكّر: لو كان عندك "نغمة اختبار" بتردد f، كيف تقيس "كم منها موجود" في إشارتك؟ تلميح: ماذا يحدث لو ضربت إشارتك في جيبٍ بتردد f وجمعت الناتج؟ إن كان f موجوداً، الضرب يعطي قيماً موجبة غالباً (يتزامنان)؛ وإن لم يكن، تتقاطع الإشارتان فيلغي بعضها بعضاً ويقترب المجموع من صفر. هذه فكرة كاملة — طوّرها.

الحدس: الارتباط (correlation) كمقياس "كم منه موجود"

الفكرة التي لمستها في اللغز هي جوهر فورييه: اضرب الإشارة في موجة اختبار واجمع. هذا "ضرب نقطي" يقيس التشابه. إن تزامنت الموجتان كان المجموع كبيراً؛ وإلا اقترب من الصفر. نكرّر لكل تردد اختبار، فنحصل على "كم من كل تردد".

لكن الطور (phase) مشكلة: نغمة بنفس التردد قد تكون مزاحة فلا تتزامن مع جيبنا. الحلّ: اختبر بجيب وجيب تمام معاً (sin و cos) — أو بصيغة مدمجة عبر العدد المركّب e^{-j2πfn} = cos − j·sin. هذا يلتقط أي طور. وهكذا تولد:

DFT
X[k] = Σₙ x[n] · e^(−j2π k n / N) # لكل تردد k: "كم منه موجود وبأي طور" |X[k]| = المقدار (السعة) , ∠X[k] = الطور
ليش العدد المركّب ليس تعقيداً بل اختصار

e^{-j2πfn} ليس سحراً — هو مجرّد تغليف لـ(cos + sin) في كائن واحد يحمل المقدار والطور معاً. لولاه لاحتجت مصفوفتين منفصلتين. الجزء الحقيقي = ارتباط مع cos، التخيّلي = مع sin. هذا كل شيء.

من DFT إلى FFT — لماذا نهتمّ بالسرعة

DFT المباشر O(N²): لكل تردد، مرور على كل العيّنات. لإشارة ثانية واحدة (44100 عيّنة) هذا مليارا عملية. FFT (Cooley-Tukey 1965) يستغلّ تناظر الجذور ليقسّم المشكلة إلى نصفين متكرّراً → O(N log N). هذا الفرق (مليار → عشرات الآلاف) هو ما جعل معالجة الصوت الرقمية ممكنة عملياً.

FIG 1 إشارة بترددين → طيف المقدار (محسوب بـDFT فعلياً)
الأعلى: الموجة الزمنية (جمع جيبين) تبدو فوضى. الأسفل: طيف المقدار يكشف قمّتين نظيفتين عند الترددين. فورييه حوّل الفوضى الزمنية إلى وضوح ترددي.
الفكرة المحورية

كل معالجة الصوت تعيش في مجالين: الزمن (ماذا يحدث متى) والتردد (ما النغمات الموجودة). فورييه الجسر بينهما، وهو عكسي (IDFT يعيد الإشارة بالضبط) — تماماً كـDCT في الصور. الفلاتر (العقدة ٠٤) ستصبح أوضح بكثير في مجال التردد، والضغط (العقدة ٠٦) سيعمل فيه.

  1. نفّذ DFT المباشر من المعادلة (احسب الجزأين الحقيقي والتخيّلي بـcos/sin، بلا مكتبة). طبّقه على x[n]=sin(2π·5n/N)+0.5·sin(2π·12n/N) بـN=64.
  2. اطبع |X[k]| لكل k. تحقّق من قمّتين عند k=5 وk=12 بنسبة 1:0.5.
  3. نفّذ IDFT وأعِد بناء x؛ تحقّق من التطابق (يثبت أن التحويل عكسي).
  4. تحدٍّ: نفّذ FFT (radix-2 تعاودي). قِس الزمن مقابل DFT لـN=4096؛ شاهد فرق مقابل N log N بنفسك.
الخلاصة

فورييه = ارتباط الإشارة بكل تردد اختبار → "كم من كل تردد وبأي طور". DFT يحسبه، FFT يسرّعه لـO(N log N). الآن نملك المجال الترددي. لكن مشكلة: DFT يفترض الإشارة ثابتة عبر كل النافذة — والموسيقى تتغيّر! النغمة تبدأ وتنتهي. كيف نرى متى ظهر كل تردد؟