Данные микрофона на Arduino в WAV-файл на RaspPi

Работаю над проектом Arduino + Raspberry Pi и надеюсь, что этот вопрос подходит под эту категорию. Я записываю звук с помощью MEMS-микрофона на Arduino и передаю его на Pi для сохранения в воспроизводимом файле (WAV).

В настоящее время я настроил передачу TCP от Arduino к RaspPi. Эта часть хороша и хороша для того, чтобы увидеть передачу данных, которую я ищу.

Моя проблема заключается в том, что аудиоданные записываются на Arduino. На данный момент я вижу, что данные из моей функции analogRead() отображаются следующим образом:

2035
2046
2030
2031
2044
2038
2034
2031
2034
2019
2028
2030
2024
2032
2028

Мой вопрос: что это значит? Как мне перевести это, желательно на Pi, в полезные данные, которые я могу сохранить в файле WAV?

Любые библиотеки или подсказки/подсказки, которые могут направить меня в правильном направлении, были бы великолепны.

, 👍1

Обсуждение

Вероятно, это не сработает или, по крайней мере, не очень хорошо, особенно если вам нужно записывать с приличным качеством или более доли секунды без пропусков. Сетевые интерфейсы приводят к значительной задержке пакетирования, и у Arduino на самом деле недостаточно памяти для хранения данных до тех пор, пока они не будут отправлены, плюс его АЦП довольно незначителен для выборки качества звука с самого начала. Если вы хотите использовать Arduino, вам может быть лучше использовать последовательный порт с высокой скоростью передачи данных, поскольку это потоковая передача, а не буферизация, но на самом деле Arduino здесь не правильный выбор., @Chris Stratton


2 ответа


-1

Трудно ответить на этот вопрос, не видя кода, но я сделаю предположение и предположу, что вы не используете какую-либо обработку БПФ на входных данных. Вы можете попробовать просмотреть эту библиотеку. С другой стороны, людям, похоже, повезло и с этим.

,

Это не содержательный ответ на заданный вопрос. Нет смысла выполнять БПФ, поскольку целью является файл .wav, т. е. линейные данные PCM во *временной области*. Кроме того, Arduino недостаточно быстр, чтобы выполнять непрерывное БПФ аудио, не выбрасывая при этом большую часть собранной информации. сделано на пи, а не на ардуино., @Chris Stratton


1

Зачем использовать Arduino, если можно использовать напрямую Pi? Я бы взял высококачественный АЦП, подключил к нему микрофон, а затем заставил Pi записать значение из АЦП непосредственно в файл. Arduino просто недостаточно быстр для записи звука хорошего качества — АЦП 10-битный, 9,6 кГц. В лучшем случае вы можете получить стереофонический 8-битный wav-файл с частотой 8 кГц. С хорошим АЦП на Pi вы сможете перейти к стерео, 16 бит (может быть, даже 24 бит), 44,1 кГц. Кроме того, отправка данных Arduino будет сильно замедляться, поэтому фактическая частота дискретизации будет намного ниже.

,