Чтение исходных значений звука из чипа ADC на малине pi

Я подключил чип MCP3008 ADC к микрофону Electret и к моему пи. Я читаю входные данные, используя бит-биение в python, и получаю целое число от 0 до 1024.

Я последовал этому руководству, чтобы выполнить бит-бит: https://learn.adafruit.com/reading-a-analog-in-and-controlling-audio-volume-with-the-raspberry-pi/connecting-the-cobbler -в-а-mcp3008

Мой вопрос: как взять это целое число и преобразовать его в нечто значимое? Могу ли я как-то записать эти байты в файл на python, чтобы получить необработанные аудиоданные, которые Audacity может играть? Прямо сейчас, когда я пытаюсь записать значения, они просто отображаются как целое, а не как двоичные. Я действительно новичок в python, и я нашел эту ссылку для преобразования необработанных данных, но сначала мне не удалось создать исходные данные: Python open raw audio data file

Я даже не уверен, что представляют эти значения, являются ли они данными PCM, которые я должен выполнять математикой, связанной с временем?

Что вы здесь делаете, это выборка аналогового сигнала, изменяющегося во времени. поэтому да, значения, которые вы получаете, это PCM, но с огромным предостережением (см. ниже). Если вы пишете их как WAV-файл (возможно, используя это, чтобы помочь вам), вы сможете открыть их в Audacity. Вы можете либо преобразовать значения в unsigned 8-bit (путем усечения и), либо в 16-битную подпись со сдвигом и вычитанием.

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

Неправильные часы выборки также приведут к значительным артефактам, которые вы услышите как искажение.