0

0

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

聖光之護

聖光之護

发布时间:2025-12-29 14:37:36

|

681人浏览过

|

来源于php中文网

原创

如何正确使用 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)  # ❌ 错误:后两个参数被当作位置参数

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

Lateral App
Lateral App

整理归类论文

下载
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 到语音预处理流水线的重要基础。

相关专题

更多
pytorch是干嘛的
pytorch是干嘛的

pytorch是一个基于python的深度学习框架,提供以下主要功能:动态图计算,提供灵活性。强大的张量操作,实现高效处理。自动微分,简化梯度计算。预构建的神经网络模块,简化模型构建。各种优化器,用于性能优化。想了解更多pytorch的相关内容,可以阅读本专题下面的文章。

428

2024.05.29

Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习
Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习

PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。 使用Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。 PyTorch 的独特之处在于,它完全支持GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。

5

2025.12.22

excel制作动态图表教程
excel制作动态图表教程

本专题整合了excel制作动态图表相关教程,阅读专题下面的文章了解更多详细教程。

24

2025.12.29

freeok看剧入口合集
freeok看剧入口合集

本专题整合了freeok看剧入口网址,阅读下面的文章了解更多网址。

74

2025.12.29

俄罗斯搜索引擎Yandex最新官方入口网址
俄罗斯搜索引擎Yandex最新官方入口网址

Yandex官方入口网址是https://yandex.com;用户可通过网页端直连或移动端浏览器直接访问,无需登录即可使用搜索、图片、新闻、地图等全部基础功能,并支持多语种检索与静态资源精准筛选。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

207

2025.12.29

python中def的用法大全
python中def的用法大全

def关键字用于在Python中定义函数。其基本语法包括函数名、参数列表、文档字符串和返回值。使用def可以定义无参数、单参数、多参数、默认参数和可变参数的函数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

16

2025.12.29

python改成中文版教程大全
python改成中文版教程大全

Python界面可通过以下方法改为中文版:修改系统语言环境:更改系统语言为“中文(简体)”。使用 IDE 修改:在 PyCharm 等 IDE 中更改语言设置为“中文”。使用 IDLE 修改:在 IDLE 中修改语言为“Chinese”。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

18

2025.12.29

C++的Top K问题怎么解决
C++的Top K问题怎么解决

TopK问题可通过优先队列、partial_sort和nth_element解决:优先队列维护大小为K的堆,适合流式数据;partial_sort对前K个元素排序,适用于需有序结果且K较小的场景;nth_element基于快速选择,平均时间复杂度O(n),效率最高但不保证前K内部有序。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

12

2025.12.29

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

136

2025.12.29

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java 教程
Java 教程

共578课时 | 39.4万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号