python中的wave包处理wav格式的音频

801 阅读1分钟

def read_local_voice_file(path):
    """从本地音频文件读取出语音流"""
    logger.debug("The voice file path is: {}".format(path))
    with wave.open(path, "rb") as f:
        # 读取格式信息
        # 一次性返回所有的WAV文件的格式信息,它返回的是一个组元(tuple):声道数, 量化位数(byte单位), 采
        # 样频率, 采样点数, 压缩类型, 压缩类型的描述。wave模块只支持非压缩的数据,因此可以忽略最后两个信息
        params = f.getparams()
        nchannels, sampwidth, framerate, nframes = params[:4]

        # 读取声音数据,传递一个参数指定需要读取的长度(以取样点为单位)
        str_data = f.readframes(nframes)
        codec_format = {"sample_rate": framerate, "bit_depth": sampwidth * 8, "num_of_channel": nchannels}

        return str_data, codec_format