全网整合营销服务商

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

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

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

本文详解 librosa 0.10.1+ 版本中 `librosa.resample` 的调用规范,重点解决因参数传递方式错误(如误用位置参数)导致的 “takes 1 positional argument but 3 were given” 报错,并提供完整、健壮的多通道音频重采样实践代码。

在使用 librosa 对音频进行重采样(如将原始采样率统一为 16 kHz 以适配 wav2vec2 模型输入)时,一个常见且易被忽视的陷阱是:新版 librosa(≥0.8.0,尤其 0.10.1+)已将 resample 函数改为仅接受关键字参数(keyword-only arguments)。这意味着 orig_sr 和 target_sr 必须显式以命名参数形式传入,而不能再像旧版那样作为位置参数顺序传递。

你遇到的报错:

resample() takes 1 positional argument but 3 were given

正是源于以下错误写法:

librosa.resample(audio_signal, original_sr, 16000)  # ❌ 错误:后两个参数被当作位置参数

而正确调用方式必须严格遵循函数签名(注意 * 分隔符):

librosa.resample(y=audio_signal, orig_sr=original_sr, target_sr=16000)  # ✅ 正确
# 或简写(y 是第一个参数,可省略名称;但 orig_sr/target_sr 必须带名)
librosa.resample(audio_signal, orig_sr=original_sr, target_sr=16000)  # ✅ 推荐

以下是修复后的完整、生产就绪的重采样代码(兼容单/双通道,含异常处理与类型安全):

import librosa
import numpy as np

# 假设 database['audio'] 是 list of np.ndarray(每个元素为 waveform),database['psr'] 是原始采样率列表
new_sr = []
resampled_audios = []

for i, (audio_signal, original_sr) in enumerate(zip(database['audio'], database['psr'])):
    try:
        # 确保输入为 numpy 数组且为浮点型(librosa.resample 要求)
        audio_signal = np.asarray(audio_signal, dtype=np.float64)

        # 处理多通道:逐通道重采样并堆叠
        if audio_signal.ndim > 1:
            resampled_channels = []
            for ch in audio_signal:
                ch_res = librosa.resample(ch, orig_sr=original_sr, target_sr=16000)
                resampled_channels.append(ch_res)
            resampled_audio = np.stack(resampled_channels, axis=0)
        else:
            # 单通道直接重采样
            resampled_audio = librosa.resample(audio_signal, orig_sr=original_sr, target_sr=16000)

        resampled_audios.append(resampled_audio)
        new_sr.append(16000)

    except Exception as e:
        print(f"⚠️  索引 {i} 音频重采样失败(原始采样率 {original_sr} Hz): {e}")
        # 可选:保留原音频或跳过,此处设为 None 便于后续排查
        resampled_audios.append(None)
        new_sr.append(None)

# 更新数据库
database['audio'] = resampled_audios
database['newsr'] = new_sr

关键注意事项

  • 永远显式指定 orig_sr= 和 target_sr= —— 这是避免报错的核心;
  • librosa.resample 默认使用高质量重采样器(soxr_hq),无需额外配置即可满足 ASR 模型训练需求;
  • 若原始音频为整型(如 int16),务必先转为 float32/float64,否则可能引发数值溢出或静音;
  • 对于立体声等多通道音频,不可直接对整个二维数组调用 resample(它不支持 batch 维度),必须按通道循环处理;
  • 如需更高性能批量处理,建议改用 torchaudio.transforms.Resample(PyTorch 原生,GPU 加速支持)替代。

掌握这一参数规范,不仅能解决当前报错,更是安全集成 librosa 到语音预处理流水线的重要基础。


# word  # app  # ios  # pytorch  # batch  # 整型  # 循环  # float32  # 报错  # 采样率  # 这是  # 这一  # 第一个  # 浮点  # 设为  # 而不  # 更高  # 可选 


相关文章: 沈阳制作网站公司排名,沈阳装饰协会官方网站?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  如何在IIS服务器上快速部署高效网站?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  如何将凡科建站内容保存为本地文件?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  建站之星后台密码遗忘?如何快速找回?  济南专业网站制作公司,济南信息工程学校怎么样?  广德云建站网站建设方案与建站流程优化指南  合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  C#怎么创建控制台应用 C# Console App项目创建方法  装修招标网站设计制作流程,装修招标流程?  上海网站制作网站建设公司,建筑电工证网上查询系统入口?  整人网站在线制作软件,整蛊网站退不出去必须要打我是白痴才能出去?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  独立制作一个网站多少钱,建立网站需要花多少钱?  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之家VIP精选网站模板与SEO优化教程整合指南  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  如何选择服务器才能高效搭建专属网站?  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  建站之星微信建站一键生成小程序+多端营销系统  专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何选择香港主机高效搭建外贸独立站?  存储型VPS适合搭建中小型网站吗?  如何在香港免费服务器上快速搭建网站?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  已有域名如何免费搭建网站?  胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?  浅析上传头像示例及其注意事项  如何快速上传建站程序避免常见错误?  网站制作软件有哪些,制图软件有哪些?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何快速搭建高效WAP手机网站吸引移动用户?  手机网站制作与建设方案,手机网站如何建设?  打鱼网站制作软件,波克捕鱼官方号怎么注册?  如何在阿里云购买域名并搭建网站?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  建站VPS选购需注意哪些关键参数?  如何快速打造个性化非模板自助建站?  如何通过宝塔面板实现本地网站访问?  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  如何解决ASP生成WAP建站中文乱码问题?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何在Windows 2008云服务器安全搭建网站? 

您的项目需求

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