如何在Windows 10 conda上安装手电筒音频?

时间:2019-02-25 18:52:06

标签: python windows pytorch sox opennmt

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

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 http://opennmt.net/OpenNMT-py/speech2text.html

上重现此OpenNMT-py语音培训演示。

2 个答案:

答案 0 :(得分:1)

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

长话短说,构建 libsox 作为Windows的静态库非常困难。您可以尝试使用Cygwin的运气。或使用Docker / VM。

答案 1 :(得分:1)

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

不幸的是,sox_effects不可用,此错误显示出来:

RuntimeError: Error opening output memstream/temporary file

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

对于Windows 10 64bit,我遵循的步骤是:

TORCHAUDIO WINDOWS10 64位

注意:我混合了一些类似于Unix的命令行语法,您可以使用文件资源管理器或其他任何方式

初步安排

  1. 下载袜子来源

$ 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 lib

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

sox lib

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构建袜筒

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

torchaudio

$ 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发生库冲突的警告,但还是可以的。

仅此而已。