Как установить звук факела на Windows 10 conda?
В Anaconda Python 3.6.7 с установленным PyTorch, в 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
Я пытаюсь воспроизвести это демонстрационное упражнение OpenNMT-py в Windows: http://opennmt.net/OpenNMT-py/speech2text.html
1 ответ
Боюсь, плохие новости: вы не получите PyTorch Audio для Windows без значительных усилий. Проблема в libsox-dec, который является одной из зависимостей. Возможно, вы установили sox, но версия для разработки - совершенно другой зверь. Ошибка точно жалуется на отсутствие заголовочного файла. Открыт тикет на поддержку Windows.
Короче говоря, создать libsox как статическую библиотеку для Windows сложно. Вы можете попытать счастья с Cygwin. Или используйте Docker / VM.
Мне удалось скомпилировать torchaudio с sox в Windows 10, но это немного сложно.
К сожалению, sox_effects нельзя использовать, появляется эта ошибка:
RuntimeError: Error opening output memstream/temporary file
Но вы можете использовать другие функции torchaudio.
Для 64-битной Windows 10 я выполнил следующие шаги:
TORCHAUDIO WINDOWS10 64бит
Примечание: я смешиваю некоторые командные строки с unix-подобным синтаксисом, вы можете использовать файловый проводник или что-то еще
предварительные договоренности
- Скачать исходники sox
$ git clone git://git.code.sf.net/p/sox/code sox
- Загрузите другой исходный код sox, чтобы получить lpc10
$ git clone https://github.com/chirlu/sox/tree/master/lpc10 sox2
$ cp -R sox2/lpc10 sox
- ВАЖНО: установите VisualStudio2019 и BuildTools.
lpc10 lib
4.0. Создайте проект VisualStudio CMake для lpc10 и соберите его
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 lib
5.0. Создайте проект CMake для libgsm и скомпилируйте его, как раньше, с 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. Создайте проект CMake для sox в VS
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. Сборка sox с помощью 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. Скачать torchaudio с github
$ git clone https://github.com/pytorch/audio thaudio
7.1. Обновите setup.py после инструкции "else:" в "if IS_WHEEL..."
$ 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. Отредактируйте sox.cpp из torchaudio, потому что динамические массивы не разрешены:
$ 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, но "работает".
И это все.