أساسيات الصوت أشكال الموجات، أخذ العينات، تحويل فوريه
Type: Learn
Languages: Python
Prerequisites: Phase 1 · 06 (Vectors & Matrices), Phase 1 · 14 (Probability Distributions)
Time: ~45 minutes
المشكلة
يُنتج الميكروفون إشارة ضغط مقابل الوقت. شبكة عصبية تستهلك المضغوطات. بينها تعيش كومة من الاتفاقيات التي، عندما تنتهك، تنتج حشرات صامتة: يتدرب النموذج بشكل جيد ولكن WER تضاعف، أو TTS يرسل صيحة، أو نظام تخصيص الصوت يتذكر الميكروفون بدلاً من المتحدث.
كل حشرة في أنظمة الكلام تعود إلى واحدة من ثلاثة أسئلة:
- ما هو معدل العينة التي تم تسجيلها، وما الذي يتوقع النموذج؟
- هل الإشارة مستعارة؟
- هل تعمل على عينات خامة أم على تمثيل تردد؟
إصطلح هذه بشكل صحيح و الباقي من المرحلة 6 يمكن التعامل معه إصطلحهم بشكل خاطئ وحتى "سيسبر-غرف-ف4" تنتج القمامة
المفهوم
!Waveform, sampling, DFT, and frequency bins visualized
Waveform.مجموعة واحدة من العوامل العائمة في[-1.0, 1.0]. مقياس على عدد العينة. لتحويل إلى ثواني، تقسيم معدل العينة: t = n / sr-قطعة 10 ثواني عند 16 كيلوهرتز هي مجموعة من 160,000 عائمة.
Sampling rate (sr).كم عدد العينات في الثانية؟
| Rate | Use |
|---|---|
| 8 kHz | Telephony, legacy VOIP. Nyquist at 4 kHz kills consonants. Avoid for ASR. |
| 16 kHz | ASR standard. Whisper, Parakeet, SeamlessM4T v2 all consume 16 kHz. |
| 22.05 kHz | TTS vocoder training for older models. |
| 24 kHz | Modern TTS (Kokoro, F5-TTS, xTTS v2). |
| 44.1 kHz | CD audio, music. |
| 48 kHz | Film, pro audio, high-fidelity TTS (VALL-E 2, NaturalSpeech 3). |
Nyquist-Shannon.معدل العينة srيمكن أن تمثل بشكل واضح ترددات تصل إلى sr/2- المُؤمنونsr/2الحد هو تردد Nyquist. الطاقة فوق Nyquist يصبح المتحفّز * ينحني إلى أسفل إلى ترددات أقل ويحطّم الإشارة. دائماً تصفية مرور منخفضة قبل أخذ العينات.
Bit depth.PCM 16-bit (موقع int16, نطاق ±32,767) هو تنسيق التبادل العالمي. 24 بت للموسيقى، 32 بت العائمة ل DSP الداخلي. المكتبات مثل soundfileقراءة int16 ولكن كشف المصفوفات float32 في [-1, 1]. . .
Fourier Transform.أي إشارة محدودة هي مجموع من السينوسويدات في ترددات مختلفة. تحسب تحويل فوريه المميز (DFT) ، لNالعيناتNمعدلات معقدة واحد لكل قمامة ترددات. bin kخرائط الترددk · sr / Nالحجم هو الطول عند تلك التردد، الزاوية هي المرحلة.
FFT.تحويل فوريه سريع: O(N log N)الخوارزمية لـ DFT عندما Nكل مكتبة صوتية تستخدم FFT تحت الغطاء. FFT 1024 عينة عند 16 kHz يعطي 512 حاويات ترددات قابلة للاستخدام تتراوح بين 08 kHz عند قرار 15.6 Hz.
Framing + window.نحن لا نقوم بـ FFT كليف كامل. نحن نقصمه إلى إطارات متداخلة (عادةً 25 ms مع 10 ms hop) ، ونضاعف كل إطارات بمهمة نافذة (هان ، هامينغ) لقتل عدم استمرار الحافة ، ثم FFT كل إطارات. هذا هو تحويل فوريه في وقت قصير (STFT). يبدأ الدروس 02 من هنا.
بناءها
الخطوة الأولى: قراءة المقطع و رسم شكل الموجة
code/main.pyيستخدم فقط الـ stdlib waveوحدة للحفاظ على التبعية التجريبية.soundfileأوtorchaudio.load(كلتا العائلتين(waveform, sr)(أربعة):
pythonimport soundfile as sf
waveform, sr = sf.read("clip.wav", dtype="float32") # shape (T,), sr=intالخطوة الثانية: قم بتجميع موجة السينوس من المبادئ الأولى
pythonimport math
def sine(freq_hz, sr, seconds, amp=0.5):
n = int(sr * seconds)
return [amp * math.sin(2 * math.pi * freq_hz * i / sr) for i in range(n)]440 هرتز سينوس (مؤدي A) عند 16 كيلوهرتز لمدة ثانية واحدة هو 16000 طائرة.wave.open(..., "wb")باستخدام تشفير PCM 16 بت.
الخطوة الثالثة: حساب DFT يدوياً
pythondef dft(x):
N = len(x)
out = []
for k in range(N):
re = sum(x[n] * math.cos(-2 * math.pi * k * n / N) for n in range(N))
im = sum(x[n] * math.sin(-2 * math.pi * k * n / N) for n in range(N))
out.append((re, im))
return outO(N²)حسناًN=256للتأكيد على صحة، لا فائدة من الصوت الحقيقي.numpy.fft.rfftأوtorch.fft.rfft. . .
الخطوة الرابعة: العثور على التردد المهيمن
مؤشر ذروة الحجمk_starخرائط الترددk_star sr / Nإذا قمت بتشغيل هذا على 440 هرتز سينوس يجب أن يعود ذروة في بن440 N / sr. . .
الخطوة 5: إظهار التعبير
عينة من 7 كيلو هرتز الصين عند 10 كيلو هرتز (نيكوست = 5 كيلو هرتز).10 − 7 = 3 kHz. تظهر ذروة FFT عند 3 كيلوهرتز . هذا هو التجريبية الكلاسيكية وتلك هي السبب في كل DAC / ADC السفينة مع حائط الطوب منخفض الممر الصفافة .
استخدمها
الكبيرة التي ستُرسلونها في عام 2026:
| Task | Library | Why |
|---|---|---|
| Read/write WAV/FLAC/OGG | soundfile (libsndfile wrapper) | Fastest, stable, returns float32. |
| Resample | torchaudio.transforms.Resample or librosa.resample | Correct anti-aliasing built in. |
| STFT / Mel | torchaudio or librosa | GPU-friendly; PyTorch ecosystem. |
| Real-time streaming | sounddevice or pyaudio | Cross-platform PortAudio bindings. |
| Inspect a file | ffprobe or soxi | CLI, fast, reports sr/channels/codec. |
قاعدة القرار: match sample rate before you match anything elseويشبر يتوقع 16 كيلو هرتز من التنقل الموحد32 . إعطيه 44.1 كيلو هرتز من الصوت الصوت الصوتي وستحصل على قمامة تبدو مثل حشرة النموذج.
أرسله
إبقواoutputs/skill-audio-loader.mdهذه المهارة تساعدك على التحقق من أن مدخل الصوت يطابق توقعات النموذج التدريجي ويعيد التمثيل بشكل صحيح عندما لا.
التمارين
- Easy.قم بتجميع خليط ثانية واحدة من 220 هرتز + 440 هرتز + 880 هرتز عند 16 كيلوهرتز. تشغيل DFT. تأكد ثلاثة قمم في القمامة المتوقعة.
- Medium.سجل WAV 3 ثواني من صوتك عند 48 كيلوهرتز.
torchaudio.transforms.Resample(مع مكافحة التخفيف) ، ثم إلى 16 كيلوهرتز باستخدام العشرية البديلة (كل عينة ثالثة). - Hard.قم ببناء STFT من الصفر باستخدام فقط
mathو DFT من الخطوة 3 حجم الإطار 400، هوب 160، نافذة Hann.matplotlib.pyplot.imshowهذه هي الطيفيات في الدروس رقم 02
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Sample rate | How many samples per second | Frequency in Hz at which the ADC measures the signal. |
| Nyquist | The max frequency you can represent | sr/2; energy above it aliases back down. |
| Bit depth | Resolution of each sample | int16 = 65,536 levels; float32 = 24-bit precision in [-1, 1]. |
| DFT | The Fourier transform for sequences | N samples → N complex frequency coefficients. |
| FFT | The fast DFT | O(N log N) algorithm requiring N = power of 2. |
| Bin | Frequency column | k · sr / N Hz; resolution = sr / N. |
| STFT | Spectrogram under the hood | Framed + windowed FFT over time. |
| Aliasing | Weird frequency ghosts | Energy above Nyquist mirroring down to lower bins. |
المزيد من القراءة
- Shannon (1949). Communication in the Presence of Noise الورقة وراء نظرية أخذ العينات.
- Smith — The Scientist and Engineer's Guide to Digital Signal Processing كتاب دراسي DSP مجاني
- librosa docs — audio primer عملية المشي مع الرمز.
- Heinrich Kuttruff — Room Acoustics (6th ed.) إشارة لماذا الصوت في العالم الحقيقي ليس سينوسيد نظيف.
- Steve Eddins — FFT Interpretation notebookإنطباع القمامة الترددية تمت تصفيته في غضون 10 دقائق
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.