aioli-cli 0.1.2__tar.gz → 0.1.4__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.
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/PKG-INFO +2 -1
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/pyproject.toml +2 -2
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_cli/main.py +6 -1
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/doctor.py +1 -1
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/doctor.py +1 -1
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/cli/doctor.py +4 -4
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/cli/generate.py +1 -1
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/chatterbox.py +2 -2
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/kokoro.py +1 -1
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/moss.py +3 -3
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/qwen3.py +2 -2
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/voxcpm.py +2 -2
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/xtts.py +2 -2
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/.gitignore +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/LICENSE +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/README.md +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_cli/_plugins.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_cli/registry.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_cli/setup.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_contract/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_contract/advise.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_contract/config.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_contract/doctor.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_contract/fetch.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_contract/probe.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/cli.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/companions.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/config.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/data/models.toml +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/gpu.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/launcher.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/models.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/models_data.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/plugin.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/presets.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/stub.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_image/ui.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_master/cli.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_master/doctor.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_master/ops.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_master/plugin.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/acestep.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/base.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/llm_caption.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/minimax_comfy.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/process.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/stub.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/backends/yue2.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/cli_commands/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/cli_commands/backend_cmd.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/cli_commands/generate_cmd.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/cli_commands/inspire_cmd.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/cli_commands/models_cmd.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/client.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/config.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/core/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/core/formats.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/core/generate.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/core/jobs.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/core/layout.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/generator.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/history.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/jsonstore.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/models.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/models_data.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/paths.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/plugin.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/presets.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/prompts.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/server.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/transport/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/transport/client.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_music/tui.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_podcast/cast.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_podcast/cli.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_podcast/doctor.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_podcast/episode.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_podcast/plugin.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_podcast/script.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/cli.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/doctor.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/models_data.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/paths.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/plugin.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/stub.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/wgp.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_video/worker.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/cli/engines_cmd.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/cli/models_cmd.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/cli/profiles.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/config/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/config/settings.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/core/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/core/generation.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/core/model_manager.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/core/profiles.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/core/registry.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/core/types.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/devices.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/doctor.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/__init__.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/piper.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/engines/stub.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/models_data.py +0 -0
- {aioli_cli-0.1.2 → aioli_cli-0.1.4}/src/aioli_voice/plugin.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: aioli-cli
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.4
|
|
4
4
|
Summary: aioli — local-first AI media suite CLI (images, video, music, voice, podcast)
|
|
5
5
|
Author: aioli contributors
|
|
6
6
|
License: MIT
|
|
@@ -25,6 +25,7 @@ Requires-Dist: typer>=0.12
|
|
|
25
25
|
Provides-Extra: music-storage
|
|
26
26
|
Requires-Dist: boto3>=1.34; extra == 'music-storage'
|
|
27
27
|
Provides-Extra: voice-piper
|
|
28
|
+
Requires-Dist: piper-tts>=1.2; extra == 'voice-piper'
|
|
28
29
|
Description-Content-Type: text/markdown
|
|
29
30
|
|
|
30
31
|
<p align="center">
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "aioli-cli"
|
|
3
|
-
version = "0.1.
|
|
3
|
+
version = "0.1.4"
|
|
4
4
|
description = "aioli — local-first AI media suite CLI (images, video, music, voice, podcast)"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.12"
|
|
@@ -35,7 +35,7 @@ dependencies = [
|
|
|
35
35
|
# juntos. Los motores torch (qwen3/chatterbox/voxcpm/xtts/moss) se instalan a
|
|
36
36
|
# mano — ver plugins/voice/README.md (son mundos de dependencias incompatibles
|
|
37
37
|
# entre si: moss clava transformers==4.57.1, qwen-tts exige ==4.57.3).
|
|
38
|
-
voice-piper = [] # binario
|
|
38
|
+
voice-piper = ["piper-tts>=1.2"] # binario + onnxruntime via pip
|
|
39
39
|
music-storage = ["boto3>=1.34"]
|
|
40
40
|
|
|
41
41
|
[project.scripts]
|
|
@@ -53,7 +53,12 @@ def setup(
|
|
|
53
53
|
@app.command()
|
|
54
54
|
def version() -> None:
|
|
55
55
|
"""Show version."""
|
|
56
|
-
|
|
56
|
+
try:
|
|
57
|
+
from importlib.metadata import version as _v
|
|
58
|
+
|
|
59
|
+
console.print(f"aioli {_v('aioli-cli')}")
|
|
60
|
+
except Exception:
|
|
61
|
+
console.print("aioli (dev)")
|
|
57
62
|
|
|
58
63
|
|
|
59
64
|
models_app = typer.Typer(help="Download + verify weight files.")
|
|
@@ -42,7 +42,7 @@ def image_checks() -> list[Check]:
|
|
|
42
42
|
Check(
|
|
43
43
|
name=f"pkg:{module}",
|
|
44
44
|
ok=ok,
|
|
45
|
-
hint=f"'{module}' importable" if ok else f"'{module}' missing — reinstall aioli-
|
|
45
|
+
hint=f"'{module}' importable" if ok else f"'{module}' missing — pip install pillow (image) / reinstall aioli-cli",
|
|
46
46
|
)
|
|
47
47
|
)
|
|
48
48
|
return results
|
|
@@ -23,7 +23,7 @@ def music_checks() -> list[Check]:
|
|
|
23
23
|
Check(
|
|
24
24
|
name=f"pkg:{module}",
|
|
25
25
|
ok=ok,
|
|
26
|
-
hint=f"'{module}' importable" if ok else f"'{module}' missing — reinstall aioli-
|
|
26
|
+
hint=f"'{module}' importable" if ok else f"'{module}' missing — pip install pillow (image) / reinstall aioli-cli",
|
|
27
27
|
)
|
|
28
28
|
)
|
|
29
29
|
models_root = paths.global_models_root()
|
|
@@ -68,7 +68,7 @@ def _check_torch(torch: ModuleType | None) -> CheckResult:
|
|
|
68
68
|
name="torch",
|
|
69
69
|
ok=False,
|
|
70
70
|
detail="not installed",
|
|
71
|
-
fix_hint="install an engine extra: `
|
|
71
|
+
fix_hint="install an engine extra: `pip install qwen-tts torch (see plugins/voice/README.md)` (pulls torch cu128)",
|
|
72
72
|
)
|
|
73
73
|
return CheckResult(name="torch", ok=True, detail=f"torch {torch.__version__}")
|
|
74
74
|
|
|
@@ -79,7 +79,7 @@ def _check_cuda(torch: ModuleType | None) -> CheckResult:
|
|
|
79
79
|
name="cuda",
|
|
80
80
|
ok=False,
|
|
81
81
|
detail="cannot probe (torch missing)",
|
|
82
|
-
fix_hint="install an engine extra: `
|
|
82
|
+
fix_hint="install an engine extra: `pip install qwen-tts torch (see plugins/voice/README.md)`",
|
|
83
83
|
)
|
|
84
84
|
if not torch.cuda.is_available():
|
|
85
85
|
return CheckResult(
|
|
@@ -119,7 +119,7 @@ def _check_cuda_arch() -> CheckResult:
|
|
|
119
119
|
),
|
|
120
120
|
fix_hint=(
|
|
121
121
|
"reinstall torch from the cu128 index so sm kernels match your GPU: "
|
|
122
|
-
"`
|
|
122
|
+
"`pip install qwen-tts torch (see plugins/voice/README.md)` (pyproject pins the pytorch-cu128 index)"
|
|
123
123
|
),
|
|
124
124
|
)
|
|
125
125
|
reason = "torch missing" if not report.torch_installed else "CUDA unavailable"
|
|
@@ -218,7 +218,7 @@ def _check_extras() -> list[CheckResult]:
|
|
|
218
218
|
if installed
|
|
219
219
|
else f"'{spec.extra_name}' not installed{license_note}"
|
|
220
220
|
),
|
|
221
|
-
fix_hint=None if installed else f"`
|
|
221
|
+
fix_hint=None if installed else f"`manual engine install (see plugins/voice/README.md)`",
|
|
222
222
|
)
|
|
223
223
|
)
|
|
224
224
|
return results
|
|
@@ -99,7 +99,7 @@ def generate(
|
|
|
99
99
|
elif sdk_module is not None and importlib.util.find_spec(sdk_module) is None:
|
|
100
100
|
_fail(
|
|
101
101
|
f"engine '{effective}' needs extra '{spec.extra_name}' installed "
|
|
102
|
-
f"(nothing was downloaded); run:
|
|
102
|
+
f"(nothing was downloaded); run: manual engine install (see plugins/voice/README.md) "
|
|
103
103
|
f"(in plugins/voice), or use --engine stub for offline tests"
|
|
104
104
|
)
|
|
105
105
|
if not spec.license_commercial:
|
|
@@ -42,7 +42,7 @@ def _import_torch():
|
|
|
42
42
|
except ImportError as exc:
|
|
43
43
|
raise ImportError(
|
|
44
44
|
"the chatterbox engine requires torch; install it with: "
|
|
45
|
-
"
|
|
45
|
+
"pip install chatterbox-tts torch (see plugins/voice/README.md)"
|
|
46
46
|
) from exc
|
|
47
47
|
return torch
|
|
48
48
|
|
|
@@ -54,7 +54,7 @@ def _import_chatterbox_mtl():
|
|
|
54
54
|
raise ImportError(
|
|
55
55
|
"the chatterbox engine requires the 'chatterbox-tts' package "
|
|
56
56
|
"(with Multilingual V3 support); install it with: "
|
|
57
|
-
"
|
|
57
|
+
"pip install chatterbox-tts torch (see plugins/voice/README.md)"
|
|
58
58
|
) from exc
|
|
59
59
|
return ChatterboxMultilingualTTS
|
|
60
60
|
|
|
@@ -41,7 +41,7 @@ class KokoroBackend:
|
|
|
41
41
|
except ImportError as exc:
|
|
42
42
|
raise ImportError(
|
|
43
43
|
"kokoro engine needs extra 'kokoro' installed "
|
|
44
|
-
"(uv
|
|
44
|
+
"(uv tool install --reinstall aioli-cli, kokoro ships in base)"
|
|
45
45
|
) from exc
|
|
46
46
|
base = _base()
|
|
47
47
|
if not (base / "kokoro-v1.0.onnx").exists():
|
|
@@ -61,7 +61,7 @@ def _import_moss() -> ModuleType:
|
|
|
61
61
|
except ImportError as exc:
|
|
62
62
|
raise ImportError(
|
|
63
63
|
"the moss engine requires the 'moss-tts-nano' package (git dependency, "
|
|
64
|
-
"not published on PyPI); install it with:
|
|
64
|
+
"not published on PyPI); install it with: manual install (see plugins/voice/README.md)"
|
|
65
65
|
) from exc
|
|
66
66
|
return moss_tts_nano
|
|
67
67
|
|
|
@@ -71,7 +71,7 @@ def _import_torch() -> ModuleType:
|
|
|
71
71
|
import torch
|
|
72
72
|
except ImportError as exc:
|
|
73
73
|
raise ImportError(
|
|
74
|
-
"the moss engine requires torch; install it with:
|
|
74
|
+
"the moss engine requires torch; install it with: manual install (see plugins/voice/README.md)"
|
|
75
75
|
) from exc
|
|
76
76
|
return torch
|
|
77
77
|
|
|
@@ -81,7 +81,7 @@ def _import_auto_model() -> type:
|
|
|
81
81
|
from transformers import AutoModelForCausalLM
|
|
82
82
|
except ImportError as exc:
|
|
83
83
|
raise ImportError(
|
|
84
|
-
"the moss engine requires 'transformers'; install it with:
|
|
84
|
+
"the moss engine requires 'transformers'; install it with: manual install (see plugins/voice/README.md)"
|
|
85
85
|
) from exc
|
|
86
86
|
return AutoModelForCausalLM
|
|
87
87
|
|
|
@@ -41,7 +41,7 @@ def _import_torch() -> ModuleType:
|
|
|
41
41
|
import torch
|
|
42
42
|
except ImportError as exc:
|
|
43
43
|
raise ImportError(
|
|
44
|
-
"the qwen3 engine requires torch; install it with:
|
|
44
|
+
"the qwen3 engine requires torch; install it with: pip install qwen-tts torch (see plugins/voice/README.md)"
|
|
45
45
|
) from exc
|
|
46
46
|
return torch
|
|
47
47
|
|
|
@@ -52,7 +52,7 @@ def _import_qwen_tts() -> ModuleType:
|
|
|
52
52
|
except ImportError as exc:
|
|
53
53
|
raise ImportError(
|
|
54
54
|
"the qwen3 engine requires the 'qwen-tts' package; "
|
|
55
|
-
"install it with:
|
|
55
|
+
"install it with: pip install qwen-tts torch (see plugins/voice/README.md)"
|
|
56
56
|
) from exc
|
|
57
57
|
return qwen_tts
|
|
58
58
|
|
|
@@ -39,7 +39,7 @@ def _import_torch() -> ModuleType:
|
|
|
39
39
|
import torch
|
|
40
40
|
except ImportError as exc:
|
|
41
41
|
raise ImportError(
|
|
42
|
-
"the voxcpm engine requires torch; install it with:
|
|
42
|
+
"the voxcpm engine requires torch; install it with: manual install (see plugins/voice/README.md)"
|
|
43
43
|
) from exc
|
|
44
44
|
return torch
|
|
45
45
|
|
|
@@ -50,7 +50,7 @@ def _import_voxcpm() -> ModuleType:
|
|
|
50
50
|
except ImportError as exc:
|
|
51
51
|
raise ImportError(
|
|
52
52
|
"the voxcpm engine requires the 'voxcpm' package; "
|
|
53
|
-
"install it with:
|
|
53
|
+
"install it with: manual install (see plugins/voice/README.md)"
|
|
54
54
|
) from exc
|
|
55
55
|
return VoxCPM
|
|
56
56
|
|
|
@@ -47,7 +47,7 @@ def _import_torch() -> ModuleType:
|
|
|
47
47
|
import torch
|
|
48
48
|
except ImportError as exc:
|
|
49
49
|
raise ImportError(
|
|
50
|
-
"the xtts engine requires torch; install it with:
|
|
50
|
+
"the xtts engine requires torch; install it with: manual install (see plugins/voice/README.md)"
|
|
51
51
|
) from exc
|
|
52
52
|
return torch
|
|
53
53
|
|
|
@@ -58,7 +58,7 @@ def _import_coqui_tts() -> type:
|
|
|
58
58
|
except ImportError as exc:
|
|
59
59
|
raise ImportError(
|
|
60
60
|
"the xtts engine requires the 'coqui-tts' package; "
|
|
61
|
-
"install it with:
|
|
61
|
+
"install it with: manual install (see plugins/voice/README.md)"
|
|
62
62
|
) from exc
|
|
63
63
|
return TTS
|
|
64
64
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|