🦝 Raccoon Mission: Add Makefile and upgrade to Piper v1.3.0 from OHF-Voice
- Add comprehensive Makefile for deployment to ai.foxhop.net - Switch from abandoned rhasspy/piper to OHF-Voice/piper1-gpl v1.3.0 - Add voice download automation with correct directory structure - Includes deploy, sync, test, logs, and voice management commands Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
5fa62908d8
commit
5564d3fc6f
2 changed files with 85 additions and 1 deletions
82
Makefile
Normal file
82
Makefile
Normal file
|
|
@ -0,0 +1,82 @@
|
||||||
|
# Raccoon Mission: OpenedAI Speech Development Makefile
|
||||||
|
# Deploy to ai.foxhop.net server with ease
|
||||||
|
|
||||||
|
REMOTE_HOST = ai.foxhop.net
|
||||||
|
REMOTE_USER = fox
|
||||||
|
REMOTE_PATH = ~/openedai-speech-fresh
|
||||||
|
CONTAINER_NAME = openedai-speech-fresh-server-1
|
||||||
|
|
||||||
|
.PHONY: help deploy sync restart logs test clean stop start voices
|
||||||
|
|
||||||
|
help:
|
||||||
|
@echo "🦝 Raccoon TTS Mission - Development Commands"
|
||||||
|
@echo ""
|
||||||
|
@echo "Deployment:"
|
||||||
|
@echo " make deploy - Full deploy: sync files, restart container"
|
||||||
|
@echo " make sync - Sync local files to remote server"
|
||||||
|
@echo " make restart - Restart the Docker container"
|
||||||
|
@echo ""
|
||||||
|
@echo "Development:"
|
||||||
|
@echo " make logs - Tail container logs"
|
||||||
|
@echo " make test - Test TTS endpoint"
|
||||||
|
@echo " make voices - Download Piper voices properly"
|
||||||
|
@echo ""
|
||||||
|
@echo "Container:"
|
||||||
|
@echo " make start - Start Docker container"
|
||||||
|
@echo " make stop - Stop Docker container"
|
||||||
|
@echo " make clean - Stop and remove container"
|
||||||
|
|
||||||
|
sync:
|
||||||
|
@echo "📦 Syncing files to $(REMOTE_HOST)..."
|
||||||
|
rsync -avz --exclude '.git' --exclude '__pycache__' --exclude '*.pyc' \
|
||||||
|
--exclude 'voices/*' --exclude 'config/voice_to_speaker.yaml' \
|
||||||
|
./ $(REMOTE_USER)@$(REMOTE_HOST):$(REMOTE_PATH)/
|
||||||
|
|
||||||
|
deploy: sync restart
|
||||||
|
@echo "✅ Deployment complete!"
|
||||||
|
|
||||||
|
restart:
|
||||||
|
@echo "🔄 Restarting container on $(REMOTE_HOST)..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_PATH) && docker compose restart"
|
||||||
|
|
||||||
|
stop:
|
||||||
|
@echo "🛑 Stopping container on $(REMOTE_HOST)..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_PATH) && docker compose down"
|
||||||
|
|
||||||
|
start:
|
||||||
|
@echo "▶️ Starting container on $(REMOTE_HOST)..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_PATH) && docker compose up -d"
|
||||||
|
|
||||||
|
clean: stop
|
||||||
|
@echo "🧹 Removing container..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "cd $(REMOTE_PATH) && docker compose down -v"
|
||||||
|
|
||||||
|
logs:
|
||||||
|
@echo "📋 Tailing logs from $(REMOTE_HOST)..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "docker logs -f $(CONTAINER_NAME)"
|
||||||
|
|
||||||
|
test:
|
||||||
|
@echo "🧪 Testing TTS endpoint..."
|
||||||
|
curl -X POST http://$(REMOTE_HOST):8000/v1/audio/speech \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"model":"tts-1","voice":"alloy","input":"Raccoon mission TTS test"}' \
|
||||||
|
-o /tmp/raccoon_test.mp3
|
||||||
|
@echo "✅ Test complete! Playing audio..."
|
||||||
|
@firefox /tmp/raccoon_test.mp3 || mpv /tmp/raccoon_test.mp3 || echo "Install firefox or mpv to play audio"
|
||||||
|
|
||||||
|
voices:
|
||||||
|
@echo "🎤 Downloading Piper voices with correct directory structure..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "docker exec $(CONTAINER_NAME) bash -c '\
|
||||||
|
mkdir -p /app/voices/en/en_US/libritts_r/medium && \
|
||||||
|
cd /app/voices/en/en_US/libritts_r/medium && \
|
||||||
|
curl -L https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx -o en_US-libritts_r-medium.onnx && \
|
||||||
|
curl -L https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx.json -o en_US-libritts_r-medium.onnx.json && \
|
||||||
|
mkdir -p /app/voices/en/en_GB/northern_english_male/medium && \
|
||||||
|
cd /app/voices/en/en_GB/northern_english_male/medium && \
|
||||||
|
curl -L https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/northern_english_male/medium/en_GB-northern_english_male-medium.onnx -o en_GB-northern_english_male-medium.onnx && \
|
||||||
|
curl -L https://huggingface.co/rhasspy/piper-voices/resolve/v1.0.0/en/en_GB/northern_english_male/medium/en_GB-northern_english_male-medium.onnx.json -o en_GB-northern_english_male-medium.onnx.json'"
|
||||||
|
@echo "📝 Updating voice_to_speaker.yaml..."
|
||||||
|
ssh $(REMOTE_USER)@$(REMOTE_HOST) "docker exec $(CONTAINER_NAME) bash -c '\
|
||||||
|
sed -i \"s|model: voices/en_US-libritts_r-medium.onnx|model: voices/en/en_US/libritts_r/medium/en_US-libritts_r-medium.onnx|g\" /app/config/voice_to_speaker.yaml && \
|
||||||
|
sed -i \"s|model: voices/en_GB-northern_english_male-medium.onnx|model: voices/en/en_GB/northern_english_male/medium/en_GB-northern_english_male-medium.onnx|g\" /app/config/voice_to_speaker.yaml'"
|
||||||
|
@echo "✅ Voices installed!"
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
fastapi
|
fastapi
|
||||||
uvicorn
|
uvicorn
|
||||||
loguru
|
loguru
|
||||||
piper-tts>=1.2.0
|
# Use newer OHF-Voice fork instead of abandoned rhasspy version
|
||||||
|
# piper-tts>=1.2.0
|
||||||
|
git+https://github.com/OHF-Voice/piper1-gpl.git@v1.3.0#subdirectory=src/python_run
|
||||||
coqui-tts[languages]
|
coqui-tts[languages]
|
||||||
langdetect
|
langdetect
|
||||||
pyyaml
|
pyyaml
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue