全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

如何正确使用 librosa.resample 进行音频重采样(16kHz)

librosa 0.10+ 版本中 `librosa.resample` 已改为仅支持关键字参数(keyword-only),必须显式传入 `orig_sr` 和 `target_sr`,否则会报错“takes 1 positional argument but 3 were given”。本文详解正确调用方式、多通道处理技巧及实用注意事项。

在使用 wav2vec2 等预训练模型进行语音微调时,确保所有音频统一为 16 kHz 采样率 是关键前提。而从 torchaudio.load() 加载的音频往往原始采样率各异(如 44.1 kHz、48 kHz 或 8 kHz),需通过重采样对齐。许多用户在迁移到较新版本的 librosa(≥0.10.0)后,因沿用旧版位置参数写法(如 librosa.resample(y, sr, 16000))触发如下错误:

TypeError: resample() takes 1 positional argument but 3 were given

这是因为新版 librosa.resample 显式要求所有参数(除音频数组 y 外)必须以命名参数形式传入,其函数签名如下:

def resample(
    y: np.ndarray,
    *,
    orig_sr: float,
    target_sr: float,
    res_type: str = "soxr_hq",
    fix: bool = True,
    scale: bool = False,
    axis: int = -1,
    **kwargs
) -> np.ndarray:

其中 * 表示其后所有参数均为 keyword-only —— 这是导致错误的根本原因。

✅ 正确用法(适配 mono 与 stereo):

import librosa
import numpy as np

# 假设 database['audio'] 是 list of 1D/2D numpy arrays,database['psr'] 是对应原始采样率列表
new_audios = []
new_sr = []

for i, (audio_signal, original_sr) in enumerate(zip(database['audio'], database['psr'])):
    audio_signal = np.asarray(audio_signal)

    # 处理单通道(mono)
    if audio_signal.ndim == 1:
        resampled = librosa.resample(
            y=audio_signal,
            orig_sr=original_sr,
            target_sr=16000
        )

    # 处理多通道(stereo 或更多),逐通道重采样并保持形状
    elif audio_signal.ndim == 2:
        resampled_channels = []
        for ch in audio_signal:
            ch_resampled = librosa.resample(
                y=ch,
                orig_sr=original_sr,
                target_sr=16000
            )
            resampled_channels.append(ch_resampled)
        resampled = np.stack(resampled_channels, axis=0)

    else:
        raise ValueError(f"Unsupported audio dimensionality: {audio_signal.ndim} at index {i}")

    new_audios.append(resampled)
    new_sr.append(16000)

# 更新数据字典
database['audio'] = new_audios
database['newsr'] = new_sr

⚠️ 注意事项与最佳实践:

  • 不要混用 torchaudio 与 librosa 的重采样逻辑:torchaudio.transforms.Resample 更高效且原生支持 Tensor,若全程使用 PyTorch 生态,推荐优先采用:

    from torchaudio.transforms import Resample
    resampler = Resample(orig_freq=original_sr, new_freq=16000)
    resampled_tensor = resampler(speech_array)  # speech_array: torch.Tensor, shape [C, T]
  • 避免 librosa.resample 对长音频的内存峰值:该函数内部会将信号上采样至 LCM 频率,对超长语音(>30s)可能引发 OOM。此时建议分段处理或改用 scipy.signal.resample_poly(需手动设计抗混叠滤波器)。

  • res_type="soxr_hq" 是默认高质量选项,但依赖 soxr 库(需 pip install pysoundfile 或 conda install -c conda-forge soxr)。若环境受限,可降级为 "kaiser_best" 或 "polyphase",精度略低但无额外依赖。

  • 始终验证重采样结果:检查输出长度是否合理(近似按 len_in * 16000 / orig_sr 缩放),并用 librosa.get_duration(y=resampled, sr=16000) 校验时长一致性。

总结:librosa.resample 的关键字参数强制策略提升了 API 可读性与健壮性。只需将 librosa.resample(y, sr, 16000) 统一替换为 librosa.resample(y, orig_sr=sr, target_sr=16000),即可彻底解决报错,并为 wav2vec2 微调构建稳定、合规的 16 kHz 音频流水线。


# word  # app  # ai  # ios  # pytorch  # elif  # scipy  # pip  # conda  # signal  # 采样率  # 报错  # 这是  # 只需  # 均为  # 高质量  # 会将  # 并为  # 这是因为  # 则会 


相关文章: 公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  南平网站制作公司,2025年南平市事业单位报名时间?  如何通过万网虚拟主机快速搭建网站?  如何快速使用云服务器搭建个人网站?  阿里云网站制作公司,阿里云快速搭建网站好用吗?  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  香港网站服务器数量如何影响SEO优化效果?  建站之星代理平台如何选择最佳方案?  如何基于PHP生成高效IDC网络公司建站源码?  建站之星代理商如何保障技术支持与售后服务?  如何在IIS7上新建站点并设置安全权限?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  如何快速生成凡客建站的专业级图册?  Bpmn 2.0的XML文件怎么画流程图  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  公众号网站制作网页,微信公众号怎么制作?  如何使用Golang table-driven基准测试_多组数据测量函数效率  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  家庭建站与云服务器建站,如何选择更优?  建站之星代理如何获取技术支持?  如何通过cPanel快速搭建网站?  Python文件管理规范_工程实践说明【指导】  小型网站建站如何选择虚拟主机?  长沙企业网站制作哪家好,长沙水业集团官方网站?  如何快速配置高效服务器建站软件?  Thinkphp 中 distinct 的用法解析  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  高端建站如何打造兼具美学与转化的品牌官网?  攀枝花网站建设,攀枝花营业执照网上怎么年审?  魔毅自助建站系统:模板定制与SEO优化一键生成指南  如何高效生成建站之星成品网站源码?  建站主机系统SEO优化与智能配置核心关键词操作指南  浙江网站制作公司有哪些,浙江栢塑信息技术有限公司定制网站做的怎么样?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  建站之星如何快速更换网站模板?  如何用景安虚拟主机手机版绑定域名建站?  制作假网页,招聘网的薪资待遇,会有靠谱的吗?一面试又各种折扣?  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  网站制作企业,网站的banner和导航栏是指什么?  如何在万网自助建站中设置域名及备案?  如何在云主机快速搭建网站站点?  如何在局域网内绑定自建网站域名?  建站之星如何实现五合一智能建站与营销推广?  如何用5美元大硬盘VPS安全高效搭建个人网站?  建站主机选虚拟主机还是云服务器更好?  如何做静态网页,sublimetext3.0制作静态网页?  制作电商网页,电商供应链怎么做? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。