torchaudio.load() 和 librosa.load() 的返回值区别

问题

之前都在使用librosa加载音频数据,今天看到一段代码是用torchaudio加载的音频,发现torchaudio加载的数据和librosa返回的结果不一致。

查看资料后做出以下对比:

torchaudio.load 函数返回一个包含两个张量的元组:

  • 音频数据张量,形状为 (channels, samples)
  • 采样率

而 librosa.load 函数返回:

  • 音频数据numpy数组,形状为 (samples,)
  • 采样率

主要的区别有:

  • torchaudio 返回的是多通道数据,而 librosa 返回的是单通道数据。如果原始音频是多通道的,librosa 会自动将其转换为单通道。
  • torchaudio 返回的音频数据是一个张量,而 librosa 返回的是numpy数组。
python 复制代码
import librosa
import torch
import torchaudio

audio_path = "../data/audio/4324107e-56bc-5ef4-b78b-d524d192b3fc/4324107e-56bc-5ef4-b78b-d524d192b3fc.mp3"
audio, sr = librosa.load(audio_path, sr=16000)
audio1, sr1 = torchaudio.load(audio_path, format='mp3')
print(audio.shape)
print(audio1.shape)

# 处理后数据一致
transform = torchaudio.transforms.Resample(sr1, 16000)
audio1 = transform(torch.mean(audio1, dim=0, keepdim=True))
print(audio.shape)
print(audio1.shape)
复制代码
(11448320,) 16000
torch.Size([2, 34344959]) 48000

(11448320,)
torch.Size([1, 11448320])
相关推荐
北京耐用通信7 分钟前
全域适配工业场景耐达讯自动化Modbus TCP 转 PROFIBUS 网关轻松实现以太网与现场总线互通
网络·人工智能·网络协议·自动化·信息与通信
火山引擎开发者社区11 分钟前
TRAE × 火山引擎 Supabase:为你的 AI 应用装上“数据引擎”
人工智能
小a彤38 分钟前
GE 在 CANN 五层架构中的位置
人工智能·深度学习·transformer
前端若水1 小时前
会话管理:创建、切换、删除对话历史
前端·人工智能·python·react.js
Upsy-Daisy1 小时前
AI Agent 项目学习笔记(八):Tool Calling 工具调用机制总览
人工智能·笔记·学习
企学宝1 小时前
企学宝5月专题课程丨《OpenClaw AI 智能体实战营:从零基础部署到全场景自动化落地》
人工智能·ai·企业培训
冬奇Lab2 小时前
让 AI Agent 更可靠:Harness Engineering 与多 Agent 系统工程实践
人工智能·llm·agent
放下华子我只抽RuiKe52 小时前
React 从入门到生产(四):自定义 Hook
前端·javascript·人工智能·深度学习·react.js·自然语言处理·前端框架
想你依然心痛2 小时前
HarmonyOS 6(API 23)实战:基于悬浮导航、沉浸光感与HMAF的“文思智脑“——PC端AI智能体沉浸式智能写作工作台
人工智能·ar·harmonyos·ai写作
冬奇Lab2 小时前
一天一个开源项目(第108篇):Andrej Karpathy Skills - 用一个 CLAUDE.md 文件修复 LLM 编码的四个顽疾
人工智能·开源·资讯