개발이모저모

[M1] M1 에서 깔끔하게 Spleeter 설치하기!! 로제타 설치, 의존성

아티스트갓건 2023. 2. 15. 17:39

https://artistgodgun.tistory.com/2

 

[인공지능] 머신러닝 or 딥러닝 할 때 현재까지 M1으로 안되는 것들

첫 글이다. 나 같은 사람이 있을 것 같아서 정리해보고자 블로그를 개설했다 퇴사 후 컴퓨터가 없던 나는 윈도&우분투 + 그래픽카드 vs M1 시리즈 중 고민을 상당히 많이 했다. 윈도&우분투의 경우

artistgodgun.tistory.com

 

이미 퇴물이 되어버린 Spleeter이지만 그래도 써야할 때가 있는데 안깔리면 짜증난다.

M1을 사고 spleeter를 설치하려고하면 무슨 의존성 문제 때문에 안되는 경우가 있다. M1이 아닌 Intel 맥에선 spleeter가 설치도 잘 되고 실행도 잘 됐는데 M1에서 안된다.

pip install spleeter

이게 안되시는 분들이 보면 참 좋을 것이다.

Conda던 그냥 파이썬 가상환경이던 둘다 되는 방법이다. 물론 형님들은 저보다 잘 하시겠지만 그래도 간단하게 정리해 놓은 글이 없는 것 같아서 올려본다.

 

0. 로제타 설치

softwareupdate --install-rosetta

# 이후 뭔진모르겠지만 입력하라는것 같은 설명이 나오면 agree를 쳐서 입력하면된다

로제타 설치 없이도 시도했으나 실패했다. 그냥 조신하게 로제타를 설치하고, 이후 모든 커맨드라인은 로제타 터미널에서 실행한다. 

 

1. 가상환경 생성

python -m venv venv
source venv/bin/activate
python -m pip install --upgrade pip

 

2. spleeter는 텐서플로우 기반이기 때문에 우선 맥용 tensorflow를 설치해준다

pip install tensorflow-macos tensorflow-metal

3. 그다음 poetry라는걸 설치해준다

pip install poetry

 

4. git으로 spleeter를 직접 다운받고, 해당 폴더에 접근한다

git clone https://github.com/Deezer/spleeter && cd spleeter

5. spleeter 폴더 안에 잘 보면 'pyproject.toml' 이라는 파일이 있는데, 이걸 열어주면 spleeter 설치 초기 세팅 정보가 들어있다.

pyproject.toml .,..이것 저것 있다

53번째 줄부터 나오는 librosa, tensorflow, pandas, numpy, llvmlite, protobuf를 삭제한다 (사진에는 protobuf 표시가 안되어있는데 protobuf도 지워주어야 한다!)

 

6. 아래 커맨드를 차례대로 실행한다. 

poetry update # warning이 뜰수도 있으나 무시해도 됨
poetry install
poetry build
pip install ./dist/spleeter-2.3.x-py3-none-any.whl # 2023년 2월 15일 기준 spleeter-2.3.3-py3-none-any.whl 로 나옴

7. 이렇게 하면 일단 spleeter 자체는 잘 설치된것이다

spleeter --version # Spleeter Version: 2.3.3

하지만 완전히 설치된게 아니다. 스플리터 자체는 설치됐지만 막상 오디오 음원 분리를 하려면 에러가 발생하기 때문에 다음을 따른다

 

8. 아래 커맨드를 차례대로 실행한다

pip install pandas librosa protobuf
pip install numpy==1.23.5 scipy==1.6.0 numba

이렇게하면 제대로 된 것이다 (적어도 내 환경에선..)

테스트를 해보자

spleeter separate -p spleeter:2stems -o output test.wav

'''
INFO:spleeter:Downloading model archive https://github.com/deezer/spleeter/releases/download/v1.4.0/2stems.tar.gz
INFO:spleeter:Validating archive checksum
INFO:spleeter:Extracting downloaded 2stems archive
INFO:spleeter:2stems model file(s) extracted
Metal device set to: Apple M1

systemMemory: 8.00 GB
maxCacheSize: 2.67 GB

INFO:spleeter:File output/test/accompaniment.wav written succesfully
INFO:spleeter:File output/test/vocals.wav written succesfully
'''

만약 위의 메세지대로 안뜨고 에러가 뜨면서 스플리터가 중단된다면!!

무조건 numpy를 최고버젼으로 만들고 차례차례 뜨는 의존성에러에 맞게 numpy버젼을 맞춰서 설치를 하면 언젠가(..)는 해결된다

 

9. Conda

콘다는 아래 형님이 알기 쉽게 올려주셨다. 나도 이거 보고 응용해서 한거다. conda환경에서 아래 링크의 방법을 따르는게 훨씬 마음편하다.

참조 : https://github.com/deezer/spleeter/issues/696

 

[Discussion] Spleeter works natively on Apple Silicon Macs if you use Apple's version of TensorFlow · Issue #696 · deezer/sple

Spleeter is working for me natively on my M1 Max MacBook Pro, built against Apple's Metal version of TensorFlow. Instructions from memory: brew install miniforge conda init "$(basename &qu...

github.com

10. 비슷한 글

Basic-Pitch도 비슷한 과정으로 설치 가능하다

https://artistgodgun.tistory.com/9

 

[M1] M1에서 깔끔하게 basic-pitch 설치하기~!!!!!!

저번에 M1에서 Spleeter 설치법을 찾다가 혹시 basic-pitch도 되지 않을까? 싶어서 해결법을 찾아보았다. pip install basic-pitch 이렇게 했는데도 자기 컴퓨터에 안깔리는 M1 사용자들이 보면 좋을거같다. 0.

artistgodgun.tistory.com

 

11. 정리하며

중요한 것은 numpy 라이브러리의 의존성 문제를 해결하는 것에 있다. 웃긴건 spleeter를 위해 numpy를 최신버젼으로 맞추면 numba와 scipy의 의존성 문제에 걸리고 numba나 scipy에 numpy버젼을 맞추면 spleeter가 돌아가지 않는다는 것이다. 어쨌건 우리는 spleeter를 사용하는게 목적이니 spleeter에 맞춰야 한다. 다행이도 요샌 훌륭한 separate 라이브러리가 많이 나와서 굳이 spleeter를 안써도 되지만... 이 설치 과정을 통해서 파이썬 설치 관련해서 더 많이 알 수 있게 되었다