我正在尝试测量导入和导出wav文件.优选地,第一个和最后5秒左右.我基本上试图分配一个数字值,意思是“这首歌有一个缓慢的引导”或“这首歌有一个突然结束”.
我的想法是得到dB值的斜率,但我似乎找不到一个能给我dB值的linux命令行工具.我知道它们可以被测量,因为Audacity有一个波形(db)视图.
基本上我正在寻找一种方法来收集数据点来复制这个图,这样我就可以得到斜率.
编辑 – 在java工作
解决方法:
我不知道有任何命令行工具可以做到这一点,但使用scipy库编写具有此功能的python脚本相当简单.
我们可以使用scipy.io.wav文件来执行文件IO,然后自己计算dB值(请注意,这些值不一定是标准dB值,因为这些将取决于您的扬声器和音量设置).
首先我们得到文件:
from scipy.io.wavfile import read
samprate, wavdata = read('file.wav')
然后,我们将文件拆分为块,其中块的数量取决于您想要测量卷的精确程度:
import numpy as np
chunks = np.array_split(wavdata, numchunks)
最后,我们计算每个块的体积:
dbs = [20*log10( sqrt(mean(chunk**2)) ) for chunk in chunks]
其中dbs现在是文件每个块的dB值列表(同样,不一定是真正的SPL声级).
您还可以使用重叠块等以不同方式轻松拆分数据.
标签:java,linux,audio,command-line
来源: https://codeday.me/bug/20190901/1784463.html