废话不多说直接上代码

import array
import numpy as np
import soundfile as sf
from pydub import AudioSegment
from pydub.utils import get_array_type

def readMp3(filename):
    sound = AudioSegment.from_mp3(filename)
    left = sound.split_to_mono()[0]
    right = sound.split_to_mono()[1]

    bit_depth = left.sample_width * 8
    array_type = get_array_type(bit_depth)
    left_numeric_array = array.array(array_type, left._data)
    right_numeric_array = array.array(array_type, right._data)
    left_channel = np.array(left_numeric_array) / 32768
    right_channel = np.array(right_numeric_array) / 32768
    wave_data = np.vstack([left_channel, right_channel])
    sf.write('Test.wav',  wave_data.T, 44100)
    return left_channel, right_channel

test_path =  'F:\\Test.mp3'
data = readMp3(test_path)

需要注意的是AudioSegment要预先安装ffmpeg并添加到path,参考https://blog.csdn/csm201314/article/details/83247566

更多推荐

Python读取mp3数据