Эксперименты с передачей звука I2S ESP32. Часть 1. Частоты оцифровки и фильтры.

Поделиться
HTML-код
  • Опубликовано: 25 окт 2024

Комментарии • 98

  • @leryfm
    @leryfm 10 часов назад +8

    Алексей, Спасибо вам за видео, за вложенные силы в эксперимент и в съёмку всего процесса.
    Очень интересная тема.
    Я хотел бы внести только одно важное замечание-уточнение. Адресовано оно в первую очередь "новичкам" в области цифрового звука, ресемплинга из одной частоты в другую и тд.
    Для начала дам пару отметок в тайминге видео для понимания вопроса.
    05:40 - здесь сначала показан вариант работы ЦАПа на 8000Гц, когда всё линейно, оцифровали в 8000, и так звук и идёт по всему звуковому тракту. Частота дискретизации не подвергается изменениям.
    06:45 - далее даётся отрицательная оценка этому звуку - "мы слышим всякие цифровые искажения" и так далее. "Не понравилось".
    08:40 - Предложено решение поднять на приёмном модуле частоту с 8000 Гц до 16000, отдельно добавлено, что "самым простым образом" ("тупым копированием байтов" - повторено также на 10:35 )
    11:01 - дана положительная оценка - "стало гораздо лучше", создаётся однозначное впечатление, что результат подан, как "безусловный плюс" и как пример, "делайте также" (?)
    Здесь упущен и никак не оговорен достаточно важный момент работы с цифровым звуком и с ресемплингом, важный как раз особенно для новичков. Имя ему АЛИАСИНГ (в комментариях всего один человек упомянул это, то есть действительно мало кто знает). Во втором случае как раз присутствует алиасинг при ресемплинге из более низкой частоты дискретизации в более высокую, и не бесследно.
    То есть, получается как раз наоборот - в первом варианте у вас звук более правильный, на смотря на то что он "глухой" по высоким частотам и субьективно "не нравится" нам. А второй "приукрашен артефактами", но больше понравился. Тут надо пояснить, что глухость его обусловлена теми условиями, в которые он поставлен (частота дискретизации = 8000 Гц), само собой, при такой частоте АЧХ (амплитудно-частотная характеристика) изначально очень сильно урезана, до 4 кГц (всегда равняется половине ЧД), о чём к слову рассказано в видео на отметке 09:11 , и за это вам спасибо.
    Отдельно хотел бы повторить, что данный звук не смотря на свои явные отличия от идеала, является "правдивым" и "правильным" в рамках тех условий, в которые он поставлен.
    При варианте с 16000 Гц как раз-таки наоборот, добавляется множество "цифровых артефактов" и нежелательных искажений. Именно из-за алиасинга. Звук начал как бы "звенеть", и субьективно может показаться, что он приобрёл обратно больше высоких частот, но это ошибка, и этот "звон" в высокочастотной части звукового спектра никак не является ПОЛЕЗНЫМ сигналом, и в некоторых случаях даже может МЕШАТЬ разборчивости речи, а не помогать...
    "Правдивым" как раз этот вариант назвать нельзя. Но видео этот момент показался поданным, как БЕЗУСЛОВНЫЙ плюс... то есть мы подняли приёмную часть до 16000Гц вместо 8000 "тупым копированием байтов" - и мы молодцы, "стало лучше", так и требуется. Позвольте, это всё таки чуть чуть не так. Возможно как раз "закомментированный" вариант алгоритма был бы правильней, но не факт, что этот алгоритм олицетворяет собой непосредственно антиалиасинг (но если да - то он точно правильней).
    Тот факт, что сам ЦАП может действительно ЛУЧШЕ может отрабатывать на более высокой частоте дискретизации (рассказано в видео на 09:30 ) - я не оспариваю (это вопрос к конкретному ЦАПу и его производителю). Но у нас же в итоге получается, что, пытаясь улучшить один недостаток - мы добавляем другой нежелательный "баг", никак об этом не предупреждая.
    Понятно, что для "понимания азов" и так сойдёт, но всё же, добавить всего одну фразу, что с "прямым ресемплом вверх по частоте есть свои нюансы, я на них в этом видео распространяться не стану, просто не забывайте об этом в будущем, если придётся столкнуться с такой темой", стоило). Без этой фразы будет гораздо больше заблуждений, если кто-то в эту тему углубится.
    Всем интересующимся рекомендую изучить, что такое антиалиасинг в цифровом звуке и почему важно "правильно" апскейлить сигнал, если уж апскейлить для чего-то потребовалось (без надобности лучше не апскейлить, уже обрезанную АЧХ вы таким образом никак назад не восстановите).
    Повторить и изучить опыт ресемплинга звука можно ещё например так - в Sound Forge или другом звуковом редакторе открываем любой звуковой файл, звуку которого мы "доверяем" и который нам знаком и звучит без дефектов (например песня с CD-диска в wav). делаем его из 44100 в 8000 Гц. А потом разными способами пробуем повышать обратно из 8000 в другие частоты повыше. Там всегда есть галочка With Anti-aliasing filter, соответственно нужно включить её и послушать результат (на слух ничего не должно измениться, останется таким как 8000 первоначальный), а потом галочку снять (это как раз вариант, названный Алексеем "тупым копированием байтов"), снова отресемплить из 8000 и тоже послушать - звук заметно начнёт как бы "звенеть", и вот это вот - "баг, а не фича".
    Повторюсь, даже здесь в видео это слышно - сравните 05:40 и 11:01, и это никак не преимущество, это звуковой дефект.
    Во всём остальном отличная тема, прекрасно снятый ролик, спасибо вам за трудовложения и за такой контент!!!

  • @paulliaous167
    @paulliaous167 7 часов назад +4

    С большим удовольствием посмотрел. Очень наглядный и показательный эксперимент. Спасибо автору!

  • @szlab2025
    @szlab2025 23 часа назад +5

    Ни один канал на тему esp32 такой полезной инфы про i2s не даёт. Спасибо, я узнал много интересного.

  • @КонстантинВикторов-п2й
    @КонстантинВикторов-п2й 11 часов назад +4

    Отличный эксперимент! Благодарю! Можно сделать переговорное устройство через домашний WiFi, особенно для дачи шикарный вариант между сараем-гаражом-домом

  • @vitaly_s
    @vitaly_s День назад +8

    Я даже начал кое-что понимать )
    Алексей Александрович, спасибо вам за опыт, 73! С нетерпением жду продолжения.

  • @sergm5381
    @sergm5381 14 часов назад +3

    Давно давно занимался цифровыми фильтрами. Пользовал Matlab. Удобная штука. Задаешь характеристики фильтра, а получаешь графически алгоритм фильтра со всеми кэффициентами. Использовали фильтры для обработки сигналов в АСУТП .

  • @МихаилАлексеенко-ш6ж

    Мало чего понимаю, но всегда смотрю и ставлю лайк!👍

  • @prym9607
    @prym9607 День назад +3

    Спасибо за видео. Лаконично, ёмко, интересно.

  • @Sashavm
    @Sashavm 14 часов назад +2

    Спасибо Алексей Александрович, за долгожданные лабораторные работы! )) 73!

  • @gogasgl8708
    @gogasgl8708 5 часов назад +1

    Даже и не думал по i2c передавать звук а теперь есть идея, по этой шине можно и несколько микрофонов повесить, нужно пробовать, благодарю

    • @krollik8
      @krollik8 37 минут назад

      Это не i2c, это i2S. Щас сам глянул, он спецом только для звука.

  • @ПетрП-и3й
    @ПетрП-и3й 22 часа назад +4

    С одной стороны познавательно, с другой приятно удивляет диапазон интересов и компетенций автора. Я сейчас в процессе освоения ардуино мне передача звука не очень актуальна, но в любом случае всё что касается темы ардуино интересно.

  • @ЭнджонИгнишин
    @ЭнджонИгнишин День назад +1

    Спасибо! Как раз собрался подключать I2S микрофон к esp32. Ваше видео очень поможет.

  • @lizynovich
    @lizynovich День назад +4

    Микрофоны кстати, которые по мемс технологии сделаны, довольно качественные. АЧХ полностью линейная, только динамический диапзон небольшой. Есть даже стерео, два стоят в одном корпусе.

  • @PS-bp4ju
    @PS-bp4ju 18 часов назад +2

    Марина Марина Марина, прием!

  • @FishingScience
    @FishingScience День назад +6

    Там есть ещё протокол esp-now, там можно без всякого предварительного соединения передавать и принимать.

  • @andreyvasilevskiy8073
    @andreyvasilevskiy8073 День назад +7

    отличное видео, познавательные эксперименты. с нетерпением жду продолжения. p.s. i2c - ай ту си

    • @mytarevserg
      @mytarevserg День назад +1

      I2s !!!

    • @serg3659
      @serg3659 День назад +2

      Не надо путать i2c и i2s

  • @alexloktionoff6833
    @alexloktionoff6833 День назад +11

    Хотя в цифровой телефонии передается 8 бит, но благодаря кодировке uLaw или aLaw удается с небольшими потерями 8 битами кодировать 12бит реального звука!

    • @alexandrmironov7460
      @alexandrmironov7460 21 час назад +1

      Совершенно верно. Кофидеки в телефонии используют сжатие динамического диапазона по характеристики А13 (13-ти сегментная) с частотой дискретизации 8 кГц при 8-ми битной передачи и качеством 12бит.

    • @jimsonweed1846
      @jimsonweed1846 16 часов назад

      adpcm. Голые сэмплы неплохо жмутся даже алгоритмом Хаффмана. Но смысла мало, esp32 может потянуть кодирование даже кодеком Opus

    • @alexloktionoff6833
      @alexloktionoff6833 12 часов назад

      @@alexandrmironov7460 кофидек - узнаю связиста :)

    • @alexandrmironov7460
      @alexandrmironov7460 11 часов назад +1

      @@alexloktionoff6833 ТЭИС, МЭС факультет 1995г выпуск ;)

    • @АлександрНевский-е4д
      @АлександрНевский-е4д 3 часа назад

      Иначе a и u законы компандирования

  • @trapwalker
    @trapwalker День назад +6

    Интересный проект. Ждём продолжения. Какой кодек планируете использовать?
    Почему, кстати, на гитхаб исходники не кладёте? там их и смотреть удобнее и в целом проект вести...

    • @СергейБрежнев-н6э
      @СергейБрежнев-н6э День назад +1

      Очень хороший результат..😊😊😊

    • @vladpetr9168
      @vladpetr9168 День назад +1

      Очень интересные опыты.СПАСИБО!

    • @TheBjat
      @TheBjat День назад

      В открытом доступе есть не много кодеков с таким низким битрейтом, и чтобы есп их тянул, один из них военных, другой платный, есть опенсорс проект CODEC 2 думаю будет его использовать. туда как раз надо 8khz дискретизации и он влезет в лору по ширине канала

    • @trapwalker
      @trapwalker 15 часов назад

      @@TheBjat может имелся в виду аппаратный какой-нибудь кодек. Я тут рискую надиванить как эксперт, но должны ж быть такие кодеки. Вот mp3 кодек в виде микросхемы бывает, может и такие есть для низкого битрейта.

    • @НиколайШишкин-з8и
      @НиколайШишкин-з8и 4 часа назад

      Есть свободный GSM кодек, он весьма неплохо сжимает.

  • @m0Ray79
    @m0Ray79 20 часов назад +4

    У ESP32 есть хитрый режим long range на частоте 2.4ГГц (говорят, до километра пробивает) и режим ESP-NOW (очень простая установка связи). Рекомендую попробовать.

    • @trapwalker
      @trapwalker 14 часов назад

      Не слишком ли медленным он будет этот long range для потоковой передачи звука?

    • @m0Ray79
      @m0Ray79 12 часов назад +2

      @@trapwalker В документации заявляется 1-2 мегабита. А для голоса хватит и в 10 раз меньшей скорости (даже если добавить избыточность/ретрансмиты), особенно если взять кодек вроде opus.

  • @Pubvoice
    @Pubvoice День назад +1

    Предполагаю нужно использовать что-то типа DRM связи, так как специально разрабатывалась для дальней связи с защитой от помех.

  • @РоманС-п2ю
    @РоманС-п2ю День назад +4

    Скоро у нас будет Лора рация!

  • @TheBjat
    @TheBjat День назад +1

    можно использовать esp-now, это peer to peer соединения, без точки доступа.
    интересна сторона легализации, так как чирп модуляция, которую использует лора иммет ограничения по времени включения на диапазонах 433 и 898

  • @alexey1119
    @alexey1119 День назад +1

    а не может это быть связано с big-endian или little-endian кодировками? вроде бы при передаче через сеть используется другая кодировка, чем в i2s, если не ошибаюсь

  • @batubek
    @batubek День назад

    Спасибо за видео!!!
    Хорошая тема с esp32. Я хотел построить репитер вот по этой же идее. Две моторолы gm300 1я на прием, 2я на передачу. Между ними вот такой вот WiFi мост на базе esp32 или подобных. Таким образом можно разнести прием и передачу репы на 100 - 400 метров, а если применить направленные антенны то и на более дальние дистанции.
    Не бросайте проект.

  • @stm32f
    @stm32f День назад +1

    Алексей, было бы интересно когда-нибудь замерить, что с диапазоном по блокированию у одночиповых цифровых трансиверов (RFMxx, CC1101, SI4460 итп)

  • @X-Alex
    @X-Alex 17 часов назад

    Класный эксперемент. Я все хочу сделать попугая для проверки рации. Решения которые есть более сложные а переделать эту схему прям вариант.

    • @trapwalker
      @trapwalker 14 часов назад

      Самое простое для реализации попугая - это копеечная плата диктофона с алиэкспресса, и через ардуинку управление ею с подключением к какому-нибудь баофенгу. На рации настраивается разница в частотах приёма и передачи (если надо) и получается эхо-репиттер. Вроде бы даже можно вовсе без контроллера, если ориентироваться на отпирание шумоподавителя рации.

  • @АлександрНевский-е4д

    Судя по содержанию ролика напрашиваются следующие умозаключения.
    Выход микрофона напрямую подаётся на вход АЦП без участия ФНЧ.
    Для эксперимента с частотой дискретизации АЦП == 8 кГц и выходом микрофона без ФНЧ, то есть со спектральными составляющими явно превышающими 4 кГц (максимальная допустимая частота входного сигнала согласно теореме Котельникова) осуществляется оцифровка как более низких (< 4кГц), так и более высокочастотных (> 4кГц) спектральных составляющих сигнала. В результате это приводит к наложению спектров высокочастотных составляющих на низкочастотные, что есть зеркальное относительно частоты 4 кГц отражение спектров высокочастотных компонент (aliasing).
    То же самое происходит и для частоты дискретизации 16 кГц, но ощутимо в меньшей степени. Это обусловлено конечным спектром голоса, его неравномерной формой, а также формой АЧХ микрофона. Проще говоря, для голосового сигнала мощность спектральных компонент превышающих половину частоты дискретизации (8 кГц для второго эксперимента) намного меньше чем для первого (8 кГц). По данной причине голос во втором эксперименте явно слышится лучше.
    В целом, материал ролика очень интересный!
    Алексей, попробуйте всё же поставить ФНЧ на выходе микрофона. Уверен, что можно достичь с данными платами очень высокого качества звука для частоты дискретизации 8 кГц и разрядности АЦП 8 бит.

    • @alexandrmironov7460
      @alexandrmironov7460 21 час назад

      Выход микрофона уже цифровой I2S.

    • @АлександрНевский-е4д
      @АлександрНевский-е4д 12 часов назад +1

      @@alexandrmironov7460 изначально микрофон устройство аналоговое и между ним и интерфейсом i2c стоит АЦП.
      Речь о том, что между микрофоном и самим АЦП установить ФНЧ, тогда в шину i2c будут передаваться речевые данные с вполне вменяемым спектром частот.

    • @alexandrmironov7460
      @alexandrmironov7460 11 часов назад

      @@АлександрНевский-е4д Шина не I2C, а I2S. Этот микрофон в интегральном исполнении со своим встроенным АЦП. В данной конструкции делать доработки это лишние затраты времени.

    • @leryfm
      @leryfm 10 часов назад +1

      спасибо вам ) Единственный комментарий, где "не забыли" про aliasing при ресемплинге👍

  • @cybercube7915
    @cybercube7915 День назад +1

    Спасибо , интересный проект. Я в свое время используя эти же i2s модули пытался связать две стмки через модули nrf24 , но не хватило знаний ... Так и не понял как точно синхронизировать данные между приемником и передатчиком , если они отправляются в виде пакетов , а скорость ограничена

    • @СергейКитаев-н9к
      @СергейКитаев-н9к День назад

      Там надо делать так называемый пинг-понг буфер. То есть двойную буферизацию и менять указатели. Это называется пинг-понг. Пока буфер пин передаёшь, буфер пок записываешь, и потом они меняются местами. Я такое делал с nrf24l01 на каких-то очень слабеньких микроконтроллерах типа ат-тини. Работала идеально просто.

  • @АршМайнезь
    @АршМайнезь 12 часов назад +1

    У некоторых ютуберов и без ESP32 такой голос.

  • @kpmy
    @kpmy День назад

    Качество ужасное, как по мне, как будто микрофон пальцем прижали.
    А есть возможность снять чистое аудио с микрофона?

  • @АлександрАндросович-ш1ж

    интересно, а готовые модули с Али на 433мГц если использовать для передачи ? получится ли сделать простую цифровую радиостанцию ?

    • @stm32f
      @stm32f День назад +2

      получится, даже чуть лучше, без задержек на wi-fi

  • @maksimavdeyev358
    @maksimavdeyev358 День назад

    Радиофакультет МАИ это очень мощно!

  • @xaxaphone
    @xaxaphone 6 часов назад

    Наскольео понимаю, в результате получится что то похожее на станции системы "волновая сеть"

  • @lizynovich
    @lizynovich День назад

    Микрофоны есть аналоговые модули с полной обвязкой. Где стоит специализированная микросхема с программой задачей усиления и АРУ

  • @Menshinin
    @Menshinin 2 часа назад

    Идея, Вашей разработки понятна, но она не может быть массовой, ёмкость яЛоры мала, она для телеметрии, для, устройств, передающих единицы байт в час. В пустом канале Вы что-то сможете, но неколько станций будут иметь слишком много коллизий. Просто оцените пропускную способность всей Лоры и трафик одной рации.

  • @migel_cooper
    @migel_cooper День назад

    а dsp преобразователя не было?

  • @villetahvonen2038
    @villetahvonen2038 21 час назад

    Нет компрессии и нет от знаний выхлопа в виде готового прибора и поэтому товарищи строили шарашки чтобы был выхлоп в виде прибора

  • @SuperDesmaster
    @SuperDesmaster 13 часов назад

    Навороченная радионяня? :)

  • @wmx901
    @wmx901 День назад

    Тест дальности связи планируется?

    • @СемёнКарев
      @СемёнКарев День назад +1

      Был тест с анализом потерянных пакетов

  • @jimsonweed1846
    @jimsonweed1846 16 часов назад

    Смысл через вай-фай передачи, есть. можно создавать аналог Скайпа или Дискорда, если на одной из сторон "белый" айпи, или через сервер с "белым" айпи. То есть можно сделать общение вообще между любой точкой мира.

    • @trapwalker
      @trapwalker 14 часов назад

      Можно и без белых айпи, можно через NAT, можно даже p2p пробивая NAT через STUN-сервер

    • @jimsonweed1846
      @jimsonweed1846 12 часов назад

      @@trapwalker Я про сервер и говорил, но если у обоих NAT и нет сервера, то не получится.

  • @tree-service
    @tree-service День назад

    Это типа сип телефон?

  • @ciklomat
    @ciklomat 8 часов назад

    Эти эксперименты не дают точно понять ,что хуже работает. Усилитель или микрофон. Нужно использовать на одной стороне что то проверено качественное, эталон.

  • @kpmy
    @kpmy День назад

    Сжатие надо, такое, чтобы ESP32 потянула.

  • @TheBjat
    @TheBjat День назад

    а можно исходники на гитхаб?

  • @andrewandrosow4797
    @andrewandrosow4797 Час назад

    Добрый день! Я эксперементировал с STM32 - там сигнал должен буферизироваться и воспроизводиться по кругу с помощью DMA.На частоте 8кГц артефакты отсутствовали - внешний ЦАП на плате (он же УНЧ) имеет встроенный цифровой фильтр, ПРи записи и сжэмплировании 8КГц на вход АЦП не должно приходить сигналов с частотой более 4 кГц. Иначе будут артефакты

  • @denis_kurilchanin
    @denis_kurilchanin День назад

  • @vlfdetectors6014
    @vlfdetectors6014 13 часов назад

    На 10:20 опять Алексей повторяется. Да что ж такое? Мы что склерозники или у нас проблемы с памятью? Как это уже надоело....

  • @vladosipov7140
    @vladosipov7140 23 часа назад

    👍

  • @assur1
    @assur1 День назад

    Даже на видео слышен высокочастотный свист (возможно, как раз16кГц).

    • @bolt23rus
      @bolt23rus День назад +1

      слышен, но это, скорее, восемь

  • @ВладимирЛукьянов-я5г

    Голос как в микро сдикс, трансивере

  • @andreypetrov8354
    @andreypetrov8354 День назад

    😊

  • @НиколайХорват-о3э
    @НиколайХорват-о3э День назад

    Алексей, здравствуйте! Может сейчас достучусь до Вас. Тема: сравнение ft 3000 c ft 101, как всегда через тумблер. Интересно будет не только мне, но и всей нашей братии.Скоро на пенсию. "Кот в мешке"мне не нужен. Благодарю.

  • @xxxxmamontxxxx
    @xxxxmamontxxxx День назад +4

    Телефон в качестве точки доступа. Рация на ESP32 коннетится через Wireguard на внешний сервер(например микротик), передача ведётся между теми узлами, которые маршрутизируются на микроте... это просто офигеть как удобно. Связь можно намутить на любом расстоянии, в любой точке мира где есть wifi. канал зашифрован, прослушать невозможно. Трафика жрёт копейки

    • @tree-service
      @tree-service День назад

      Причем здесь микротик?

    • @trapwalker
      @trapwalker 14 часов назад

      @@tree-service Это его идеей осенило. =)

    • @xaxaphone
      @xaxaphone 6 часов назад

      Если у вас есть телефон то не нужно раздавать с него wifi, можно программу прямо на нем.
      Тут идея а отдельном устройстве независимом

    • @xxxxmamontxxxx
      @xxxxmamontxxxx 5 часов назад

      @@xaxaphone именно идея в отдельном устройстве, телефон для таких целей при определенных типах работ показал себя не с лучшей стороны

    • @xxxxmamontxxxx
      @xxxxmamontxxxx 5 часов назад

      @@tree-service Удобный же)

  • @Shuspano
    @Shuspano 11 часов назад

    "We are the robots"
    Такие тембры интересные. Просто находка для синти-поп вокала.

  • @gribnaypolyna9833
    @gribnaypolyna9833 День назад

    Народ, как изолировать телефон от радиоволн???? Пробовал в толстостенной кастрюле с заземлением, ни хера не получается, волна проходит хоть и немного падает. У кого-то есть такая практика, а не теория???

    • @sergeirepin7420
      @sergeirepin7420 16 часов назад

      Кастрюля должна быть из не магнитного материала. Алюминий,медь.

    • @user-xz4all
      @user-xz4all 8 часов назад

      Нужно нагреть телефон в микроволновке...

    • @gribnaypolyna9833
      @gribnaypolyna9833 7 часов назад

      @@sergeirepin7420 кастрюля была алюминиевая.

    • @gribnaypolyna9833
      @gribnaypolyna9833 7 часов назад

      @@user-xz4all "бороду то я сброю, а умище куда деть"?

    • @user-xz4all
      @user-xz4all 5 часов назад

      @@gribnaypolyna9833 наплодили вас нейроботов...

  • @МИХАИЛРЕАКТОР
    @МИХАИЛРЕАКТОР День назад +2

    Так много объяснений... всё видео можно было в 5 минуту сделать, кто программы писать не умеет, тот и не научится сколько не обясняй, а кто шарит тем вообще так разжёвывать ненужно...

    • @trapwalker
      @trapwalker 14 часов назад +1

      Ой, вот вечно все эти недовольные. Поставьте двойную скорость.
      "кто программы писать не умеет, тот и не научится сколько не обясняй" - а вы прямо с рождения умели, или научились со временем?

  • @утуб_обозвал_нас_собаками

    Как всегда благодарен, весьма! Рад всем вашим выпускам по любой тематике. Мечтаю дожить до счастливого времени, когда ко власти придут здоровые силы, и Вам отдадут лучшее эфирное время на одном из центральных ТВ-каналов. Вы способны пробудить интерес к радио делу и всему что с ним связано, не только у подрастающих поколений, но и у сформировавшихся личностей. Успехов Вам, здоровья, бодрости духа и побольше радости!