Sound recording and playback through stm32 DAC. Opus codec encoding and decoding of speech.

Поделиться
HTML-код
  • Опубликовано: 29 июн 2024
  • Opus codec encoding decoding audio. SW4STM32. Sound recording and playback through stm32 DAC.How to fill in audio in microcontroller.
    00:00 Test coding and decoding Opus codec audio playback through the DAC STM32 microcontroller
    00:45 Opus codec project size and Keil free version limitation
    00:54 SW4STM32 development environment from STM
    00:54 Opus is...
    01:38 Encoding and decoding a short section of audio on the STM32
    01:54 How to load an audio file into the memory of a microcontroller? (Audacity export of raw data)
    03:21 SW4STM32 build and project size
    03:25 Microcontroller firmware via ST-Link utility
    03:37 Delays in encoding and decoding audio, size of encoded sections..
    03:51 Briefly about the project
    04:53 Audio output via UART
    05:08 Import .raw data into the Audacity program. Comparing the encoded and decoded portion of audio with the original
    05:45 SW4STM32 preprocessor commands and paths for building a project
    06:10 Project implementation with Opus codec under Keil.
    06:37 Test recording sound, encoding, saving to flash, reading and decoding Opus codec.
    Sound playback through the STM32 DAC microcontroller
    06:57 STM32 CUBE HAL_LL ADC, Timer, DAC, SPI, clock tuning....
    08:03 Keil HAL_LL настройка АЦП,Таймера,ЦАП,SPI и как это все работает..
    12:42 Download recorded, encoded and decoded data via UART to the computer...
    13:25 Delays in coding and decoding of the Opus codec and the size of the encoded data at the output of the Opus codec
    Project drive.google.com/open?id=1XLC...
    Parts:
    MAX9814 board ali.pub/3mqe3a
    stm32f4 board ali.pub/3cdalq
    ST-LINK programmer ali.pub/312wfw

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

  • @KostsovKonstantin
    @KostsovKonstantin 2 года назад

    Спасибо за видео. Ты меня вдохновил делать свой мини плеер.

  • @pusatberk4193
    @pusatberk4193 4 года назад

    I already missed you. Thank you !

  • @81n90
    @81n90 4 года назад

    Красавчик! Почему так мало просмотров, такая работа! Лосось и подписка!

  • @user-xh3db7xi8p
    @user-xh3db7xi8p 4 года назад

    спасибо за ваш труд

  • @kokotmkokot4926
    @kokotmkokot4926 4 года назад +4

    Примеры (более 32к) из репозитория под SW4STM32 можно открывать куда более перспективной средой CubeIDE и работать с нормальной отладкой. Если отбросить коммерческую сторону вопроса, логичным выглядит использовать в данном проекте обычную Discovery с встроенными на борту микрофоны и ЦАП. Видео безусловно интересное, удачи!

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      Я так и делал.Только там примеры для bluetooth Opus.Среда может и перспективная, но у меня компьютер слабоват. Keil последней версии летает.

  • @electronic7979
    @electronic7979 4 года назад +1

    Super 👍

  • @EdGull
    @EdGull 3 года назад

    Спасибище!

  • @megannnn98
    @megannnn98 4 года назад

    Молодец, годный контент

  • @eugenevladoff2758
    @eugenevladoff2758 4 года назад +1

    Интересный проект. Респект подписчику, предоставившему новую отладочную плату)

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      Он не только ее предоставил.Есть более мощные отладочные платы от STM.Нужно только найти под них задачи.Кодирование аудио + Ogg контейнер подошло бы.

    • @eugenevladoff2758
      @eugenevladoff2758 4 года назад

      @@ElectroHobby1 я мечтаю об относительно не дорогой видеокамере для зимней рыбалки. С записью хотя бы в 720p на SSD или флешкарту. Там чемоданчик, экран для просмотра online и меню (на джойстике для удешевления), батарея с зарядкой по usb кабелю (дома). Камера опускается под воду на кабеле питание + av. На плате видео кодируется в какой-л формат и пишется на носитель. Прога умеет сливать видео (предоставить доступ к носителю (не обязательно)), показать питание, показать расход места на флешке, показать тек. статус (запись или другое). Забыл про ИК подсветку под водой)) она должна быть, конечно. На сегодня есть камеры Calypso с записью. Там очень маленькое разрешение записи при цене около 200 долларов. Боюсь представить сколько стоях камеры с хорошим качеством записи. Сорри, расписаля что-то. Вот как пример для проекта, может еще что-то поидумается.

    • @alekseyaleksey8660
      @alekseyaleksey8660 3 года назад

      @@eugenevladoff2758 Тут проще взять смартфон положить в акрил пластик заклеят или есть на 20м контейнер для подводной съёмки это будет дешевле чем человек будет тратить на это время.

    • @eugenevladoff2758
      @eugenevladoff2758 3 года назад

      @@alekseyaleksey8660
      Никто и не ждет, что за меня все сделают, не переживайте. Смарт не пойдет, нужно смотреть онлайн на экране.

  • @user-ek8tm9lu8s
    @user-ek8tm9lu8s 4 года назад

    Здраствуй круто ти мисли мои угадуеш у меня вголове такие проекти крутятся

  • @insoctave
    @insoctave Год назад +1

    BIG INDIAN) Это что-то большое индийское?)

  • @masterkit9517
    @masterkit9517 4 года назад +7

    сделайте урок МИДИ устройство из STM32 в ютубе нет ни одного видео урока о миди устройстве из SMT32 но все с профессорскими голосами рассказывают как они знают STM32

    • @ElectroHobby1
      @ElectroHobby1  4 года назад +1

      Я думал об этом.

    • @masterkit9517
      @masterkit9517 4 года назад +1

      @@ElectroHobby1 Это будет очень популярная тема на вашем канале особенно если на 103й плате просто кнопку запустить. миди окс www.midiox.com/ есть программа несколько килобайт, используется по всему миру, тут же покажет какое устройство подключено и тут же выведет что устройство сообщает, даже без редакторов звуковых в 1 клик выдаст все "чем дышит" устройство миди каждая его кнопка. Даже не зная вданной области абсолютно ничего достаточно вывести в этот миди окс из стандартное миди устройство STM32 а его в CUBEMX нашел на одном из каналов прикручивают как аудио устройство миди, загоняют 48мгц частоту автоматически выставляется на внешний кварц расположенный на той же 103й плате, ПК видит пробовал аудиоустройств STM32 успешно но дальше я как слон в апельсинах в STM32, далее нужно то что я не знаю репорты какието или репосты из вот этого файла www.usb.org/sites/default/files/midi10.pdf в самом низу документа и ещё нашел такое по STM32 github.com/ripxorip/stm32_usb_midi долго искал и много но как слон в посудной лавке разобраться с таким, как бурить глубоководную скважину саперской лопаткой сложно да и не в том месте если ещё искать. Шансов без вас разобраться меньше и меньше. Все что удалось. Но удалось подцепить к пк как аудио устройство USB STM32 все пишут попытаются но на каком этапе у них что то не получается. Если бы мне давали советы я бы как в "распределенных вычислениях" ковырял бы все что подсказывали бы и "обрабатывал" если бы так было быстрее. Но я даже не знаю в какую сторону "бурить" скважину. Столько труда и сил затрачено и все как камень долбить. Как же прошить этот камень STM32. Я пытаюсь долбить его без знаний. Мне это труднее и труднее. Даже не знаю что делаю. Может есть тот кто подскажет как держать "кирку". Хотя бы. Спасибо большое вам.

    • @UmbertoFellinni
      @UmbertoFellinni 4 года назад

      В MIDI нет ничего сложного - это обычные 3 байта информации, кодированные в соответствии с документом по MIDI. Эти 3 байта НЕ СОДЕРЖАТ НИКАКОГО ЗВУКА. Они содержат лишь код команды и её параметры. Например, команда NoteOn, номер ноты и громкость ноты. Всё! С помощью MIDI нельзя передавать звук. Но можно передавать команды для синтезатора звука.

    • @LLlblKAPHO
      @LLlblKAPHO 4 года назад

      @@UmbertoFellinni хорошо, как сделать электронное пианино для мамы, вместо 200 килограммов старого пианино?

    • @UmbertoFellinni
      @UmbertoFellinni 4 года назад

      Купить в магазине готовое - и проще, и дешевле. Потому что миди там как бы второстепенное дело. Первым делом потребуется механика - клавиатура, причем крайне желательно с молоточковой механикой, как в пианино, иначе на инструменте будет непривычно играть. Во-вторых, нужно будет раздобыть звуковые семплы звучания всех нот пианино (фортепиано, если правильно). Ладно, допустим, всё нашли. Прикручиваем по два контакта на клавишу - один определяет начало движения клавиши (молоточка), второй - конец движения. По разности времени между замыканием первого и второго контактов определяем скорость движения молоточка, а значит и силу нажатия на клавишу. Определили, посчитали.
      Теперь, для простоты, будем использовать формат MIDI сообщений, нас интересует сообщение NoteOn, исключительно для внутренних нужд. По этому сообщению выбираем звуковой семпл и его громкость. Проигрываем семпл через аудио ЦАП и усилитель. Да, и по-хорошему нам нужны будут две педальки. Ну хотябы одна - сустейна.
      Ну как, не пугает работа? Готовый проект навряд ли вы найдете. Но если разбираетесь в программировании, сможете сделать.

  • @karlkomarblch106
    @karlkomarblch106 4 года назад +2

    Круто и очень подробно. Но добавлю ложку дёгтя. Говоришь как робот. Тебе б на пение походит) тогда лучше на много будет.

    • @easystm6865
      @easystm6865 4 года назад

      Логическое мышление)

    • @marsdendennis
      @marsdendennis 4 года назад +1

      я бы еще добавил, что SPI, которое автор произносит как спай на слух вопринимается как spy (шпион). Я даже сразу не понял, почему это флэшка на плате вдруг стала шпионской))) Мне кажется, корректнее было бы произносить именно как аббревиатуру - эс-пи-ай.

  • @stepperbeats709
    @stepperbeats709 4 года назад +3

    Крутой проект! Особенно из-за кодека opus, сам его использую более года, слушаю аудио книги в 16кбпс, приемлемый звук и очень маленький размер! Автор, а возможно сделать на базе stm32 простой плеер для опус (хотябы до 40кбпс stereo)? Ну или втречали ли вы портативные плееры которые проигрывают опус (кроме телефонов)?

    • @ElectroHobby1
      @ElectroHobby1  4 года назад +2

      Можно сделать на базе stm32.Нужно "реализовать" добавить Ogg контейнер.Плата на базе esp32(ESP32 LyraT) в примера имеет близкий пример.То есть там уже Ogg контейнер реализован и может читать .opus и на борту есть все необходимое.Выход на наушники,подключение батарейки и т.п.

  • @PhantomArtcoding
    @PhantomArtcoding 4 года назад

    Получится ли организовать дуплексную связь с кодированием/декодированием в Опус и с передачей, например, по nrf24? Какое максимальное качество звука удастся получить? По поводу микрофона хочу порекомендовать вот эту схему: cxo.lv/index.php/solder/micamp/111-micamp01 Я собирал её с применением микрофона WM61 с алиэкспресса. Вероятно микрофон являлся копией, но звук получился восхитительный. Пробовал вести запись звука при помощи 10-битного АЦП AVR, даже небольшое сжатие семплов до 8 бит реализовал. Звук получился очень хороший, если интересно, могу прислать полученные записи. Я ещё не пробовал, но думаю, что возможностей AVR даже хватило бы для двунаправленной передачи звука через nrf24, но данные пришлось бы передавать с высоким битрейтом. Думаю, организовать подобное на STM32, но сжимать аудиоданные, чтобы снизить нагрузку на радиоканал.

  • @easystm6865
    @easystm6865 4 года назад

    Ну допустим такой пример. У нас есть блютуз модуль НС-05. Возможно ли в него отправлять текстовый файл со значениями в реальном времени, и уже на стороне МК декодировать и воспроизводить звук. Проще говоря, хватит ли скорости у юарта в HC 05, чтобы транслировать через него аудио? Заговорили о блютуз и стало интересно.

    • @ElectroHobby1
      @ElectroHobby1  4 года назад +1

      Я прикидывал битрейт около 20Kбит секунду.UART 115200 бод это 115200\10*8 =~92Kбит секунду т.е. должно хватать с большим запасом даже на маленьких скоростях.

  • @alekseyaleksey8660
    @alekseyaleksey8660 3 года назад

    Всю эту прелесть можно закончить на малине с отправкой через 3G модем на почту виде ролика 10-30сек.

  • @LazarevDenisBalakovo
    @LazarevDenisBalakovo 4 года назад

    Извиняюсь сразу за возможно нелепые вопросы, т.к. я нуб...Можно ли теоретически записывать длинные аудиозаписи в какое-нибудь ПЗУ (например microsd) и с какой максимальной битностью и частотой дискретизации (идеально было бы 94кгц 24 бит стерео) в формате wave и/или ogg, использовать два микрофона (т.е. стереозапись звука), заменить капсулы микрофонов на более качественные, сделать простенький экран...В общем сделать портативный аудиорекордер наподобие zoom h1..?)

    • @ElectroHobby1
      @ElectroHobby1  4 года назад +1

      Все это можно.Тоже такая тема интересует.Но я ушел в сторону USB микрофона и меня устраивает его работа.Сейчас пытаюсь развести плату.Пока не сильно получается мне трудно себе угодить.Там я применил MEMS микрофон.
      Если wave то два MEMS и sd карточка. Тут проблема развести это все правильно и правильные детали.Работу с sd очень слышно на записи в простых конструкциях.

  • @VictorSklyar
    @VictorSklyar 3 года назад

    хочется что-то типа hardware opus encoder/decoder на stm32f103, т.е. мы туда pcm - назад opus с заданными параметрами, и наоборот - мы туда opus - назад pcm, такое возможно?

    • @ElectroHobby1
      @ElectroHobby1  3 года назад

      Не уверен,что памяти хватит у f103.

    • @VictorSklyar
      @VictorSklyar 3 года назад

      @@ElectroHobby1 а какие требования к памяти вообще?

    • @ElectroHobby1
      @ElectroHobby1  3 года назад

      @@VictorSklyar если в видео нет.В сообществе выкидывал, но наверно там этого уже нет.А так не помню.

  • @MrAlienation25
    @MrAlienation25 4 года назад +2

    Видео великолепное , но почему вы используете именно питон ?

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      Мне так удобнее.Другими языками кроме Си я не владею.Можно было на Си)

  • @Alex_Ekb
    @Alex_Ekb 4 года назад

    Посмотрел видео и не увидел 2 важных для меня момента. 1) Можно ли задать фиксированный битрейт? 2) Какой битрейт использован Вами при записи/воспроизведении из флеш?

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      Частота дискретизации была 16kHz.На эту частоту и настроен Opus кодек.Потом все декодировалось и воспроизводилось с этой же частотой.Частоту можно изменить.Битрейт на выходе(кодированное аудио) можно прикинуть по тестам.Длинный тест есть в конце видео.Там есть отчет+ привязка по времени в мс, а именно во сколько байт превратились 320 семплов(320 16_битных значений АЦП) после кодирования и сколько на это было затрачено времени.
      Около 19.5Kбит грубо(каждые 20 ms давали на выходе до 50 байт кодированных данных(звук частота дискретизации 16 kHz 1 канал 16бит ))

    • @Alex_Ekb
      @Alex_Ekb 4 года назад

      ​@@ElectroHobby1 Спасибо, что ответили. 19.5кбит слишком много, кмк. Если бы можно было получить такое качество на минимальных заявленных для Opusa 6кбитах, то было бы интереснее. Я просто подыскиваю кодек для простенькой самодельной цифровой рации.
      19.5кбит я получал гораздо проще, хоть и качество звука чуть хуже чем в ролике, но вполне разборчиво для речи, используя только FFT и оставлении 8-16 самых сильных гармоник. Но такой битрет чуть чуть не влезает в ширину радио канала(12.5 кгц). Идеально было бы иметь битрейт

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      @@Alex_Ekb Проект для Keil я оставил под видео.Можете поиграться если есть F4 .SPI флэш на борту не обязательна можно в оперативку настроить.Да и ссылка на плату есть под видео.Не обязательно по ссылке можете такую найти у другого продавца!!! Предыдущий рас я пробовал G711 кодек тот примерно в два раза у меня сжимал.Для кейл нужна лицензия проект не влазит по ограничениям в 32 кило.Но под видео есть проект для SW4STM32.Частоту дискретизации можно снизить до 8kHz (в два раза меньше!!!)не знаю насколько битрейт упадет но упадет думаю сильно.

    • @Alex_Ekb
      @Alex_Ekb 4 года назад

      @@ElectroHobby1 Пока STM32 F4 у меня нет, но попробую поразбираться на ПК с опусом. Как я понял из описания кодека он может работать и на целочисленной арифметике, а значит и stm32f103 может хватить, но если честно пока слабо верится, что без глубокого понимания как он работает вряд ли вообще получится прикрутить его к слабому железу, а с пониманием проще будет написать свой более оптимальный кодек.
      Но в любом случае спасибо, что снимаете подобные видео и делитесь подробностями. Гляну на Ваш код, может решусь более подробно разобрать как кодируют звук взрослые дядьки.

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      @@Alex_Ekb Сомневаюсь насчет f103 для Keil размер вышел 100кило с чем-то в принципе в китайскую где бывает флешь 128 в место положенных 64...Размер стека и кучи я не пробовал загонять до минимума.Есть теперь на замену платы f4 с типоразмером F103 .Зовут не bluepill a blackpill вот наверно cnx-software.ru/2019/12/24/%D0%BE%D1%81%D0%BE%D0%B1%D0%B5%D0%BD%D0%BD%D0%BE%D1%81%D1%82%D1%8C-%D1%82%D1%80%D0%B5%D1%85%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80%D0%BE%D0%B2%D0%BE%D0%B9-%D0%BF%D0%BB%D0%B0%D1%82%D1%8B-stm32-black-pill-%D1%8D%D1%82%D0%BE-stm32f4-cortex-m4-mcu-%D0%B8-%D0%B4%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F-spi-%D1%84%D0%BB%D1%8D%D1%88-%D0%BF%D0%B0%D0%BC%D1%8F%D1%82%D1%8C/

  • @androidpasha
    @androidpasha 3 года назад

    Как опус к esp8266 прикрутить? Под среду ардуино.

  • @andrewandrosow4797
    @andrewandrosow4797 3 года назад

    Пробовал как-то подключить Си файлы и Хеадеры к проекту в IAR: ничего не получилось: компилятор захотел МАКЕ файл. Но после этого он начал ругаться на него...

    • @ElectroHobby1
      @ElectroHobby1  3 года назад

      Жаль.Были другие наработки по этому проекту, но я херанул нечайно шифрованный раздел на котором было все это добро.

  • @user-jc5ky2ei5l
    @user-jc5ky2ei5l 4 года назад

    а. ты. и. в . жизни. так. отрывисто. говоришь?

    • @ElectroHobby1
      @ElectroHobby1  4 года назад

      Ждите стрима)

    • @MrVanoit
      @MrVanoit 2 года назад

      Он говорит правильно и четко. Что не нравится?