【问题标题】:How to install torch audio on Windows 10 conda?如何在 Windows 10 conda 上安装手电筒音频?
【发布时间】:2019-02-25 18:52:06
【问题描述】:

在安装了 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

【问题讨论】:

    标签: python windows pytorch sox opennmt


    【解决方案1】:

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

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

    RuntimeError: Error opening output memstream/temporary file

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

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

    TORCHAUDIO WINDOWS10 64位

    注意:我混合了一些类似unix的命令行语法,你可以使用文件资源管理器或其他任何东西

    初步安排

    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
    

    sox 库

    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 &lt;envname&gt;

    7.0。从github下载torchaudio

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

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

    $ 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 发生冲突的库,但“有效”。

    仅此而已。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,但我的 Torch 需要 GPU,而 Docker/VM 对 GPU 来说不是很好。另一方面,我认为我可以通过重写代码来解决问题,以便它使用其他库来引入音频。或者放弃 Torch 并使用 Tensorflow 等价物。
      • @LarsEricson 你是对的,不知怎的,我以为我已经看到 Docker 在带有 2 个卡(GPU + 集成)的 Windows 主机上使用,但现在找不到它......我建议查看keras / tensorflow,因为它们都提供了一些额外的便利方法来处理音频。此外,pytorch/audio 并不是那么花哨。您可以直接使用librosa 进行转换和I/O。
      猜你喜欢
      • 1970-01-01
      • 2020-03-19
      • 2016-11-20
      • 2022-12-30
      • 2020-12-07
      • 1970-01-01
      • 2011-09-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多