首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用Python获取音频的声音级别(dB)?

如何用Python获取音频的声音级别(dB)?
EN

Stack Overflow用户
提问于 2022-03-13 08:02:31
回答 1查看 1.2K关注 0票数 0

我想知道如何在dB中获得声压级。输入应是来自PC (实时音频信号)麦克风的信号.输出是输入信号的实时声压级.这是我的简单密码。

代码语言:javascript
运行
复制
import pyaudio
import numpy as np
import wave
from threading import Thread
from pysine import sine
import math
import time


def print_sound():

   CHUNK = 1024
   FORMAT = pyaudio.paInt16
   CHANNELS = 1
   RATE = 44100
   pa = pyaudio.PyAudio()
   stream = pa.open(format=FORMAT,
                     channels=CHANNELS,
                     rate=RATE,
                     input=True,
                     frames_per_buffer=CHUNK)
   buffer = []
   while True:
      string_audio_data = stream.read(CHUNK) 
      audio_data = np.frombuffer(string_audio_data, np.int16)
      volume_norm = np.linalg.norm(audio_data)*10
      dfft = 10.*np.log10(abs(np.fft.rfft(audio_data)))
      print(int(volume_norm))
print_sound()

这个错误是

Warning (from warnings module): File "C:\Users\Admin\1.py", line 27 dfft = 10.*np.log10(abs(np.fft.rfft(audio_data))) RuntimeWarning: divide by zero encountered in log10

EN

回答 1

Stack Overflow用户

发布于 2022-03-17 10:00:57

正如@Thierry上面所指出的,如果不使用实际测量来校准扬声器/麦克风系统,就不可能得到dB SPL的答案。报告相对级别是可能的(就像您对代码片段所做的那样)。

这些是报告绝对dB SPL所需的最低要求:

  1. 动态范围,你的模数转换器(最大/分钟电压范围)-什么是最响亮的声音,可以由电脑的模数转换器。
  2. ,你的麦克风的灵敏度(mV/Pa)。对于X Pascals压力的声音,produced
  3. speaker校准了多少mV (或与样品相关的测量)?给出了Y rms的输入信号,输出的声音将是多少Pa (以及dB SPL)?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71454890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档