@petercjl/seedaudiocli 0.2.1 → 0.3.0
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.
- package/INSTALL.md +11 -0
- package/README.md +40 -7
- package/UPDATE.md +11 -0
- package/capabilities.json +475 -28
- package/npm/cli.mjs +31 -7
- package/npm/notice.mjs +1 -0
- package/npm/skills.mjs +21 -12
- package/npm/update.mjs +34 -22
- package/package.json +7 -3
- package/scripts/validate-release.mjs +14 -0
- package/seedaudiocli/cli.py +59 -3
- package/seedaudiocli/voices.py +229 -0
- package/skills/seedaudiocli/SKILL.md +19 -5
- package/skills/seedaudiocli/adapters/generic.json +23 -0
- package/skills/seedaudiocli/capabilities.json +6 -3
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: seedaudiocli
|
|
3
|
-
description: Generate audio through official Volcengine Seed Audio using
|
|
3
|
+
description: Generate audio through official Volcengine Seed Audio using seedaudiocli; manage named voice presets and samples, import configuration, recover tasks, and download results.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Seed Audio CLI
|
|
7
7
|
|
|
8
8
|
This companion Skill documents the capability contract of `@petercjl/seedaudiocli`.
|
|
9
|
-
Inputs are an explicit audio prompt,
|
|
9
|
+
Inputs are narration or an explicit audio prompt, an optional named voice, reference mode, output settings and a destination. Outputs are immutable voice revisions or generation task IDs, status and downloaded audio paths. The calling application owns content strategy, voice selection and audio acceptance; this Skill owns library integrity, correct invocation and recovery.
|
|
10
10
|
|
|
11
11
|
## Runtime and discovery
|
|
12
12
|
|
|
@@ -14,7 +14,21 @@ Requires Node.js 22+, Python 3.9+ with SSL, network access to Doubao Speech, and
|
|
|
14
14
|
|
|
15
15
|
When continuing an existing conversation or after a package update, load the current canonical `SKILL.md` and read the selected leaf command's `--help` (for example, `seedaudiocli generate text --help`). Build the invocation from that live contract; earlier conversation commands may belong to a different version.
|
|
16
16
|
|
|
17
|
-
Use the current host's terminal execution capability
|
|
17
|
+
Use the current host's terminal execution capability through [capabilities.json](capabilities.json). The [generic adapter](adapters/generic.json) covers any host with that capability; named adapters describe host conventions and evidence, not an eligibility list. A managed Skill includes its own package runtime at `runtime/npm/cli.mjs`; invoke that entry with Node.js when executing from a physical managed installation. Source inspection and library-only operations require no service authentication.
|
|
18
|
+
|
|
19
|
+
## Named voice library
|
|
20
|
+
|
|
21
|
+
For a request to list, inspect, save, import, export or preview a voice, enter this local branch before authentication, then return to generation step 3 only if the user also requested generation.
|
|
22
|
+
|
|
23
|
+
- Discover installed choices with `seedaudiocli voice list --json`. `--all` includes historical revisions. A name is user-facing; its stable ASCII ID is used for precise selection.
|
|
24
|
+
- `voice show NAME` returns settings and sample integrity; `voice preview NAME` returns `preview_path` for the Agent's native audio player. Preview plays the existing reference, not a new paid generation.
|
|
25
|
+
- Save an authorized reference with `voice save --id example-male --name "示例男声" --audio-file SAMPLE --style "清晰自然,中等语速" --description "适合课程解说"`. Optional model, format, sample-rate, speech-rate, pitch-rate and loudness-rate flags are validated. Save copies the original sample into the private library; another save to that ID creates a new immutable revision. Preserve the original confirmed sample instead of chaining generated narration as future references.
|
|
26
|
+
- Local references are PCM WAV, MP3 or Ogg/Opus, at most 30 seconds and 10 MiB. PCM WAV validation uses Python; compressed-sample save/import requires FFmpeg's `ffprobe`. Install the dependency in the host's managed environment when needed, then retry the same local operation. Generation from a validated stored sample does not require ffprobe.
|
|
27
|
+
- `voice export NAME --output NEW_FILE.voice.json` creates a self-contained sample/settings bundle, refusing an existing destination. `voice import FILE.voice.json` validates schema, checksum and actual duration, then creates a local revision. Export is a local write, not permission to upload or publicly distribute someone's voice.
|
|
28
|
+
- Generation uses `generate audio-ref --voice "VOICE_NAME" --prompt-file NARRATION_FILE ...`. A name/ID selects its latest revision; `NAME@1` pins a revision. Supply plain narration text: the CLI adds the reference-addressing wrapper and saved delivery style. Explicit output flags override preset settings for this request only; saved revisions remain unchanged. Inspect the resolved payload and `voice` receipt during dry-run. Limits apply to the final expanded prompt.
|
|
29
|
+
- A named voice and explicit audio/image references conflict. Respect the selected mode and resolve conflicts with the caller. `VOICE_NOT_FOUND`, `VOICE_NAME_CONFLICT`, `VOICE_AMBIGUOUS`, `VOICE_INVALID`, `VOICE_INTEGRITY_FAILED`, `VOICE_BUSY` and `VOICE_PROBE_REQUIRED` are local terminal errors: preserve files, resolve the cause, then return to this branch. Never substitute another voice silently.
|
|
30
|
+
|
|
31
|
+
Library storage is `SEEDAUDIO_VOICE_DIR` or the configuration directory's `voices` subdirectory. Samples and credentials are outside the npm package. Every generated job records preset ID/name/version, original sample SHA256, style and effective settings. Voice consistency is generative, not an exact acoustic guarantee.
|
|
18
32
|
|
|
19
33
|
## Main flow
|
|
20
34
|
|
|
@@ -62,6 +76,6 @@ Official generation waits synchronously for the HTTP response. `--timeout` sets
|
|
|
62
76
|
|
|
63
77
|
## Installation and update
|
|
64
78
|
|
|
65
|
-
|
|
79
|
+
Follow package-root INSTALL.md and UPDATE.md. Resolve the current Agent's absolute Skill parent directory and native discovery mechanism, then pass `--agent NAME --root ABSOLUTE_SKILL_PARENT` to managed install/status/update. Every valid Agent name is accepted through a named or generic adapter. Managed installation creates physical copies of the Skill and required package runtime. Existing unmanaged files and local edits are preserved; updates back up managed files and preserve customized UI metadata. Verify global CLI, target-owned runtime, version and SHA256 status, then verify native host discovery independently.
|
|
66
80
|
|
|
67
|
-
Global npm
|
|
81
|
+
Global npm generation calls check stable `latest` with a daily notification cache. Explicit `update install --agent NAME --root ABSOLUTE_SKILL_PARENT` updates one selected host and reconciles its Skill even at the same version. Metadata, help, local library commands, task recovery and dry-run make no automatic update request. Set `SEEDAUDIO_AUTO_UPDATE=0` to disable detection. Offline checks retain the installed version. Development checkouts remain Git-managed; suite-owned installations use their parent's update entry. Configuration, voice samples and task history remain in user directories. Record recurring contract failures for a separately authorized package update.
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "portable-skill-adapter",
|
|
3
|
+
"schema_version": "1.0.0",
|
|
4
|
+
"platform": "generic",
|
|
5
|
+
"mappings": [
|
|
6
|
+
{
|
|
7
|
+
"capability_id": "command.execute",
|
|
8
|
+
"status": "implemented",
|
|
9
|
+
"features": [
|
|
10
|
+
"argv",
|
|
11
|
+
"exit-code",
|
|
12
|
+
"stdout",
|
|
13
|
+
"local-files"
|
|
14
|
+
],
|
|
15
|
+
"implementation": {
|
|
16
|
+
"kind": "cli",
|
|
17
|
+
"command": "seedaudiocli",
|
|
18
|
+
"discovery": "Use the current Agent's terminal capability; resolve PATH or its target-owned runtime/npm/cli.mjs with Node.js. Read version and capabilities before invocation.",
|
|
19
|
+
"result": "Parse JSON stdout and exit code; preserve task_id, voice receipt, preview_path and downloaded_to."
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
"schema": "portable-skill-capabilities",
|
|
3
3
|
"schema_version": "1.0.0",
|
|
4
4
|
"target_platforms": [
|
|
5
|
-
"
|
|
6
|
-
"sealseek"
|
|
5
|
+
"generic"
|
|
7
6
|
],
|
|
7
|
+
"host_resolution": {"fallback_adapter": "generic", "agent_eligibility": "capability-based"},
|
|
8
8
|
"capabilities": [
|
|
9
9
|
{
|
|
10
10
|
"id": "command.execute",
|
|
@@ -39,7 +39,10 @@
|
|
|
39
39
|
"SUBMISSION_UNKNOWN",
|
|
40
40
|
"REQUEST_BUSY",
|
|
41
41
|
"OUTPUT_CONTRACT_FAILED",
|
|
42
|
-
"OUTPUT_EXISTS"
|
|
42
|
+
"OUTPUT_EXISTS",
|
|
43
|
+
"VOICE_NOT_FOUND",
|
|
44
|
+
"VOICE_INTEGRITY_FAILED",
|
|
45
|
+
"VOICE_REFERENCE_CONFLICT"
|
|
43
46
|
]
|
|
44
47
|
}
|
|
45
48
|
]
|