звук - это просто кривая, однако вышеприведенный график - это не кривая звука ... тишина - это просто плоская линия, большая громкость, естественно, дает колебания с увеличенной высотой ... для точного захвата звука необходимо сэмплировать аудиосигнал.по крайней мере вдвое больше частоты самой высокой частоты, которую вы хотите захватить ... например, чтобы захватить сигнал 1 кГц, ваша частота дискретизации должна быть не менее 2 кГц ... типичное аудио качества CD использует частоту дискретизации 44 100 Гц, которая позволяет захватыватьвходной аудиосигнал с частотой до 22 050 Гц, отдача или снятие ... вы не упоминаете частоту дискретизации - обновите свой вопрос, сообщив нам, что вы используете
Три фактора определяют объем памяти, необходимый для захвата звука
- sample_rate
- bit_depth
- number_of_channels
, например, позволяет использовать моно (1 канал) с разрядностью 10 бит (записывается в выходной файл как двабайт (16 бит) и частоту дискретизации 44,1 кГц ... тогда одна секунда захваченного звука дает нам 1 * 2 * 44100 байтов данных ... если вы знаете размер файла захваченных данных и не знаете, скажем, частоту дискретизации, вы можете рассчитать ее, используя вышеуказанное соотношение
... возможно, вы строите данные, которые сначала должны быть преобразованыкаким-то образом ... или, возможно, вы захватываете значения интенсивности звука с более медленной частотой дискретизации, чем частота вашего входного аудиосигнала
Предполагая, что точки данных, которые вы показываете, являются вашими 10-битными аудиосэмплами, где один байт8 бит и т. Д. 10-битный сигнал должен требовать два байта памяти на одну точку данных ... например
637 shown above taken from a 10 bit signal which can vary from 0 to 1024
Мой совет - создать выходной файл PCM с битовой глубиной 16 бит, где выраспределить каждую входную 10-битную точку данных по двум байтам в этом файле PCM ... поэтому следующим шагом является преобразование каждого 10-битного целого числа в пару из двух байтов ... обратите внимание на понятие порядка байтов (little-endian или big endian)... обычный PCM или WAV использует порядковый номер с прямым порядком байтов ... это преобразование потребует выполнения операции сдвига ... при высокойgh level, первый байт вывода будет просто младшими 8 битами 10-битного целого числа ... затем выполните сдвиг бит вправо для этого 10-битного целого числа, которое затем станет вторым байтом вывода, записанного в файл PCM
здесь 10-битное число (показано в двоичном виде)
0101011100 all 10 bits shown
01 01011100 same data separated into two byte
most significant byte 01 least significant byte 01011100
для сохранения этого числа в два байта, а затем заполнение первого байта, потребляя младшие 8 бит, как в
01011100
затем сдвиньте вправо тот же исходный номер 0101011100
на 8 позиций (8 бит), который становится
01
и сохраните его во втором байте ... выше концептуально, что вам нужно сделатьоднако в коде, скажем, на языке c, это можно сделать в виде пары строк кода
Audacity может воспроизводить звук PCM, а суффикс файла не имеет значения, может быть чем угодно, не только .PCM ... File -> Import -> Необработанные данные ... значения, которые вы используете для кодирования, зависят от того, как вы обрабатываете звуковую кривую ... обычно тишина равна 0, тогда как кривая колеблется от положительных до отрицательных значений ... если выВаши данные варьируются от 0 до 1024, что без знака, вы можете их нормализовать, поэтому вместо этого они будут варьироваться от -1 до +1, поэтому они считаются подписанными ... Различные такие форматы будут работать
У вас есть две проблемы: (1) проверить ваш аудиозахват и (2) правильно вырезать двоичный файл с необработанным аудио ... Я настоятельно рекомендую вам записать цикл, чтобы записать кривую греха в файл PCM, чтобы закрепить этот процесс, прежде чем приступить к битве при проверке захвата
Обновление вот некоторые документы http://www.mpja.com/download/31072mp.pdf
и спецификации http://www.ti.com/lit/ds/symlink/lm393-n.pdf, как упомянуто в https://forum.arduino.cc/index.php?topic=292533.0
Похож на васиспользуется цифровой выход, который является звуковым индикатором (компаратором), который выдает либо высокое 1024, либо низкое 0 в зависимости от того, превышает ли громкость микрофона пороговое значение, контролируемое потенциометром ... плата может иметь аналоговый выход, который должен давать вам звуковую кривуюоднако вы должны передать его в АЦП (аналоговый цифровой преобразователь), чтобы получить поток целых чисел
дайте нам знать, как вы поживаете ... это очень выполнимо