ICS-43434 — цифровой MEMS-микрофон
Цифровой микрофон с 24-битным АЦП на кристалле, выход по интерфейсу I2S. Протокольно и электрически близкий аналог INMP441, но с более широким паспортным диапазоном частот и SNR.
🎵 Цифровой MEMS-микрофон ICS-43434
ICS-43434 — цифровой микрофон с 24-битным АЦП прямо на кристалле, выход по интерфейсу I2S. Протокольно и электрически он близкий аналог INMP441 (тот же формат I2S, та же логика выбора канала L/R), но с более широким паспортным диапазоном частот и SNR — см. THEORY.md, раздел 3.
Этот компонент делает акцент только на самом датчике: чтение через I2S/DMA, метр громкости, Serial Plotter — и даёт максимум физики звуковой волны через набор Python-инструментов, включая работу с камертоном (точная частота, биения) и модель восприятия высоты звука ухом (мел-шкала).
📋 Навигация
| Файл | Что внутри |
|---|---|
| WIRING.md | Подключение, таблица пинов, логика L/R-канала |
| THEORY.md | Физика звуковой волны, I2S, Найквист, БПФ, биения, мел-шкала, почему нет абсолютных дБ SPL |
| Lesson.md | Методический план уроков — звук, спектр, камертон и биения |
| PREZ.md | Презентация модуля — тезисы для урока |
🛠 Состав компонента
include/Ics43434.h— интерфейс класса драйвера.src/Ics43434.cpp— настройка канала I2S и чтение через DMA.src/main.cpp— тестовый стенд: метр громкости и режим Serial Plotter.tools/— четыре Python-инструмента (см. ниже).
🚀 Сборка и прошивка (PlatformIO)
cd Sensors/Sound/ICS43434
pio run -t upload && pio device monitorПо умолчанию пины настроены под ESP32 DevKit v1 (GPIO5/18/19) — см.
Ics43434::Config и WIRING.md. Перед первым запуском
обязательно проверьте пин L/R (SEL) — от него зависит поле Config::channel, при несовпадении
микрофон будет отдавать одни нули (см. WIRING.md).
Тестовый стенд (Serial Monitor, 921600 бод)
По умолчанию стенд печатает метр громкости — пик, RMS и статус связи 10 раз в секунду:
[-18dBFS] peak= 4200 rms=3120.4 isAlive=1 ##############Команда p переключает в режим Serial Plotter/Python — сырая волна звука, тот же поток читают
все скрипты из tools/.
🖥️ Python-инструменты
cd tools
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txtПеред запуском любого скрипта переключите стенд в режим Plotter командой p в Serial Monitor.
| Скрипт | Что показывает | Физика |
|---|---|---|
01_noise_meter.py | Осциллограмма + метр громкости (дБFS) | Звук как волна давления во времени |
02_spectrum_fft.py | Спектр (БПФ) + спектрограмма | Преобразование Фурье, форманты |
03_tuning_fork.py | --mode pitch: точная частота камертона (pYIN); --mode beats: запись биений двух реальных источников | Резонанс, биения, тон Тартини |
04_mel_hearing.py | Линейный спектр vs мел-спектрограмма одной записи | Психоакустика, нелинейность слуха |
python3 01_noise_meter.py /dev/ttyUSB0
python3 02_spectrum_fft.py /dev/ttyUSB0
python3 03_tuning_fork.py --mode pitch /dev/ttyUSB0
python3 03_tuning_fork.py --mode beats /dev/ttyUSB0
python3 04_mel_hearing.py /dev/ttyUSB0Все относительные шкалы (LSB, дБFS) — не калиброванные дБ SPL, см.
THEORY.md, раздел 8. 03_tuning_fork.py и
04_mel_hearing.py требуют librosa (тяжёлая зависимость, ставится через requirements.txt);
beats-режим также использует scipy.signal.hilbert для огибающей.
🎵 Теория: физика звуковой волны, ICS-43434 и камертон
1. Звук как механическая волна
Звук — продольная волна давления в упругой среде (чаще всего в воздухе). Источник колебаний (камертон, голосовые связки, динамик) попеременно сжимает и разрежает молекулы воздуха рядом с собой; область сжатия/разрежения передаётся соседним молекулам и бежит дальше со скоростью звука (~343 м/с в воздухе при 20°C) — сами молекулы при этом почти не перемещаются, они лишь колеблются вокруг положения равновесия и передают импульс дальше, как костяшки домино.
Волна полностью описывается несколькими величинами:
| Величина | Единица | Что определяет на слух |
|---|---|---|
| Частота f | Гц (колебаний/сек) | Высоту звука (низкий/высокий) |
| Период T=1/f | с | Время одного полного колебания |
| Длина волны λ=v/f | м | Расстояние между соседними сжатиями в воздухе |
| Амплитуда | Па (давление) | Громкость |
Уравнение простой гармонической волны звукового давления: p(t)=Asin(2πft+φ), где A — амплитуда, φ — фаза (сдвиг во времени). Именно такой сигнал — почти идеально — даёт камертон: он сконструирован так, чтобы после удара звучать одной строго определённой частотой, а не смесью многих (в отличие от голоса или большинства музыкальных инструментов).
Человеческое ухо слышит примерно 20 Гц — 20000 Гц (диапазон сужается с возрастом, в основном сверху). Камертоны для настройки музыкальных инструментов обычно делают на 440 Гц (нота Ля первой октавы, международный эталон высоты звука с 1955 года) или, для медицинских неврологических камертонов, на более низкие частоты (128 Гц и т.д.).
2. Как ICS-43434 превращает волну в числа
ICS-43434 — MEMS-микрофон (Micro-Electro-Mechanical System): на кремниевом кристалле вытравлена микроскопическая мембрана, которая прогибается под звуковым давлением. В отличие от классического электретного микрофона (мембрана + отдельный аналоговый усилитель + отдельный АЦП где-то на плате), у ICS-43434 усилитель и 24-битный АЦП находятся прямо на том же кристалле — наружу выходит уже готовый цифровой поток по протоколу I2S, без промежуточного аналогового сигнала, который мог бы наловить помех по дороге.
Формат данных и протокол I2S — тот же, что разобран в компоненте INMP441:
три линии (SCK/такт, WS/выбор слота, SD/данные), 24 значащих бита в 32-битном слове с
MSB-выравниванием. Конфигурация в этом компоненте — Ics43434::begin().
Микрофон электрически и протокольно почти идентичен INMP441 — это не совпадение, а стандарт
де-факто для недорогих I2S MEMS-микрофонов; отличаются в основном паспортные характеристики.
3. Паспортные параметры (⚠️ по общедоступным источникам, не сверено с оригинальным PDF)
| Параметр | Значение | Что означает |
|---|---|---|
| SNR | ~65 дБА | Отношение сигнал/шум — выше, чем у более дешёвых микрофонов вроде INMP441 (~61 дБА), меньше собственного шума |
| Чувствительность | −26 дБFS @ 94 дБ SPL, 1 кГц | Заводской эталон: при звуковом давлении 94 дБ SPL цифровой сигнал достигает −26 дБ от максимума шкалы |
| Диапазон частот | ~60 Гц — 20 кГц | Шире, чем у INMP441 (60 Гц — 15 кГц) — лучше передаёт высокие обертоны |
| Питание | ~1.6–3.6 В | Совместимо с 3.3В логикой ESP32 |
Эти цифры взяты из широко цитируемых источников по чипу и не проверены по оригинальному даташиту в рамках подготовки этого компонента — если точность критична (например, для серьёзного научного проекта), сверьте по PDF на сайте производителя.
4. Частота дискретизации и теорема Найквиста
АЦП не записывает непрерывную кривую, а берёт мгновенные “снимки” давления через равные
промежутки времени — частота дискретизации (sample_rate в
Ics43434.h:30, по умолчанию 44100 Гц — стандартная частота CD-качества
и большинства звуковых карт, выбрана здесь, чтобы даже высокие обертоны и точный анализ pYIN
работали без потерь).
Теорема Котельникова-Найквиста: чтобы правильно восстановить волну частотой f, нужно делать не менее 2f снимков в секунду. При 44100 Гц корректно различимы частоты вплоть до 22050 Гц (частота Найквиста) — выше всего слышимого диапазона человека, поэтому камертоны, голос и музыка оцифровываются без потери информации. Если в сигнале есть частоты выше половины частоты дискретизации, они не исчезают, а искажённо “отражаются” обратно в слышимый диапазон — алиасинг (aliasing), классическая ошибка любой цифровой измерительной системы.
5. Преобразование Фурье: из чего состоит сложный звук
Любой периодический сигнал можно представить суммой простых синусоид разных частот, амплитуд и фаз — это теорема Фурье. Преобразование Фурье (в цифровой технике — БПФ, быстрое преобразование Фурье) вычисляет эти составляющие численно, превращая график “давление от времени” (осциллограмму) в график “энергия от частоты” (спектр).
- Камертон после удара звучит практически одной синусоидой — на спектре один острый, узкий пик. Это не случайность, а инженерная цель конструкции камертона: масса и упругость вилки подобраны так, чтобы подавить все моды колебаний, кроме основной.
- Голос — наложение нескольких резонансов голосового тракта (форманты) — несколько пиков.
- Хлопок/удар — очень короткий во времени сигнал даёт широкий, размазанный по частотам спектр: чем короче импульс во времени, тем шире его спектр — фундаментальное свойство преобразования Фурье (неопределённость время-частота, родственная принципу неопределённости Гейзенберга в физике волн вообще).
Инструмент tools/02_spectrum_fft.py считает БПФ через
numpy.fft.rfft и рисует спектр и спектрограмму (спектр, меняющийся во времени, — третье
измерение через цвет).
6. Биения: что происходит, когда звучат два источника почти в унисон
Если рядом одновременно звучат два источника с близкими, но не равными частотами f1 и f2 (например, два слегка расстроенных камертона), их волны в воздухе складываются — принцип суперпозиции. Математически:
sin(2πf1t)+sin(2πf2t)=2cos(2π2f1−f2t)sin(2π2f1+f2t)Результат — сигнал на средней частоте fˉ=(f1+f2)/2 (несущей, которую слышно как “высоту звука”), амплитуда которого медленно пульсирует с частотой биений:
fбиений=∣f1−f2∣Это именно то периодическое “у-у-у-у” нарастания-затухания громкости, которое слышно, когда два почти одинаковых тона звучат вместе. Настройщики музыкальных инструментов используют это явление: чем меньше слышно биений между струной и эталонным камертоном, тем точнее настроен инструмент — при полном унисоне (f1=f2) биения пропадают совсем.
Инструмент tools/03_tuning_fork.py в режиме beats записывает
реальный звук двух одновременно звучащих источников и строит огибающую сигнала (через
преобразование Гильберта) — на ней видны именно эти периодические провалы громкости, а частоту
f1,f2 показывают два пика в спектре записи.
Комбинационные тона Тартини
Если разность частот становится большой (десятки Гц), биения перестают восприниматься как плавная пульсация громкости одного тона и превращаются в отдельный, самостоятельно слышимый низкий тон — эффект открыл в 1714 году итальянский скрипач и теоретик музыки Джузеппе Тартини, отсюда название “тон Тартини” (комбинационный тон). Физиологически это уже не свойство самой волны в воздухе, а нелинейность обработки сигнала во внутреннем ухе.
7. Мел-шкала: почему ухо — не БПФ
БПФ даёт линейную шкалу частот: расстояние между 100 Гц и 200 Гц на графике равно расстоянию между 10100 Гц и 10200 Гц. Человеческое ухо воспринимает высоту звука совсем не так: разница между 100 Гц и 200 Гц звучит для нас как “заметный скачок вверх на октаву”, а разница между 10000 Гц и 10100 Гц почти неразличима на слух. Это связано с устройством улитки внутреннего уха (cochlea) — разные её участки резонируют на разные частоты, и это разбиение неравномерно: плотнее в низких частотах, реже в высоких.
Мел-шкала (от англ. melody) — эмпирическая психоакустическая шкала, приближающая это неравномерное восприятие. Стандартная формула перевода из герц в мелы:
m=2595⋅log10(1+700f)Инструмент tools/04_mel_hearing.py строит бок о бок два
спектрограммных представления одной записи — линейное (как считает БПФ) и мел-шкалу (как
приближённо слышит ухо, через librosa.feature.melspectrogram), чтобы физически увидеть эту
разницу: на мел-шкале низкочастотная часть голоса растягивается на графике, а высокочастотная
сжимается — потому что именно там ухо различает мельчайшие детали.
8. Почему нет абсолютных дБ SPL
В акустике громкость измеряют в дБ SPL (Sound Pressure Level) — абсолютной шкале относительно порога слышимости (20 мкПа). Заводская чувствительность ICS-43434 (раздел 3) связывает конкретное звуковое давление (94 дБ SPL, тон 1 кГц) с конкретным цифровым уровнем (−26 дБFS) — но только для эталонного откалиброванного экземпляра на заводе.
Этот компонент не выполняет калибровку — ни один физический экземпляр не проверялся эталонным источником звука. Поэтому во всём коде и во всех графиках используется только относительная шкала:
- LSB — “сырое число” АЦП, 16-битное значение от −32768 до 32767 после
Ics43434::toSample16(). - дБFS (dB Full Scale) — логарифмическая шкала относительно максимума этой 16-битной шкалы,
используется в
main.cppи вtools/01_noise_meter.py— показывает, насколько сигнал близок к клиппингу, а не абсолютную громкость в паскалях.
Если нужен настоящий дБ SPL — требуется калибровка конкретного экземпляра эталонным источником известной громкости (например, калибратором 94 дБ SPL/1 кГц).
9. Почему чтение блокирующее, но не теряет данные: DMA
i2s_channel_read() в Ics43434::read() не “слушает” линию SD
напрямую в момент вызова — ESP32 непрерывно копирует поступающие биты в буфер памяти через
DMA (Direct Memory Access) в фоне, независимо от того, чем занят процессор. read() лишь
забирает уже накопленные готовые сэмплы из буфера (и ждёт новых до timeout_ms, если тот пуст).
Поэтому даже недолгая задержка в loop() (например, на Serial.print()) не теряет звук — он
подождёт в DMA-буфере, пока тот не переполнится.
🔌 Подключение: ESP32 DevKit v1 + ICS-43434
Таблица подключения
| ICS-43434 | ESP32 DevKit v1 | Назначение |
|---|---|---|
| VDD | 3.3V | Питание. Только 3.3V — большинство готовых модулей рассчитаны на 1.6–3.6В (типовое значение для этого чипа), 5В может повредить микрофон. |
| GND | GND | Земля |
| SD | GPIO19 | Serial Data — выход 24-битных сэмплов |
| WS | GPIO18 | Word Select (LRCLK) — определяет, в каком слоте (левом/правом) сейчас данные |
| SCK | GPIO5 | Serial Clock (BCLK) — тактовый сигнал для каждого бита данных |
| L/R (иногда подписан SEL) | GND или 3.3V | Выбор стереослота — см. ниже |
Пины GPIO5/18/19 заданы по умолчанию в Ics43434.h, Config — измените
их там или передайте свою Ics43434::Config в конструктор, если разводка другая.
L/R (SEL): выбор канала
ICS-43434 — моно-микрофон, но, как и большинство I2S MEMS-микрофонов, передаёт данные в одном из двух стереослотов I2S в зависимости от напряжения на пине L/R (на части модулей подписан SEL):
| L/R / SEL | Слот на шине I2S | Channel в коде |
|---|---|---|
| GND | LEFT | Ics43434::Channel::Left (значение по умолчанию) |
| VDD / 3.3V | RIGHT | Ics43434::Channel::Right |
Если подключили L/R к 3.3V, а в коде оставили Channel::Left (или наоборот), mic.read() будет
исправно возвращать ESP_OK, но все сэмплы окажутся нулевыми — микрофон отдаёт данные в слот,
который драйвер не слушает.
Если в метре громкости (см. README.md) вы видите только peak=0 rms=0.0, а
isAlive=1 — первое, что нужно проверить: соответствие пина L/R и поля Config::channel.
Проверка перед первым включением
- Мультиметром между VDD и GND — должно быть в пределах 3.3В (не 5В).
- L/R (SEL) подключен либо к GND, либо к 3.3V — не оставлен “в воздухе”.
- Все сигнальные линии (VDD, GND, SD, WS, SCK, L/R) на своих местах.
Если нужны другие GPIO
I2S на ESP32 можно переключить почти на любые GPIO. Не годятся:
GPIO0,GPIO2— участвуют в загрузке платы (bootstrapping).GPIO6–11— заняты встроенной Flash-памятью.GPIO34–39— только вход, без подтяжки; для SCK/WS (выходы ESP32 → микрофон) не подойдут, но теоретически годятся для SD (вход в ESP32).
Для уроков с камертоном
Для Lesson.md держите микрофон и камертон на расстоянии 5–15 см — слишком близко
сигнал будет клиппинговать (см. метр громкости, dBFS близко к 0), слишком далеко — потонет в
фоновом шуме помещения. Камертон стандартно возбуждают лёгким ударом резиновым молотком по
концу вилки, не по самому микрофону.
Методическое пособие: серия уроков «Физика звуковой волны на ICS-43434»
Стенд: ESP32 + Ics43434 (цифровой MEMS-микрофон) + метр громкости в Serial Monitor + четыре
Python-инструмента в tools/ (осциллограмма/метр, спектр/спектрограмма, камертон —
частота и биения, мел-спектрограмма слуха). Пособие связывает показания реального микрофона с
темами физики (механические волны, резонанс, интерференция) и биологии (восприятие звука) 8–11
класса — камертон здесь не абстракция из учебника, а реальный источник чистого тона, который
можно измерить прибором и сверить с числом, выбитым на его вилке.
Рассчитано на 3 урока по 40–45 минут: физика волны и цифровой звук → камертон, резонанс и преобразование Фурье → биения, интерференция и как звук слышит ухо (мел-шкала). Уроки логически идут по нарастанию сложности, но 1 и 3 можно проводить отдельно под конкретную тему.
Понадобится оборудование помимо стенда: минимум один камертон (лучше два разного строя, например 440 Гц и 442/444 Гц, для Урока 3).
Кто чем пользуется
- Инженер собирает схему по WIRING.md (главное — не перепутать пин L/R/SEL),
прошивает
src/main.cpp, один раз ставит зависимости Python (pip install -r tools/requirements.txt, см. README.md). Учтите:librosa— тяжёлая библиотека, первую установку лучше сделать заранее, не на самом уроке. - Учитель на уроке открывает Serial Monitor (метр громкости) и/или запускает нужный скрипт
из
tools/— заходить в код не обязательно.
Инструменты и когда они нужны
| Скрипт | Урок | Что показывает |
|---|---|---|
| Serial Monitor (метр громкости) | 1 | Работает сразу после прошивки, Python не нужен |
tools/01_noise_meter.py | 1 | Осциллограмма + метр громкости |
tools/02_spectrum_fft.py | 2 | Спектр и спектрограмма |
tools/03_tuning_fork.py --mode pitch | 2 | Точная частота камертона в реальном времени |
tools/03_tuning_fork.py --mode beats | 3 | Запись и анализ биений двух источников |
tools/04_mel_hearing.py | 3 | Линейный спектр vs модель слуха (мел-шкала) |
Урок 1. Звук — это волна, а микрофон — цифровой измеритель давления
Тема: механическая волна, звуковое давление, аналого-цифровое преобразование, частота дискретизации, теорема Найквиста.
Ход работы.
- Включить стенд, открыть Serial Monitor — метр громкости бежит в реальном времени
(README.md, “Тестовый стенд”). Постучать
по микрофону —
peakподскочит. Помолчать классом 10 секунд — обсудить, почемуrmsне ровно 0 (собственный шум электроники + фоновый шум помещения — абсолютной тишины не бывает). - Запустить
python3 tools/01_noise_meter.py— та же информация, но с осциллограммой: видно саму форму волны, а не только число. - Сказать по очереди несколько слов разной громкости — обсудить форму волны на графике.
Разбор. Звук — продольная волна давления воздуха (THEORY.md, раздел 1).
Мембрана ICS-43434 физически прогибается под этим давлением, встроенный 24-битный АЦП
оцифровывает прогиб 44100 раз в секунду — частота дискретизации
(THEORY.md, раздел 4). По теореме
Найквиста корректно различимы частоты вплоть до 22050 Гц — с большим запасом выше всего
слышимого диапазона человека. dBFS в метре — не абсолютная громкость в децибелах с коробки от
колонок, а относительная шкала “насколько близко к максимуму АЦП”
(THEORY.md, раздел 8) — важно проговорить эту разницу
с классом сразу, чтобы не закрепилось неверное представление.
Практическое задание. Записать peak/dBFS для трёх источников разной громкости (шёпот,
обычная речь, хлопок на расстоянии 1 м), обсудить, почему числа отличаются не пропорционально
тому, “во сколько раз громче на слух” — повод для разговора о нелинейности восприятия громкости
(и, соответственно, о логарифмической природе шкалы дБ в технике).
Урок 2. Камертон под микроскопом: резонанс и преобразование Фурье
Тема: резонанс, собственная частота, спектральный анализ, преобразование Фурье.
Ход работы.
- Запустить
python3 tools/02_spectrum_fft.py. Кто-то из класса свистит одной ровной нотой — осциллограмма превращается в почти идеальную синусоиду, на спектре — один острый узкий пик. - Ударить камертон резиновым молотком (не по самому микрофону — см. WIRING.md, “Для уроков с камертоном”) и поднести к микрофону на 5–15 см. На спектре должен появиться пик, ещё уже и чище, чем от свиста.
- Запустить
python3 tools/03_tuning_fork.py --mode pitch— программа определяет частоту алгоритмом pYIN и подсказывает ближайшую ноту. Сверить показанное число с частотой, выбитой на самом камертоне (обычно 440 Гц).
Разбор. Камертон после удара звучит практически одной чистой синусоидой — это не случайность:
масса и упругость его вилки специально подобраны так, чтобы у него была одна ярко выраженная
собственная частота (резонанс), на которой он колеблется намного охотнее, чем на любой
другой — все остальные моды колебаний быстро гаснут (THEORY.md, раздел 5).
Именно поэтому камертон — образцовый физический “генератор чистого тона” для проверки методов
анализа звука. Алгоритм pYIN ищет период повторения сигнала, а не просто самый громкий бин БПФ —
это делает его устойчивее к шуму, чем наивный поиск пика спектра
(THEORY.md, раздел 5 и docstring
tools/03_tuning_fork.py).
Практическое задание. Сравнить спектр камертона, свиста и хлопка (все три — на одном
запущенном 02_spectrum_fft.py, по очереди): у камертона и свиста — один узкий пик, у хлопка —
широкий “размазанный” спектр. Обсудить связь: чем короче сигнал во времени (хлопок), тем шире
его спектр по частоте — и наоборот, камертон долго звенит одной и той же нотой именно потому,
что его спектр предельно узок.
Урок 3. Биения двух камертонов и то, как звук слышит ухо
Тема: суперпозиция волн, интерференция, биения, комбинационные тона, психоакустика (мел-шкала).
Ход работы.
- Если есть два камертона разного строя (например, 440 Гц и 442/444 Гц) — ударить оба почти
одновременно и дать им звучать вместе рядом с микрофоном. Запустить
python3 tools/03_tuning_fork.py --mode beats, нажать Enter и дать камертонам прозвучать все 3 секунды записи. Если второго камертона нет — можно заменить его нотой с телефона/колонки близкой, но не совпадающей частоты (например, генератор тона в интернете на 442 Гц). - Рассмотреть график: верхний — записанный сигнал с наложенной огибающей (линия, соединяющая пики амплитуды). Посчитать вместе с классом, сколько раз огибающая “проваливается” к нулю за 3 секунды записи — это и есть число биений в секунду.
- Программа также печатает в консоли два найденных пика спектра f1,f2 и ожидаемую частоту биений ∣f1−f2∣ — сравнить с посчитанным вручную числом провалов.
Разбор. Когда два источника звучат одновременно, их волны в воздухе складываются (суперпозиция), и результат — колебание на средней частоте, амплитуда которого периодически растёт и падает с частотой fбиений=∣f1−f2∣ (THEORY.md, раздел 6). Это тот самый принцип, которым настройщики музыкальных инструментов пользуются столетиями: крутят колок, пока биения между струной и эталоном не пропадут совсем — значит, инструмент настроен. Если разница частот становится большой (десятки Гц), биения превращаются в отдельный низкий тон — эффект Тартини (1714 г.), уже не физика волны в воздухе, а особенность обработки сигнала во внутреннем ухе.
Переход ко второй части урока. Запустить python3 tools/04_mel_hearing.py, записать 4
секунды голоса (лучше произнести несколько разных гласных и присвистнуть). Сравнить два
спектрограммных графика: линейный (как считает БПФ) и мел-шкала (как приближённо воспринимает
ухо). Обсудить: почему на мел-шкале низкочастотная часть голоса растянута сильнее, чем
высокочастотная — это отражает то, что ухо различает мельчайшие детали именно в низких и средних
частотах речи (THEORY.md, раздел 7).
Практическое задание. Дать общий вывод классу: почему электронные тюнеры для гитары до сих пор фактически измеряют то же самое явление (частоту через методы вроде pYIN), что и старинный способ “на слух по биениям” — оба метода ищут ответ на один и тот же вопрос “насколько частота струны отличается от эталона”, просто один делает это ухом человека, а другой — микрофоном и кодом.
Приложение: тайминг и оборудование
| Урок | Длительность | Обязательное оборудование | Предмет |
|---|---|---|---|
| 1. Звук — это волна | 40–45 мин | Стенд, Serial Monitor или 01_noise_meter.py | Физика |
| 2. Камертон и Фурье | 40–45 мин | Стенд + 02_spectrum_fft.py + 03_tuning_fork.py --mode pitch + камертон | Физика |
| 3. Биения и слух | 40–45 мин | Стенд + 03_tuning_fork.py --mode beats + 04_mel_hearing.py + 2 камертона (или камертон + телефон с тоном) | Физика, биология |
Уроки 1 и 3 требуют тихого помещения хотя бы на пару минут (шум тишины, чистая запись биений) — по возможности проводите в кабинете, где можно ненадолго попросить класс замолчать.
Презентация: цифровой MEMS-микрофон ICS-43434
Слайд 1: Что это
ICS-43434 — цифровой микрофон: звук оцифровывается 24-битным АЦП прямо на кристалле и передаётся по интерфейсу I2S, без промежуточного аналогового сигнала. Электрически и протокольно близкий аналог INMP441, но с более широким паспортным частотным диапазоном.
Слайд 2: Характеристики (⚠️ общедоступные данные, не сверены с оригинальным PDF-даташитом)
- Интерфейс: I2S, 24 бита.
- Диапазон частот: ~60 Гц — 20 кГц.
- SNR: ~65 дБА.
- Питание: ~1.6–3.6 В.
- Чувствительность: −26 дБFS при 94 дБ SPL / 1 кГц (заводской эталон — без калибровки конкретного экземпляра в этом проекте не используется, см. THEORY.md).
Слайд 3: Путь сигнала
Мембрана колеблется от звукового давления → встроенный АЦП оцифровывает → I2S передаёт поток
24-битных слов на ESP32 → DMA копирует их в буфер без нагрузки на процессор →
Ics43434::read() забирает готовый блок для анализа.
Слайд 4: Зачем камертон
Камертон после удара звучит почти одной чистой частотой — идеальный источник для проверки
методов анализа: pYIN (03_tuning_fork.py --mode pitch) должен показать ровно частоту,
указанную на самом камертоне. Два камертона разного строя, звучащие вместе, дают биения —
наглядную физику суперпозиции волн (--mode beats).
Слайд 5: Что видно на экране
- Метр громкости прямо в Serial Monitor.
- Осциллограмма — звук во времени.
- Спектр и спектрограмма (БПФ) — из каких частот состоит звук, как это меняется во времени.
- Частота камертона в реальном времени (pYIN) и биения двух источников.
- Мел-спектрограмма — как звук “видит” человеческое ухо, в отличие от линейного БПФ.
Слайд 6: Где такое применяется
- Голосовые ассистенты, распознавание речи.
- Настройка музыкальных инструментов (биения — тот же принцип, что у электронных тюнеров).
- Анализаторы шума и спектра, акустический мониторинг.