NodeMCU воспроизводит файлы .wav или .mp3

Я не уверен, по какому пути идти, чтобы заставить NodeMCU воспроизводить звук. Я хотел бы использовать одно-двухсекундные файлы wav и управлять крошечным динамиком. Цель состоит в том, чтобы услышать человеческий голос, ничего сверхвысокого качества. Кроме того, я не хочу использовать звуковой экран или SD-карту. Мои файлы будут достаточно малы, чтобы запустить все прямо с чипа. Нет необходимости записывать сэмплы, только воспроизведение. Что я должен использовать и есть ли примеры? Кажется, сигма-дельта-модуль — хорошее место для начала.


person Joe Andolina    schedule 31.03.2016    source источник


Ответы (1)


Один раз https://github.com/nodemcu/nodemcu-firmware/pull/1255 попал в ветку dev, вы можете сделать следующее как описано:

-- ****************************************************************************
-- Play file with pcm module.
--
-- Upload jump_8k.u8 to spiffs before running this script.
--
-- ****************************************************************************


function cb_drained(d)
  print("drained "..node.heap())

  file.seek("set", 0)
  -- uncomment the following line for continuous playback
  --d:play(pcm.RATE_8K)
end

function cb_stopped(d)
  print("playback stopped")
  file.seek("set", 0)
end

function cb_paused(d)
  print("playback paused")
end

file.open("jump_8k.u8", "r")

drv = pcm.new(pcm.SD, 1)

-- fetch data in chunks of LUA_BUFFERSIZE (1024) from file
drv:on("data", file.read)

-- get called back when all samples were read from the file
drv:on("drained", cb_drained)

drv:on("stopped", cb_stopped)
drv:on("paused", cb_paused)

-- start playback
drv:play(pcm.RATE_8K)

Ожидается, что звук будет монофоническим необработанным 8-битным потоком без знака с частотой дискретизации от 1 до 16 тыс. отсчетов в секунду. Обычные файлы WAV можно конвертировать с помощью инструментов OSS, таких как Audacity или SoX. Отрегулируйте громкость перед преобразованием.

person Marcel Stör    schedule 21.04.2016
comment
Спасибо за помощь. Я ознакомился с документацией, которую вы упомянули, и у меня есть сборка прошивки с PCM. Я пытаюсь запустить небольшой модуль динамика, например: img.dxcdn.com/productimages/sku_138322_2. jpg Моя проблема в том, что pcm.SD всегда равен нулю. У тебя есть идеи? - person Joe Andolina; 26.04.2016
comment
Сам не пробовал а в вашей прошивке есть модуль сигма-дельта? - person Marcel Stör; 26.04.2016
comment
Нет, не думаю, что у меня в прошивке сигма-дельта. Добавлю и попробую еще раз. - person Joe Andolina; 26.04.2016
comment
Документация намекает, что вам, вероятно, это нужно. - person Marcel Stör; 26.04.2016
comment
Получил новый билд вместе с пкм и сигма-дельта. Оно работает! Спасибо всем в сообществе NodeMCU. - person Joe Andolina; 27.04.2016
comment
Большой! Так можно ли его закрыть? - person Marcel Stör; 27.04.2016
comment
Стоит отметить: github.com/nodemcu/nodemcu-firmware/pull /1255/файлы/ - person Marcel Stör; 28.04.2016
comment
@JoeAndolina Я знаю, что он немного старше, но я думаю, было бы здорово, если бы вы могли сообщить нам, как вы это сделали. Образец проекта будет идеальным. Спасибо заранее. - person John Fonseka; 19.06.2017
comment
@JohnFonseka, я не понимаю твоей просьбы. Пример, который я опубликовал и который OP использовал в качестве основы, я считаю, прямо из примеров NodeMCU по адресу github.com/nodemcu/nodemcu-firmware/blob/master/lua_examples/ - person Marcel Stör; 19.06.2017
comment
@MarcelStör, я имею в виду, как загрузить файл .u8, какие контакты для подключения динамика/усилителя и т. д. По сути, пример проекта, воспроизводящего музыку. Потому что я новичок в этой теме и в NodeMCU. Спасибо вам большое за ваш ответ. - person John Fonseka; 20.06.2017
comment
@JohnFonseka приведенный выше код в значительной степени является примером проекта. Как загрузить: nodemcu.readthedocs.io/en/latest/en/upload, оборудование и проводка: nodemcu.readthedocs.io/en/latest/ en/modules/pcm. Это все, что у меня есть. - person Marcel Stör; 20.06.2017