社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

如何在python中找到wav文件的振幅?

Archit Sahu • 3 年前 • 1532 次点击  

我正在使用python中的librosa库进行wav文件分析。我曾经 librosa.load() 加载音频文件。显然,这个函数将wav文件加载到一个numpy数组中,其归一化振幅值在-1到1之间。但我需要得到实际的振幅值进行处理。我怎么能找到?

提前谢谢!

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/132992
 
1532 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Lukasz Tracewski
Reply   •   1 楼
Lukasz Tracewski    4 年前

你不能。正如亨德里克提到的,信号是数字的,WAV文件中的振幅不会告诉你任何关于实际声波振幅/声功率的信息。从它被数字化为WAV的那一刻起,它就完全消失了。

也就是说,你可以计算出响度,一种对声功率的相对感知。如果您正在处理人类听觉系统,建议的方法之一是:

  1. 使用树皮鳞片(树皮鳞片更好地反映我们的听力)。
  2. 计算每个箱子的能量。
  3. (可选)按总和进行归一化。

如果你不想自己计算它,请查看。 YAAFE .

Hendrik
Reply   •   2 楼
Hendrik    4 年前

你说得对 利布罗萨 始终将样本标准化为单声道 [-1:1] (还有22050赫兹)。这就是说,它是数字音频,所以可以与任何你想得到不同规模的乘法。如果你坚持的话,你的样品是在 -2^15 2^15 ,只需乘以 2^15 .它的意思基本相同。

除了将音频编码格式的一个特性拖到数据中之外,您不会获得任何东西。

也就是说,如果这是你想要的,你可以使用 PySoundFile 这样地:

import soundfile as sf

y, sr = sf.read('existing_file.wav', dtype='int16')

参数 dtype='int16' 告诉库对每个样本采用有符号的16位格式。