You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用torchaudio实现与ffmpeg指定命令一致的音频重采样效果?

实现与指定ffmpeg命令一致效果的torchaudio代码(2.0.2版本)

你的目标ffmpeg命令ffmpeg -i source -ac 1 -ar 16000 target包含两个核心操作:

  • 将音频转为单声道(-ac 1)
  • 重采样至16000Hz(-ar 16000)

你当前的torchaudio代码只完成了重采样,缺少单声道转换步骤,以下是补全后的完整代码:

import torch
import torchaudio

# 加载音频文件,返回波形(形状为[通道数, 采样点数])和原采样率
waveform, sr = torchaudio.load(filepath)

# 将多声道音频转换为单声道(ffmpeg默认采用通道均值的方式合并)
if waveform.size(0) > 1:
    waveform = torch.mean(waveform, dim=0, keepdim=True)

# 初始化重采样变换并执行重采样
transform = torchaudio.transforms.Resample(orig_freq=sr, new_freq=16000)
waveform = transform(waveform)

关键细节说明:

  • ffmpeg的-ac 1默认会对多声道音频取通道均值来生成单声道,代码中用torch.mean(waveform, dim=0, keepdim=True)实现了相同逻辑
  • 保留keepdim=True是为了维持波形的维度结构(保持[1, 采样点数]的形状,和torchaudio的张量格式一致)

内容的提问来源于stack exchange,提问作者hsiaomichiu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:52:07