Чтение децибел звукового устройства PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Чтение децибел звукового устройства Python

Сообщение Anonymous »

Я пытаюсь получить значение децибел из аудиопотока с помощью библиотеки sounddevice.

Код: Выделить всё

import sounddevice as sd
import numpy as np

class SoundLevelReader(QObject):
new_level = Signal(float)
def sd_callback(self, indata, frames, time, status):
# see https://en.wikipedia.org/wiki/Sound_pressure#Sound_pressure_level
rms = np.sqrt(np.mean(np.absolute(indata)**2))
ref = 20e-6 # reference sound pressure in air
db  = 20 * np.log10(rms / ref)
print("RMS:{:.6f}".format(rms))
print("REF:{:.6f}".format(ref))
print("RES:{:.6f}".format(db))
self.new_level.emit(db)

def main():
# ...
reader = SoundLevelReader()
with sd.InputStream(callback=reader.sd_callback, device=4, blocksize=5000):
sys.exit(app.exec())
В основном я ожидаю значения в децибелах в диапазоне от -60 до 0 (теоретически).
Однако, пытаясь соблюдать эталонное значение 20 мкП (), результирующие значения становятся слишком высокими — даже положительными:

Код: Выделить всё

RMS:0.000818
REF:0.000020
RES:32.236420

RMS:0.000455
REF:0.000020
RES:27.131226
Но если я полностью оставлю ссылку, значения покажутся более надежными:

Код: Выделить всё

RMS:0.013473
REF:0.000020
RES:-37.410866

RMS:0.003492
REF:0.000020
RES:-49.137325
Самое смешное, что я получаю те же значения, что и моя DAW, только когда использую в качестве коэффициента 10 вместо 20:

Код: Выделить всё

RMS:0.002143
REF:0.000020
RES:-26.689749

RMS:0.033025
REF:0.000020
RES:-14.811516
Вопрос:
Может кто-нибудь объяснить, как правильно рассчитать значение в децибелах на основе показаний, поступающих со звукового устройства< /код> библиотека Python? Я знаю, что существует много разных «вариантов» децибел. Моя главная цель — получить показания, которые в наши дни будут отображаться в DAW.

Подробнее здесь: https://stackoverflow.com/questions/792 ... el-reading
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»