Получить амплитуду в данный момент в звуковом файле?

Я работаю над проектом, где мне нужно знать амплитуду звука, поступающего с микрофона на компьютер.

В настоящее время я использую Python с инструментами Snack Sound Toolkit, и я могу записывать звук, поступающий с микрофона, но мне нужно знать, насколько громким этот звук. Я мог бы сохранить запись в файл и использовать другой инструментарий для чтения по амплитуде в заданные моменты времени из аудиофайла или попытаться получить амплитуду во время поступления звука (что может быть более подверженным ошибкам).

Существуют ли какие-либо библиотеки или примеры кода, которые могут помочь мне в этом? Я смотрю, и до сих пор Snack Sound Toolkit кажется моей лучшей надеждой, но, похоже, нет способа получить прямой доступ к амплитуде.

3 Solutions collect form web for “Получить амплитуду в данный момент в звуковом файле?”

При взгляде на примеры инструментов Snack Sound Toolkit, похоже, есть функция dbPowerSpectrum.

Из справки:

dBPowerSpectrum ()

Вычисляет логарифмический спектр мощности FFT звука (на номере образца, заданного в параметре пуска) и возвращает список значений дБ. См. Раздел для описания остальных параметров. При желании можно указать конечную точку, используя конечную опцию. В этом случае результатом является среднее число последовательных БПФ в указанном диапазоне. Их интервал по умолчанию берется из длины fftlength, но это можно изменить с помощью опции пропуска, в которой указывается, сколько точек для перемещения окна FFT на каждом шаге. Опции:

EDIT: Я предполагаю, что когда вы говорите об амплитуде, вы имеете в виду, как «громкий» звук появляется человеку, а не напряжение во временной области (которое, вероятно, будет равно 0 по всей длине, поскольку интеграл синусоидальных волн будет равен 0 например: 10 * sin (t) громче, чем 5 * sin (t), но их среднее значение с течением времени равно 0. (Вы не хотите в любом случае посылать напряжения без переменного тока в динамик)).

Чтобы получить громкий звук, вам нужно будет определить амплитуды каждой частотной составляющей. Это делается с помощью преобразования Фурье (FFT), которое разбивает звук на его частотные составляющие. Функция dbPowerSpectrum, по-видимому, дает вам список величин (простите меня, если это отличается от точного определения спектра мощности) каждой частоты. Чтобы получить общий объем, вы можете просто суммировать весь список (который будет близок, если он все еще может отличаться от пропущенной громкости, поскольку человеческое ухо имеет частотную характеристику).

Я полностью согласен с этим «ответом» от CookieOfFortune.

данный вопрос плохо сформулирован … но этот ответ делает вещи намного более сложными, чем необходимо. Я предполагаю, что под «амплитудой» вы подразумеваете воспринимаемую громкость. так как технически каждый образец в звуковом потоке (PCM) представляет собой амплитуду сигнала на данном временном фрагменте. чтобы получить представление громкости, попробуйте простой расчет RMS:

RMS

| K <

Я не уверен, поможет ли это, но skimpygimpy предоставляет возможности для разбора WAVE-файлов в последовательности python и обратно – вы можете использовать это для непосредственного изучения образцов формы волны и делать то, что вам нравится. Вам нужно будет прочитать некоторый источник, эти подкомпоненты не документированы.

Python - лучший язык программирования в мире.