我需要将文件作为字节读取才能使用该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
但是现在我需要将这个字节数组转换为我可以使用的东西,我正在这样做(就像在这里看到的那样):
wav_r = np.fromstring(wav_bytes, dtype=np.uint8)
它wav_bytes
是来自的 pcm_data read_wav
。
如果我使用读取相同的文件librosa.load
并绘制它,我会得到这样的结果:
它应该是什么wav_r
样子。
那么关于如何正确地将字节转换为我可以使用的数组的任何想法?
谢谢!
PD:我也尝试过使用 int8 而不是 uint8,它给了我这个,但仍然不正确: