要支持解码“mp3”音频文件,请安装“sox”

问题描述 投票:0回答:2

我正在尝试在 wav2vec 2 模型上使用迁移学习来研究 ASR 模型。 无论如何,当我不想显示或修改音频文件时,我就会遇到这个问题

def prepare_dataset(batch):
    audio = batch["audio"]

    # batched output is "un-batched"
    batch["input_values"] = processor(audio["array"], sampling_rate=audio["sampling_rate"]).input_values[0]
    batch["input_length"] = len(batch["input_values"])
    
    with processor.as_target_processor():
        batch["labels"] = processor(batch["sentence"]).input_ids
    return batch
common_voice_train = common_voice_train.map(prepare_dataset, remove_columns=common_voice_train.column_names)
common_voice_test = common_voice_test.map(prepare_dataset, remove_columns=common_voice_test.column_names)

错误:

运行时错误:后端“sox_io”不是可用后端之一:['soundfile']。 ImportError:要支持解码“mp3”音频文件,请安装“sox”。

这是我的 pytorch 和 torchaudio 版本:

import torch
import torchaudio

print(torch.__version__)
print(torchaudio.__version__)
1.13.1+cu117
0.13.1+cu117

我真的需要帮助解决这个问题,这是我初级项目的一部分! )':

我尝试安装 pytorch 并安装不同版本,但没有任何效果,代码正在运行。在 Colab 中很好,但我不可能在那里训练它,所以我必须使用可视化代码......

python pytorch sox soundfile torchaudio
2个回答
0
投票

TorchAudio v2.1-(于 2023 年 9 月添加)

在 TorchAudio v2.1 中,sox 绑定切换为动态。这意味着用户需要以某种方式单独安装 libsox,其中一种方法是

pip install sox

TorchAudio v2.1 之前(原始答案)

首先,请注意第二条错误消息不是来自 torchaudio,并且它不准确。 TorchAudio 不依赖于外部

sox
包。

TorchAudio 在 Windows 上提供有限的 IO 功能,而 libsox 则不提供 使用VS2019在Windows上编译。这种情况正在得到解决,但从 v0.13 开始,Windows 用户需要解决方法。

一个简单的方法是使用其他库(如 soundfile)并将解码后的 NumPy NdArray 对象转换为 PyTorch Tensor。

另一种方法是安装 FFmpeg,并使用

torchaudio.io.StreamReader
。您可以按照这样的教程编写自己的加载函数。

https://pytorch.org/audio/0.13.1/tutorials/streamreader_basic_tutorial.html#sphx-glr-tutorials-streamreader-basic-tutorial-py


0
投票

要解决您的问题,请执行以下操作

安装普通

sox

pip install sox

或者(如果您不在 fedora/rhel 上,请将

dnf
更改为
apt
,例如在 ubuntu 上)

sudo dnf install sox

如果这没有帮助,您可能仍然需要安装 SoX 的开发二进制文件。

sudo dnf install sox-devel

为了让 TorchAudio 工作,需要在你的库中找到 libsox.so

您可以检查libsox.so在哪里使用

find / -name libsox.so 2>/dev/null
© www.soinside.com 2019 - 2024. All rights reserved.