我需要将文件作为字节读取以使用webrtcvad
库。
我在github:
def read_wave(path):
"""Reads a .wav file.
Takes the path, and returns (PCM audio data, sample rate).
"""
with contextlib.closing(wave.open(path, 'rb')) as wf:
num_channels = wf.getnchannels()
assert num_channels == 1
sample_width = wf.getsampwidth()
assert sample_width == 2
sample_rate = wf.getframerate()
assert sample_rate in (8000, 16000, 32000)
pcm_data = wf.readframes(wf.getnframes())
return pcm_data, sample_rate
但是现在我需要将这个字节数组转换成我可以使用的字节,我这样做(就像在here上看到的那样):
wav_r = np.fromstring(wav_bytes, dtype=np.uint8)
其中wav_bytes
来自read_wav
的pcm_data。
如果我使用librosa.load
读取相同的文件并绘制它,我会得到这样的结果:
这就是wav_r
的样子。
所以关于如何正确地将字节转换为可以使用的数组的任何想法?
谢谢!
PD:我也尝试过使用int8而不是uint8,它给了我这个,但仍然不正确: