How to create a numpy array from a pydub AudioSegment?

后端 未结 2 637
无人及你
无人及你 2021-02-18 16:43

I\'m aware of the following question: How to create a pydub AudioSegment using an numpy array?

My question is the right opposite. If I have a pydub AudioSegment how can

2条回答
  •  灰色年华
    2021-02-18 17:14

    Pydub has a facility for getting the audio data as an array of samples, it is an array.array instance (not a numpy array) but you should be able to convert it to a numpy array relatively easily:

    from pydub import AudioSegment
    sound = AudioSegment.from_file("sound1.wav")
    
    # this is an array
    samples = sound.get_array_of_samples()
    

    You may be able to create a numpy variant of the implementation though. That method is implemented pretty simply:

    def get_array_of_samples(self):
        """
        returns the raw_data as an array of samples
        """
        return array.array(self.array_type, self._data)
    

    Creating a new audio segment from a (modified?) array of samples is also possible:

    new_sound = sound._spawn(samples)
    

    The above is a little hacky, it was written for internal use within the AudioSegment class, but it mainly just figures out what type of audio data you're using (array of samples, list of samples, bytes, bytestring, etc). It's safe to use despite the underscore prefix.

提交回复
热议问题