python - FFT 的最佳方法 - 最大。值 FFT - Python
问题描述
我正在尝试用 Python 编写的树莓派构建一个 SPL 测量设备。我录制了一个声音,然后我做了 FFT,但我没有正确的对数值。
fs_rate, signal = wavfile.read(filename)
l_audio = len(signal.shape)
if l_audio == 2:
signal = signal.sum(axis=1) / 2
N = signal.shape[0]
secs = (N / float(fs_rate))
Ts = 1.0/fs_rate # sampling interval in time
t = scipy.arange(0, secs, Ts) # time vector as scipy arange field / numpy.ndarray
FFT = abs(scipy.fft(signal))
FFT_side = FFT[range(N//2)] # one side FFT range
freqs = scipy.fftpack.fftfreq(signal.size, t[1]-t[0])
fft_freqs = np.array(freqs)
freqs_side = freqs[range(N//2)] # one side frequency range
fft_freqs_side = np.array(freqs_side)
fft_log = 94 + np.log10((FFT_side/(1.79*10**308)))
print("Type: %s" % (FFT_side.dtype))
上面你可以看到我正在使用的 FFT 代码。我有两个问题:
- FFT_side 是一个 float64 值,最大范围是多少?
我的处理器是 armv7l 32 位。我在互联网上发现这是最大范围 1.7976931348623157e+308,对吗?
- 如何在不知道麦克风两端电压的情况下获得 dB 图?我想做 value_read/max_float64 但这根本不起作用。
解决方案
推荐阅读
- python - 如何在 Python 3 中删除字符串中的特殊字符?
- c++ - 从标准输入读取时子进程挂起(fork/dup2 竞争条件)?
- javascript - Redux-Saga 以某种方式在不经过 saga 的情况下更新 reducer
- sql - 创建一个 NZPLSQL 以查找作为键的一组字段的 min(date) 和 max(date)
- orbeon - 热创建orbeon docker容器?
- python - 来自透明的python matplotlib热图颜色条
- ms-access - Access VBA - 重命名文件名称中的句点
- tableau-api - 如何为每个度量分配一个单独的标记样式?
- c++ - c++中数组的未定义错误?
- ios - SceneKit - 渲染节点始终具有相同的屏幕空间大小