94 lines
3.0 KiB
Markdown
94 lines
3.0 KiB
Markdown
# AI Voice Generation (Microsoft VibeVoice) na MacOS (M1/M2/M3/M4)
|
|
|
|
**Opomba:** Microsoft VibeVoice in podobni moderni TTS modeli močno slonijo na **CUDA** (Nvidia) in knjižnici **Flash-Attention**, ki uradno ne deluje na Macu (MPS).
|
|
|
|
Vendar lahko poskusimo pognati model s **CPU** ali **MPS** (Metal) pospeševanjem z uporabo alternativnih implementacij pozornosti (SDPA - Scaled Dot Product Attention), ki je vgrajena v PyTorch 2.0+.
|
|
|
|
## 1. Priprava Okolja
|
|
|
|
Potrebujemo Python in FFMPEG.
|
|
|
|
1. **Namesti sistemske knjižnice (Homebrew):**
|
|
```bash
|
|
brew install ffmpeg portaudio
|
|
```
|
|
|
|
2. **Pripravi mapo:**
|
|
```bash
|
|
mkdir -p ~/repos/novafarma/ai_voice_gen/VibeVoice
|
|
cd ~/repos/novafarma/ai_voice_gen/VibeVoice
|
|
```
|
|
|
|
3. **Ustvari Python okolje:**
|
|
```bash
|
|
python3 -m venv venv
|
|
source venv/bin/activate
|
|
```
|
|
|
|
4. **Namesti PyTorch (Nightly za najboljšo M4 podporo):**
|
|
```bash
|
|
pip install --pre torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/nightly/cpu
|
|
```
|
|
|
|
## 2. Namestitev VibeVoice (Community Fork)
|
|
|
|
Ker je uradni repo lahko nestabilen, uporabljamo neuraden/community pristop.
|
|
|
|
1. **Kloniraj Repo (če imaš URL) ali namesti F5-TTS (Trenutno najboljši Vibe-like open source model):**
|
|
|
|
*Priporočam **F5-TTS**, ker je arhitekturno zelo podoben in bolje podprt.*
|
|
|
|
```bash
|
|
git clone https://github.com/SWivid/F5-TTS.git
|
|
cd F5-TTS
|
|
pip install -e .
|
|
```
|
|
|
|
2. **Popravek za Mac (Flash Attention):**
|
|
Ker `flash-attn` ne deluje na Macu, moramo zagotoviti, da koda uporablja "standard attention".
|
|
|
|
Če dobiš napako `ImportError: No module named 'flash_attn'`, odpri kodo in poišči uvoze. F5-TTS običajno avtomatsko preklopi na `torch.nn.functional.scaled_dot_product_attention`, če flash attention ni na voljo.
|
|
|
|
## 3. Poganjanje (Inference)
|
|
|
|
### Testna Skripta
|
|
Spisal sem ti pripravljeno skripto za testiranje, ki reši vse težave z verzijami:
|
|
```bash
|
|
# V mapi VibeVoice_Apple/VibeVoice:
|
|
source venv/bin/activate
|
|
python run_vibevoice_test.py
|
|
```
|
|
To bo generiralo `outputs/demo_audio.wav`.
|
|
|
|
### CLI (Command Line - Ročno)
|
|
```bash
|
|
# Zaženi inference (uporabi lokalno mapo z modelom)
|
|
python inference.py --model_path models/VibeVoice-1.5B
|
|
```
|
|
|
|
**Opomba:** VibeVoice zahteva `transformers==4.51.3`. Skripta `install_vibevoice_apple.sh` je posodobljena, da to upošteva.
|
|
|
|
|
|
### Gradio (Web UI)
|
|
```bash
|
|
python inference-cli.py --launch_gradio
|
|
# Odpri http://127.0.0.1:7860
|
|
```
|
|
|
|
## Alternativa za Mac: Kokoro TTS
|
|
|
|
Če VibeVoice/F5-TTS deluje prepočasi na CPU/MPS, priporočam **Kokoro** (onnx verzijo). Je izjemno hiter (realtime na M1/M2/M3/M4) in ima zelo visoko kvaliteto.
|
|
|
|
1. **Namestitev:**
|
|
```bash
|
|
pip install kokoro-onnx soundfile
|
|
```
|
|
2. **Uporaba:**
|
|
```python
|
|
from kokoro_onnx import Kokoro
|
|
kokoro = Kokoro("kokoro-v0_19.onnx", "voices.json")
|
|
audio, _ = kokoro.create("Pozdravljen svet!", voice="af_sarah", speed=1.0, lang="en-us")
|
|
import soundfile as sf
|
|
sf.write("output.wav", audio, 24000)
|
|
```
|