حدود الـ power spectral density (PSD)
الـ periodogram وطريقة Welch الاتنين بيطلّعوا تقدير PSD واحد — دالة في الـ frequency بس. وبيفترضوا إن الـ signal stationary (ثابتة): يعني خصائصها الإحصائية مبتتغيّرش مع الوقت. بس signals حقيقية كتير بتكسر الافتراض ده خالص. الكلام بيتنقّل بين سكوت وأصوات voiced وunvoiced في أجزاء من الثانية. صدى الخفاش بيكنس من 80 كيلوهرتز لـ 20 كيلوهرتز في أقل من ثانية. وإشارة الزلزال بتبقى هادية لحد ما الموجة الأولى (P-wave) توصل فتتملي طاقة.
للـ signals المش stationary دي، محتاجين تمثيل يرصد محتوى الـ spectrum بيتغيّر إزاي مع الوقت — توزيع مشترك في الزمن والـ frequency. والـ spectrogram (الطيف الزمني-الترددي) هو أشهر التمثيلات دي وأكترها استخدامًا.
الـ short-time Fourier transform (STFT)
الـ spectrogram بيتحسب من الـ short-time Fourier transform (تحويل فورييه قصير الأمد) أو STFT. الفكرة بسيطة: بدل ما تحسب DFT واحد على الـ signal كلها، بتزحلق analysis window قصيرة على طول الـ signal وتحسب DFT عند كل مكان. وكل DFT متطبّق عليه window بيدّي محتوى الـ frequency المحلي حوالين اللحظة دي.
الـ spectrogram ببساطة هو مربّع magnitude الـ STFT — توزيع الطاقة على مستوى الزمن-الـ frequency:
مقايضة الـ resolution بين الزمن والـ frequency
أهم خاصية في الـ spectrogram هي مقايضة الـ time resolution قصاد الـ frequency resolution. ودي نتيجة حتمية لطريقة شغل الـ windows في تحويل فورييه، وهي المقابل الرقمي لمبدأ عدم اليقين بتاع هايزنبرغ في ميكانيكا الكم.
طول الـ analysis window M بيحدّد الاتنين resolution في نفس الوقت:
- time resolution عالية — بتحدّد الأحداث بدقة في الزمن
- frequency resolution ضعيفة — Δf = f_s/M كبيرة
- قمم frequency عريضة ومغبّشة
- مناسبة للـ transients: نقرات، بدايات، ضربات
- المعتاد: M = 128–512 sample
- time resolution ضعيفة — بتغبّش الأحداث في الزمن
- frequency resolution عالية — Δf = f_s/M صغيرة
- قمم frequency حادة وضيقة
- مناسبة للـ harmonics: أصوات مزيكا، نغمات
- المعتاد: M = 2048–8192 sample
حاصل ضرب الـ time resolution (Δt) في الـ frequency resolution (Δf) ليه حد أدنى ثابت معتمد على شكل الـ window. والـ Gaussian window بتوصل للحد الأدنى النظري (حد Gabor). مفيش window تدّيك resolution عالية في البعدين مع بعض — تقدر تنقل المقايضة لما تغيّر الـ window، بس مفيش مهرب منها.
Δt · Δf ≥ 1/(4π) — حد Gabor لأي تحليل زمني-ترددي خطيparameters الـ STFT عمليًا
أربع parameters بيتحكّموا في الـ spectrogram. كل واحد بيأثّر على الـ resolution في الزمن والـ frequency، والتكلفة الحسابية، والشكل البصري للنتيجة:
| الـ parameter | أثره على الـ time resolution | أثره على الـ frequency resolution | القيمة المنتشرة |
|---|---|---|---|
| طول الـ window M | ↑M → أضعف (frames أطول) | ↑M → أدق (Δf = f_s/M) | 512–4096 sample |
| الـ hop size R | ↓R → أدق (overlap أكبر) | مالوش أثر | M/4 أو M/2 |
| نوع الـ window | بيأثّر على الـ leakage الجانبي | main lobe أعرض = frequency resolution أضعف | Hann (الأشهر) |
| حجم الـ FFT: N ≥ M | مالوش أثر | ↑N → شبكة frequency أدق (zero-padding) | أقرب قوة لـ 2 أكبر من M |
خد بالك إن الـ hop size R وحجم الـ FFT مبيغيّروش الـ resolution الحقيقية — بيغيّروا كثافة الـ sampling على مستوى الزمن-الـ frequency. hop أصغر بيدّي frames زمنية أكتر (interpolated، مش resolution حقيقية أعلى). والـ zero-padding (N > M) بيدّي شبكة frequency أدق بس مبيكشفش تفاصيل frequency مكانتش موجودة في الـ window اللي فيها M sample.
قراية الـ spectrogram
الـ spectrogram بيتعرض كصورة ملوّنة ثنائية الأبعاد. والعرف: الزمن بيزيد من الشمال لليمين، والـ frequency بتزيد من تحت لفوق، واللون بيمثّل الطاقة — عادةً بـ colormap متجانس إدراكيًا (viridis، inferno) أو درجات رمادي. وتقريبًا دايمًا بيترسم بالديسيبل: 10 log₁₀(|X(m,ω)|²).

أبرز الحاجات اللي تقدر ترصدها في الـ spectrogram:
| السمة | شكلها إيه | مثال على الـ signal |
|---|---|---|
| خط أفقي | sinusoid الـ frequency بتاعه ثابتة | نغمة نقية، شوكة رنانة |
| خط مايل (chirp) | frequency بتكنس بشكل خطي مع الوقت | مسح FM، صدى خفاش |
| حزمة harmonics | خطوط أفقية متوازية عند f₀, 2f₀, 3f₀, … | الكلام المنطوق، الآلات الموسيقية |
| شريط رأسي | طاقة عريضة النطاق متركّزة في الزمن | نقرة، ضربة طبلة، impulse |
| سحابة منتشرة | طاقة شبه الـ noise منتشرة في الزمن والـ frequency | white noise، احتكاك في الكلام (/s/، /sh/) |
| مسارات الـ formants | نطاقات لامعة بتتغيّر بالراحة | resonances الحروف المتحرّكة في الكلام |
الـ spectrogram في الكلام والصوتيات
الـ spectrogram اتطوّر تاريخيًا عشان تحليل الكلام ولسه الأداة الأساسية في المجال ده. الـ narrowband spectrogram (window طويلة، ~20–30 ملي ثانية) بيفصل الـ harmonics الفردية للـ fundamental frequency وبيتتبّع resonances الـ formants — قمم الـ spectrum العريضة اللي بتحدّد هوية الحروف المتحرّكة. أما الـ wideband spectrogram (window قصيرة، ~3–5 ملي ثانية) فبيفصل التفاصيل الزمنية زي دورات الحروف الساكنة والنبضات الحنجرية الفردية، بس بيغبّش الـ harmonics في نطاقات عريضة.
في الـ machine learning الصوتي (التعرّف على الكلام، تصنيف أنواع المزيكا، تعليم الأصوات)، نادرًا ما الـ spectrograms الخام بتتستخدم على طول. بدل كده، محور الـ frequency بيتحوّل لـ الـ mel scale (المقياس الميلي) — مقياس إدراكي بيقلّد طريقة إدراك السمع البشري لطبقة الصوت (لوغاريتمي تقريبًا عند الـ frequencies العالية). وبعدين magnitude الـ mel spectrogram بيتضغط بإنك تاخد اللوغاريتم، فبيطلّع features مضغوطة ليها معنى إدراكي. وده الدخل لأغلب الـ neural networks الصوتية الحديثة (CNN، Transformer، Whisper، إلخ).
الـ mel spectrogram = STFT magnitude → mel filterbank → ضغط لوغاريتميتطبيقات الـ spectrogram برا مجال الكلام
قدرة الـ spectrogram إنه يكشف محتوى الـ spectrum بيتطوّر إزاي مع الزمن بتخلّيه مفيد في مجالات هندسية كتير:
| المجال | التطبيق | اللي تقدر ترصده |
|---|---|---|
| الرادار | تحليل بصمة الـ micro-Doppler | modulations في الـ frequency من ريش بتلف وناس ماشية |
| السونار | تصنيف الأهداف تحت المية | harmonics المراوح، أنماط الـ cavitation |
| الاهتزازات | كشف أعطال الـ bearings | سمات impulsive عند frequencies العطل، والـ sidebands |
| الطب الحيوي | كشف النوبات في الـ EEG | زيادة مفاجئة في الطاقة العريضة النطاق، تذبذبات إيقاعية |
| الاتصالات | تحديد الـ signals / SIGINT | نوع الـ modulation، الـ bandwidth، توقيت النبضات |
| علم الزلازل | تحليل الزلازل | أوقات وصول الـ P-wave والـ S-wave، محتوى frequency الصدع |
حدود الـ spectrogram
الـ spectrogram عنده قيدين أساسيين غير مقايضة الـ resolution. الأول: بيرمي معلومات الـ phase — |X(m,ω)|² مفيهوش phase، فمتقدرش ترجّع الـ signal الأصلية من الـ spectrogram لوحده (مع إن التقريب ممكن بخوارزميات iterative زي Griffin-Lim). التاني: الـ spectrogram بيبيّن cross-terms للـ signals اللي فيها أكتر من مكوّن — أنماط تداخل بين مكوّنات الـ signal بتظهر كسمات وهمية على مستوى الزمن-الـ frequency. وتوزيع Wigner-Ville بيدّي تركيز مثالي في الزمن-الـ frequency، بس بيعاني من الـ cross-terms دي أكتر.
للصوتيات بـ sampling rate 44.1 كيلوهرتز، window 20 ملي ثانية (882 sample، وعادةً بتتقرّب لـ 1024) بتدّي resolution كويسة للـ harmonics في أصوات المزيكا. وللكلام بـ 16 كيلوهرتز، window 25 ملي ثانية (400 sample، بتتقرّب لـ 512) هي المعيار في التعرّف على الكلام. ولمراقبة الاهتزازات بـ 10 كيلوهرتز، اختار window تدّي Δf كفاية تفصل frequency العطل عن الـ harmonics اللي جنبها. واتأكد دايمًا بإنك تبص على الـ spectrogram بعينك.
قاعدة عملية: طول الـ window ≈ 20–40 ملي ثانية لـ signals الكلام والصوتيات- الـ spectrogram = |STFT|² — خريطة طاقة ثنائية الأبعاد في الزمن والـ frequency، مناسبة للـ signals المش stationary.
- الـ STFT: زحلق analysis window على الـ signal واحسب DFT عند كل مكان بـ hop size R.
- المقايضة الأساسية: window قصيرة ← time resolution عالية وfrequency resolution ضعيفة؛ window طويلة ← العكس. متقدرش تحسّن الاتنين في نفس الوقت (مبدأ عدم اليقين).
- الـ hop size والـ zero-padding بيأثّروا على كثافة الشبكة مش على الـ resolution الحقيقية.
- الـ spectrogram بيتعرض بالديسيبل كصورة ملوّنة: الزمن (أفقي)، الـ frequency (رأسي)، الطاقة (لون).
- الـ mel spectrogram = STFT → mel filters → ضغط لوغاريتمي — الـ feature المعيارية لأنظمة الـ machine learning الصوتية.
- الـ phase بتضيع في الـ spectrogram — إعادة البناء محتاجة خوارزميات iterative لتقدير الـ phase.