28

次の質問を認識しています: numpy 配列を使用して pydub AudioSegment を作成する方法は?

私の質問は正反対です。pydub AudioSegment がある場合、それを numpy 配列に変換するにはどうすればよいですか?

scipy フィルターなどを使用したいと思います。AudioSegment の生データの内部構造がどのようなものかは、私にはよくわかりません。

4

4 に答える 4

4

既存の回答はどれも完璧ではなく、再形成とサンプル幅がありません。オーディオを np の標準オーディオ表現に変換するのに役立つこの関数を作成しました。

def pydub_to_np(audio: pydub.AudioSegment) -> (np.ndarray, int):
    """
    Converts pydub audio segment into np.float32 of shape [duration_in_seconds*sample_rate, channels],
    where each value is in range [-1.0, 1.0]. 
    Returns tuple (audio_np_array, sample_rate).
    """
    return np.array(audio.get_array_of_samples(), dtype=np.float32).reshape((-1, audio.channels)) / (
            1 << (8 * audio.sample_width - 1)), audio.frame_rate

于 2021-04-02T16:23:16.670 に答える