قراءة
وضع القصص

الـ spectrogram (الطيف الزمني-الترددي)

~13 دقيقة قراءة الدرس 3 من الوحدة 9

حدود الـ 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 المحلي حوالين اللحظة دي.

الـ short-time Fourier transform (STFT)
X(m, \omega) = \sum_{n=-\infty}^{\infty} x[n]\, w[n - mR]\, e^{-j\omega n}
m هو index الـ frame الزمني، وR هو الـ hop size (عدد الـ samples بين frame والتاني)، وw[n] هي الـ analysis window. والـ STFT دالة ثنائية الأبعاد في الزمن المتقطع m والـ frequency المستمرة ω.

الـ spectrogram ببساطة هو مربّع magnitude الـ STFT — توزيع الطاقة على مستوى الزمن-الـ frequency:

الـ spectrogram
S(m, \omega) = \left|X(m, \omega)\right|^2 = \left|\sum_{n} x[n]\, w[n - mR]\, e^{-j\omega n}\right|^2
الـ spectrogram قيمه حقيقية ومش سالبة. وبيتعرض كصورة ملوّنة ثنائية الأبعاد: الزمن على المحور الأفقي، والـ frequency على المحور الرأسي، واللون بيمثّل الطاقة (عادةً بالديسيبل dB).

مقايضة الـ resolution بين الزمن والـ frequency

أهم خاصية في الـ spectrogram هي مقايضة الـ time resolution قصاد الـ frequency resolution. ودي نتيجة حتمية لطريقة شغل الـ windows في تحويل فورييه، وهي المقابل الرقمي لمبدأ عدم اليقين بتاع هايزنبرغ في ميكانيكا الكم.

طول الـ analysis window M بيحدّد الاتنين resolution في نفس الوقت:

window قصيرة (M صغيرة)
  • time resolution عالية — بتحدّد الأحداث بدقة في الزمن
  • frequency resolution ضعيفة — Δf = f_s/M كبيرة
  • قمم frequency عريضة ومغبّشة
  • مناسبة للـ transients: نقرات، بدايات، ضربات
  • المعتاد: M = 128–512 sample
window طويلة (M كبيرة)
  • time resolution ضعيفة — بتغبّش الأحداث في الزمن
  • frequency resolution عالية — Δf = f_s/M صغيرة
  • قمم frequency حادة وضيقة
  • مناسبة للـ harmonics: أصوات مزيكا، نغمات
  • المعتاد: M = 2048–8192 sample
مبدأ عدم اليقين للـ signals

حاصل ضرب الـ 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 بيمشي بالزمن بالعرض وبالـ frequency بالطول، وكل علامة فيه طاقة. بس اللفافة بتعمل الصوت، والـ spectrogram بيقيسه.

أبرز الحاجات اللي تقدر ترصدها في الـ 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 في نطاقات عريضة.

الـ mel spectrogram

في الـ 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 دي أكتر.

اختيار طول الـ window — قاعدة عملية

للصوتيات بـ 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.
اللي بعده الـ parametric spectral estimation (التقدير الطيفي المعلمي) نظرة عامة على الموديول اللي فات الـ periodogram وطريقة Welch