我正在尝试分析python中的wav文件并从wav获取rms值。我正在使用audioop.rms从wav获取值。我去做了这个,我不知道片段和宽度代表什么。我是audioop的新手,希望有人能解释一下。我也想知道在python中是否有更好的方法可以做到这一点。
更新:我做了一些研究,发现片段代表wav文件。我仍然需要弄清楚宽度意味着什么。
答案 0 :(得分:0)
片段只是一小部分数据。宽度是数据组织的大小(以字节为单位)。例如,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,因此我必须将width设置为2。对于片段来说,alsa捕获的只是数据。在您的情况下,wav文件就是您的数据。