skvoice 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- skvoice-0.1.0/.env.example +36 -0
- skvoice-0.1.0/.github/workflows/publish.yml +49 -0
- skvoice-0.1.0/.gitignore +34 -0
- skvoice-0.1.0/LICENSE +674 -0
- skvoice-0.1.0/PKG-INFO +16 -0
- skvoice-0.1.0/README.md +221 -0
- skvoice-0.1.0/docs/ARCHITECTURE.md +334 -0
- skvoice-0.1.0/docs/MUSETALK-INSTALL-PLAN.md +693 -0
- skvoice-0.1.0/pyproject.toml +31 -0
- skvoice-0.1.0/scripts/hooks/install.sh +23 -0
- skvoice-0.1.0/scripts/hooks/pre-push +81 -0
- skvoice-0.1.0/scripts/musetalk-install.sh +278 -0
- skvoice-0.1.0/setup.cfg +4 -0
- skvoice-0.1.0/skvoice/__init__.py +10 -0
- skvoice-0.1.0/skvoice/__main__.py +17 -0
- skvoice-0.1.0/skvoice/_version.py +24 -0
- skvoice-0.1.0/skvoice/agent_profile.py +126 -0
- skvoice-0.1.0/skvoice/audio.py +81 -0
- skvoice-0.1.0/skvoice/config.py +87 -0
- skvoice-0.1.0/skvoice/emotion.py +150 -0
- skvoice-0.1.0/skvoice/integration.py +184 -0
- skvoice-0.1.0/skvoice/llm.py +128 -0
- skvoice-0.1.0/skvoice/memory.py +75 -0
- skvoice-0.1.0/skvoice/service.py +407 -0
- skvoice-0.1.0/skvoice/tools.py +346 -0
- skvoice-0.1.0/skvoice.egg-info/PKG-INFO +16 -0
- skvoice-0.1.0/skvoice.egg-info/SOURCES.txt +32 -0
- skvoice-0.1.0/skvoice.egg-info/dependency_links.txt +1 -0
- skvoice-0.1.0/skvoice.egg-info/entry_points.txt +2 -0
- skvoice-0.1.0/skvoice.egg-info/requires.txt +9 -0
- skvoice-0.1.0/skvoice.egg-info/top_level.txt +1 -0
- skvoice-0.1.0/systemd/skvoice.service +21 -0
- skvoice-0.1.0/tests/__init__.py +0 -0
- skvoice-0.1.0/tests/test_integration_adapter.py +167 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# SKVoice — example environment configuration.
|
|
2
|
+
# Copy to ~/.config/skvoice/skvoice.env (or anywhere systemd EnvironmentFile= points)
|
|
3
|
+
# and edit. All variables are optional — defaults assume STT/TTS run on
|
|
4
|
+
# localhost.
|
|
5
|
+
|
|
6
|
+
# --- Service ----------------------------------------------------------------
|
|
7
|
+
SKVOICE_PORT=18800
|
|
8
|
+
SKVOICE_AGENT=lumina
|
|
9
|
+
|
|
10
|
+
# --- LLM --------------------------------------------------------------------
|
|
11
|
+
SKVOICE_MODEL=claude-sonnet-4-6
|
|
12
|
+
SKVOICE_MAX_TOKENS=200
|
|
13
|
+
|
|
14
|
+
# --- STT / TTS endpoints (distributed deployment) ---------------------------
|
|
15
|
+
# In a distributed deployment the orchestrator (this service) runs on one
|
|
16
|
+
# host and the GPU services run on another. Point at the GPU host using
|
|
17
|
+
# either its tailnet name (preferred — survives LAN changes) or LAN IP.
|
|
18
|
+
#
|
|
19
|
+
# Easiest: set the BASE URL and let SKVoice append the standard paths.
|
|
20
|
+
#SKVOICE_TTS_BASE=http://skworld-100:18793
|
|
21
|
+
#SKVOICE_STT_BASE=http://skworld-100:18794
|
|
22
|
+
#
|
|
23
|
+
# Or: set the full URL if you have a non-standard path.
|
|
24
|
+
#SKVOICE_TTS_URL=http://skworld-100:18793/audio/speech
|
|
25
|
+
#SKVOICE_STT_URL=http://skworld-100:18794/v1/audio/transcriptions
|
|
26
|
+
#
|
|
27
|
+
# Legacy alias (matches the v0.1.0 README) — still accepted:
|
|
28
|
+
#SKVOICE_WHISPER_URL=http://skworld-100:18794
|
|
29
|
+
|
|
30
|
+
# --- Paths ------------------------------------------------------------------
|
|
31
|
+
#SKVOICE_CREDENTIALS_PATH=~/.claude/.credentials.json
|
|
32
|
+
#SKVOICE_AGENT_HOME=~/.skcapstone/agents
|
|
33
|
+
|
|
34
|
+
# --- Ollama fallback (used if Anthropic credentials missing) ----------------
|
|
35
|
+
#SKVOICE_OLLAMA_URL=http://localhost:11434/api/chat
|
|
36
|
+
#SKVOICE_OLLAMA_MODEL=qwen3.5:9b
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
name: Publish to PyPI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
test:
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
strategy:
|
|
15
|
+
matrix:
|
|
16
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v4
|
|
19
|
+
- uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: ${{ matrix.python-version }}
|
|
22
|
+
- run: pip install -e ".[dev]" || pip install -e .
|
|
23
|
+
- run: python -m pytest tests/ -q
|
|
24
|
+
continue-on-error: true
|
|
25
|
+
|
|
26
|
+
publish-pypi:
|
|
27
|
+
needs: test
|
|
28
|
+
if: always()
|
|
29
|
+
runs-on: ubuntu-latest
|
|
30
|
+
steps:
|
|
31
|
+
- uses: actions/checkout@v4
|
|
32
|
+
- uses: actions/setup-python@v5
|
|
33
|
+
with:
|
|
34
|
+
python-version: "3.12"
|
|
35
|
+
- name: Verify version matches tag
|
|
36
|
+
run: |
|
|
37
|
+
TAG_VERSION="${GITHUB_REF#refs/tags/v}"
|
|
38
|
+
PKG_VERSION=$(python -c "import tomllib; print(tomllib.load(open('pyproject.toml','rb'))['project']['version'])")
|
|
39
|
+
echo "Tag: $TAG_VERSION Package: $PKG_VERSION"
|
|
40
|
+
if [ "$TAG_VERSION" != "$PKG_VERSION" ]; then
|
|
41
|
+
echo "::error::Tag version ($TAG_VERSION) does not match pyproject.toml ($PKG_VERSION). Bump version before tagging."
|
|
42
|
+
exit 1
|
|
43
|
+
fi
|
|
44
|
+
- run: pip install build twine
|
|
45
|
+
- run: python -m build
|
|
46
|
+
- run: twine upload --skip-existing dist/*
|
|
47
|
+
env:
|
|
48
|
+
TWINE_USERNAME: __token__
|
|
49
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
|
skvoice-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Python
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
*.egg-info/
|
|
6
|
+
dist/
|
|
7
|
+
build/
|
|
8
|
+
*.egg
|
|
9
|
+
|
|
10
|
+
# Virtual environments
|
|
11
|
+
.venv/
|
|
12
|
+
venv/
|
|
13
|
+
env/
|
|
14
|
+
|
|
15
|
+
# IDE
|
|
16
|
+
.vscode/
|
|
17
|
+
.idea/
|
|
18
|
+
*.swp
|
|
19
|
+
*.swo
|
|
20
|
+
|
|
21
|
+
# OS
|
|
22
|
+
.DS_Store
|
|
23
|
+
Thumbs.db
|
|
24
|
+
|
|
25
|
+
# Secrets
|
|
26
|
+
.credentials.json
|
|
27
|
+
*.key
|
|
28
|
+
*.pem
|
|
29
|
+
|
|
30
|
+
# Logs
|
|
31
|
+
*.log
|
|
32
|
+
|
|
33
|
+
# setuptools-scm generated
|
|
34
|
+
skvoice/_version.py
|