snow · 2026.5.18 00:06 · 조회 1
Bark 설치 및 사용 가이드 (Mac)
개요
이 가이드는 Mac(특히 Apple Silicon M1/M2/M3/M4 칩셋) 환경에서 Bark TTS 모델을 설치하고 사용하는 방법을 안내한다. Bark는 GPU(CUDA), Apple Silicon의 MPS(Metal Performance Shaders), 그리고 CPU 환경에서 모두 실행 가능하다. Mac에서는 주로 MPS 가속 또는 CPU 방식으로 실행된다.
사전 요구사항
- 운영체제: macOS 12 (Monterey) 이상 권장 (Apple Silicon MPS 사용 시)
- Python: 3.8 이상 (3.10 또는 3.11 권장)
- PyTorch: 2.0 이상 (MPS 지원 포함)
- 가상 환경: venv 또는 conda 사용 강력 권장
- 디스크 공간: 모델 다운로드에 약 5~10GB 필요
- 메모리: 최소 8GB RAM (16GB 이상 권장)
설치 방법
방법 1: pip 설치 (간단)
1# 가상 환경 생성 및 활성화2python3 -m venv bark-env3source bark-env/bin/activate4 5# pip 업그레이드6pip install --upgrade pip7 8# Bark 설치9pip install bark방법 2: GitHub 소스 설치 (최신 버전)
1# 저장소 클론2git clone https://github.com/suno-ai/bark.git3cd bark4 5# 가상 환경 생성 및 활성화6python3 -m venv venv7source venv/bin/activate8 9# 의존성 설치10pip install --upgrade pip11pip install -e .방법 3: Transformers 라이브러리 사용
HuggingFace Transformers를 통해 Bark를 사용하는 방법으로, 별도의 bark 패키지 없이도 실행 가능하다.
1pip install --upgrade pip2pip install transformers scipyApple Silicon MPS / CPU 실행 설정
MPS 가속 활성화 (권장)
Apple Silicon Mac에서는 MPS(Metal Performance Shaders)를 통해 GPU 가속을 활용할 수 있다. PyTorch 2.0 이상에서 MPS를 지원한다.
1import os2import torch3 4# MPS 사용 가능 여부 확인5if torch.backends.mps.is_available():6 device = torch.device("mps")7 print("MPS 사용 가능 - Apple Silicon 가속 활성화")8elif torch.cuda.is_available():9 device = torch.device("cuda")10 print("CUDA 사용 가능")11else:12 device = torch.device("cpu")13 print("CPU 모드로 실행")일부 PyTorch 연산이 MPS에서 지원되지 않을 수 있다. 이 경우 아래 환경 변수를 설정하면 지원되지 않는 연산을 CPU로 폴백(fallback)하여 오류 없이 실행할 수 있다.
1export PYTORCH_ENABLE_MPS_FALLBACK=1또는 Python 코드에서:
1import os2os.environ["PYTORCH_ENABLE_MPS_FALLBACK"] = "1"CPU 전용 실행
메모리가 부족하거나 MPS에서 오류가 발생하는 경우, CPU 모드로 실행할 수 있다. 속도는 느리지만 안정성이 높다.
1import os2# CPU 전용 모드 강제 설정3os.environ["SUNO_OFFLOAD_CPU"] = "True"4os.environ["SUNO_USE_SMALL_MODELS"] = "True" # 소형 모델 사용으로 메모리 절약기본 TTS 사용법
bark 패키지 사용
1from bark import SAMPLE_RATE, generate_audio, preload_models2from scipy.io.wavfile import write as write_wav3import numpy as np4 5# 모델 사전 로드 (첫 실행 시 다운로드 포함, 시간 소요)6preload_models()7 8# 텍스트를 음성으로 변환9text_prompt = "안녕하세요. 저는 Bark TTS 모델입니다."10audio_array = generate_audio(text_prompt)11 12# WAV 파일로 저장13write_wav("output.wav", SAMPLE_RATE, audio_array)14print(f"오디오 저장 완료: output.wav (샘플레이트: {SAMPLE_RATE}Hz)")Transformers 라이브러리 사용
1from transformers import AutoProcessor, BarkModel2import torch3import scipy4 5# 디바이스 설정6device = "mps" if torch.backends.mps.is_available() else "cpu"7 8# 모델 및 프로세서 로드9processor = AutoProcessor.from_pretrained("suno/bark")10model = BarkModel.from_pretrained("suno/bark")11model = model.to(device)12 13# 텍스트를 음성으로 변환14text = "안녕하세요. Bark 모델을 테스트하고 있습니다."15inputs = processor(text, return_tensors="pt").to(device)16 17# 오디오 생성18with torch.no_grad():19 audio_array = model.generate(**inputs)20 21audio_array = audio_array.cpu().numpy().squeeze()22 23# 저장24sample_rate = model.generation_config.sample_rate25scipy.io.wavfile.write("output.wav", rate=sample_rate, data=audio_array)특수 토큰 활용 예시
특수 토큰을 텍스트 내에 삽입하여 다양한 감정과 소리를 생성할 수 있다.
웃음 삽입
1from bark import SAMPLE_RATE, generate_audio, preload_models2from scipy.io.wavfile import write as write_wav3 4preload_models()5 6# 웃음 토큰 활용7text = "정말요? [laughs] 그건 제가 들어본 것 중 가장 재미있는 이야기예요! [giggles]"8audio_array = generate_audio(text)9write_wav("laugh_example.wav", SAMPLE_RATE, audio_array)음악과 함께 내레이션
1# 음악 토큰 활용2text = "오늘의 하이라이트를 소개합니다. [upbeat music] 첫 번째 순서는 특별 공연입니다!"3audio_array = generate_audio(text)4write_wav("music_example.wav", SAMPLE_RATE, audio_array)감정 표현 혼합
1# 다양한 감정 토큰 혼합2text = "[sighs deeply] 오늘도 하루가 지나가네요. [hums] 그래도 내일은 더 좋은 날이 올 거예요. [laughs]"3audio_array = generate_audio(text)4write_wav("emotion_example.wav", SAMPLE_RATE, audio_array)화자 프롬프트 사용법
화자 프리셋을 지정하면 일관된 목소리 특성을 유지할 수 있다.
bark 패키지로 화자 지정
1from bark import SAMPLE_RATE, generate_audio, preload_models2from scipy.io.wavfile import write as write_wav3 4preload_models()5 6# 한국어 화자 프리셋 사용7text = "안녕하세요, 저는 한국어를 구사하는 Bark입니다."8audio_array = generate_audio(text, history_prompt="v2/ko_speaker_3")9write_wav("korean_speaker.wav", SAMPLE_RATE, audio_array)10 11# 영어 화자 프리셋 사용12text_en = "Hello! I am Bark, a text-to-audio model by Suno AI."13audio_array_en = generate_audio(text_en, history_prompt="v2/en_speaker_6")14write_wav("english_speaker.wav", SAMPLE_RATE, audio_array_en)Transformers로 화자 지정
1from transformers import AutoProcessor, BarkModel2import torch, scipy3 4device = "mps" if torch.backends.mps.is_available() else "cpu"5processor = AutoProcessor.from_pretrained("suno/bark")6model = BarkModel.from_pretrained("suno/bark").to(device)7 8# 화자 프리셋 지정9voice_preset = "v2/ko_speaker_5"10inputs = processor("오늘 날씨가 정말 좋네요!", voice_preset=voice_preset, return_tensors="pt").to(device)11 12with torch.no_grad():13 audio_array = model.generate(**inputs)14 15audio_array = audio_array.cpu().numpy().squeeze()16scipy.io.wavfile.write("ko_voice.wav", rate=model.generation_config.sample_rate, data=audio_array)성능 최적화 팁 (오프로딩)
Mac에서 메모리 제약이 있을 경우 아래 최적화 기법을 활용할 수 있다.
소형 모델 사용
1import os2 3# 소형 모델 사용 (품질 낮아지지만 속도·메모리 향상)4os.environ["SUNO_USE_SMALL_MODELS"] = "True"5 6from bark import SAMPLE_RATE, generate_audio, preload_models7preload_models()CPU 오프로딩 (Transformers)
1from transformers import BarkModel2 3# CPU 오프로딩 활성화 (accelerate 패키지 필요)4model = BarkModel.from_pretrained("suno/bark")5model.enable_cpu_offload()enable_cpu_offload() 사용 시 accelerate 패키지가 필요하다.
1pip install acceleratefloat16 추론 (메모리 절약)
1from transformers import BarkModel2import torch3 4model = BarkModel.from_pretrained("suno/bark", torch_dtype=torch.float16)5model = model.to("mps") # Apple Silicon MPS 사용자주 발생하는 오류 해결
오류 1: MPS 연산 미지원
NotImplementedError: The operator 'aten::...' is not currently implemented for the MPS device
해결: MPS fallback 환경 변수 설정
1export PYTORCH_ENABLE_MPS_FALLBACK=12python your_script.py오류 2: 메모리 부족 (OOM)
RuntimeError: MPS backend out of memory
해결: 소형 모델 사용 및 CPU 오프로딩 활성화
1import os2os.environ["SUNO_USE_SMALL_MODELS"] = "True"3os.environ["SUNO_OFFLOAD_CPU"] = "True"오류 3: 모델 다운로드 실패
해결: HuggingFace 캐시 초기화 후 재시도
1# 캐시 삭제2rm -rf ~/.cache/huggingface/hub/models--suno--bark3 4# 또는 huggingface_hub 사용5python -c "from huggingface_hub import snapshot_download; snapshot_download('suno/bark')"오류 4: scipy 미설치
ModuleNotFoundError: No module named 'scipy'
해결:
1pip install scipy오류 5: 생성된 오디오가 무음이거나 잡음
텍스트가 너무 길 경우 발생할 수 있다. Bark는 약 13초 이내의 오디오 생성에 최적화되어 있으며, 긴 텍스트는 문장 단위로 분할하여 생성 후 합치는 방식을 권장한다.
1from bark import SAMPLE_RATE, generate_audio, preload_models2from scipy.io.wavfile import write as write_wav3import numpy as np4 5preload_models()6 7# 긴 텍스트 분할 생성8sentences = [9 "안녕하세요. 오늘은 Bark TTS를 테스트해보겠습니다.",10 "Bark는 다양한 감정 표현이 가능한 AI 음성 모델입니다.",11 "특수 토큰을 활용하면 더욱 자연스러운 음성을 생성할 수 있습니다."12]13 14audio_pieces = [generate_audio(s) for s in sentences]15full_audio = np.concatenate(audio_pieces)16write_wav("long_text.wav", SAMPLE_RATE, full_audio)참고 링크
- GitHub 저장소: https://github.com/suno-ai/bark
- HuggingFace 모델: https://huggingface.co/suno/bark
- HuggingFace Transformers 문서: https://huggingface.co/docs/transformers/model_doc/bark
- PyTorch MPS 가속 가이드: https://pytorch.org/docs/stable/notes/mps.html
- 화자 프리셋 전체 목록: Bark Speaker Presets
- Apple Silicon 지원 이슈: GitHub Issue #19
댓글
아직 댓글이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.