0

我需要将文件作为字节读取才能使用该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

但是当我绘制这个时,wav_r我会得到这样的结果: wav_r

如果我使用读取相同的文件librosa.load并绘制它,我会得到这样的结果: 正确的 wav

它应该是什么wav_r样子。

那么关于如何正确地将字节转换为我可以使用的数组的任何想法?

谢谢!

PD:我也尝试过使用 int8 而不是 uint8,它给了我这个,但仍然不正确:

在此处输入图像描述

4

0 回答 0