次の質問を認識しています: numpy 配列を使用して pydub AudioSegment を作成する方法は?
私の質問は正反対です。pydub AudioSegment がある場合、それを numpy 配列に変換するにはどうすればよいですか?
scipy フィルターなどを使用したいと思います。AudioSegment の生データの内部構造がどのようなものかは、私にはよくわかりません。
既存の回答はどれも完璧ではなく、再形成とサンプル幅がありません。オーディオを 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