我正在尝试在 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 中很好,但我不可能在那里训练它,所以我必须使用可视化代码......
在 TorchAudio v2.1 中,sox 绑定切换为动态。这意味着用户需要以某种方式单独安装 libsox,其中一种方法是
pip install sox
。
首先,请注意第二条错误消息不是来自 torchaudio,并且它不准确。 TorchAudio 不依赖于外部
sox
包。
TorchAudio 在 Windows 上提供有限的 IO 功能,而 libsox 则不提供 使用VS2019在Windows上编译。这种情况正在得到解决,但从 v0.13 开始,Windows 用户需要解决方法。
一个简单的方法是使用其他库(如 soundfile)并将解码后的 NumPy NdArray 对象转换为 PyTorch Tensor。
另一种方法是安装 FFmpeg,并使用
torchaudio.io.StreamReader
。您可以按照这样的教程编写自己的加载函数。
要解决您的问题,请执行以下操作
安装普通
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