1

在安装了 PyTorch 的 Anaconda Python 3.6.7 中,在 Windows 10 上,我执行以下操作:

conda install -c conda-forge librosa
conda install -c groakat sox

然后从https://github.com/pytorch/audio重新下载

python setup.py install

它运行了一段时间并像这样结束:

torchaudio/torch_sox.cpp(3): fatal error C1083: Cannot open include file: 'sox.h': No such file or directory
error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.15.26726\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2

我正在尝试在 Windows 上重现这个 OpenNMT-py 语音训练演示:http: //opennmt.net/OpenNMT-py/speech2text.html

4

2 回答 2

3

我设法在 Windows 10 中用 sox 编译了 torchaudio,但有点棘手。

不幸的是 sox_effects 不可用,出现此错误:

RuntimeError: Error opening output memstream/temporary file

但是您可以使用其他 torchaudio 功能。

我为 Windows 10 64bit 遵循的步骤是:

TORCHAUDIO WINDOWS10 64位

注意:我混合了一些命令行 unix-like 语法,你可以使用文件资源管理器或其他

初步安排

  1. 下载 sox 资源

$ git clone git://git.code.sf.net/p/sox/code sox

  1. 下载其他sox源码获取lpc10
$ git clone https://github.com/chirlu/sox/tree/master/lpc10 sox2
$ cp -R sox2/lpc10 sox
  1. 重要安装 VisualStudio2019 和 BuildTools

lpc10 库

4.0。为 lpc10 创建一个 VisualStudio CMake 项目并构建它

Start window -> open local folder -> sox/lpc10
(it reads CMakeLists.txt automatically)
Build->build All

4.2. 将 lpc10.lib 复制到 sox

$ mkdir -p sox/src/out/build/x64-Debug
$ cp sox/lpc10/out/build/x64-Debug/lpc10.lib sox/src/out/build/x64-Debug

GSM库

5.0。为 libgsm 创建一个 CMake 项目,并像以前一样使用 lpc10 编译它

5.1。将 gsm.lib 复制到 sox

$ mkdir -p sox/src/out/build/x64-Debug
$ cp sox/libgsm/out/build/x64-Debug/gsm.lib sox/src/out/build/x64-Debug

袜子库

6.0。在VS中为sox创建一个CMake项目

6.1。编辑一些文件:

CMakeLists.txt:(最开始添加)

project(sox)

sox_i.h:(在 stdlib.h 下添加包含行)

#include <wchar.h> /* For off_t not found in stdio.h */
#define UINT16_MAX  ((int16_t)-1)
#define INT32_MAX  ((int32_t)-1)

sox.c:(在 time.h 下添加包含行)

`#include <sys/timeb.h>`

6.2. 使用 VisualStudio 构建 sox

6.3. 复制 python 可以找到它们的库,我使用conda 环境

$ cp sox/src/out/build/x64-Debug/libsox.lib envs\<envname>\libs\sox.lib
$ cp sox/src/out/build/x64-Debug/gsm.lib envs\<envname>\libs
$ cp sox/src/out/build/x64-Debug/lpc10.lib envs\<envname>\libs

火炬音响

$ activate <envname>

7.0。从 github 下载 torchaudio

$ git clone https://github.com/pytorch/audio thaudio

7.1。在“if IS_WHEEL...”的“else:”语句之后更新 setup.py

$ vi thaudio/setup.py

如果 IS_WHEEL...

else:
    audio_path = os.path.dirname(os.path.abspath(__file__))

    # Add include path for sox.h, I tried both with the same outcome
    include_dirs += [os.path.join(audio_path, '../sox/src')]
    #include_dirs += [os.path.join(audio_path, 'torchaudio/sox')]

    # Add more libraries

    #libraries += ['sox']
    libraries += ['sox','gsm','lpc10']

7.2. 从 torchaudio 编辑 sox.cpp,因为不允许使用动态数组:

$ vi thaudio/torchaudio/torch_sox.cpp

 //char* sox_args[max_num_eopts];
 char* sox_args[20]; //Value of MAX_EFFECT_OPTS

7.3. 构建和安装

$ cd thaudio
$ python setup.py install

它将打印出大量关于类型转换的警告以及一些与 MSVCRTD 冲突但“有效”的库。

就这样。

于 2019-10-31T10:45:32.377 回答
1

恐怕坏消息:如果不付出大量努力,您将无法在 Windows 上获得 PyTorch Audio。问题在于作为依赖项之一的libsox-dec。您可能已经安装了sox,但开发版本是一个完全不同的野兽。该错误正是抱怨缺少头文件。为 Windows 支持打开了一张票。

长话短说,将 libsox构建为 Windows 的静态库非常困难。你可以试试 cygwin 的运气。或者使用 Docker/VM。

于 2019-02-25T20:00:04.250 回答