我正在尝试用 python 分析一个 wav 文件并从 wav 中获取 rms 值。我正在使用 audioop.rms 从 wav 中获取值。我去做这个,我不知道fragment和width代表什么。我是 audioop 的新手,希望有人能解释一下。我也想知道在 python 中是否有更好的方法来执行此操作。
更新:我做了一些研究,发现 fragment 代表 wav 文件。我仍然需要弄清楚宽度是什么意思。
最佳答案
片段只是一大块数据。宽度是组织数据的字节大小。例如 8 位数据的宽度为 1,16 位数据的宽度为 2,依此类推。
```
import alsaaudio, audioop
self.input = alsaaudio.PCM(alsaaudio.PCM_CAPTURE,alsaaudio.PCM_NONBLOCK)
self.input.setchannels(1)
self.input.setrate(8000)
self.input.setformat(alsaaudio.PCM_FORMAT_S16_LE)
self.input.setperiodsize(300)
length, data = self.input.read()
avg_i = audioop.avg(data,2)
``` 在示例中,我将 alsa 采集卡设置为使用 S16_LE 签名的 16 位 Little Endian,因此我必须将宽度设置为 2。因为片段只是 alsa 采集的数据。在您的情况下,wav 文件就是您的数据。
关于python-3.x - audioop.rms(fragment, width)中的fragment和width是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47253648/