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小时内与您取得联系。