@mrgoonie/multix 0.0.5 → 0.0.7
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/CHANGELOG.md +26 -0
- package/README.md +91 -1
- package/dist/cli.js +1400 -484
- package/package.json +9 -3
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,32 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.0.7] - 2026-05-05
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **ElevenLabs provider** — full integration with 13 subcommands:
|
|
12
|
+
- `tts` — text-to-speech (sync audio bytes) with voice settings, language code, seed, context continuity, and `--no-speaker-boost` opt-out.
|
|
13
|
+
- `voices list|get|search|design|create-from-preview|delete` — voice library management and prompt-based voice design.
|
|
14
|
+
- `clone` — instant voice cloning via multipart audio sample upload.
|
|
15
|
+
- `voice-changer` — speech-to-speech voice conversion.
|
|
16
|
+
- `transcribe` — Scribe STT with diarization, audio-event tagging, and `text|json|srt|vtt` output.
|
|
17
|
+
- `sfx` — sound effects generation with prompt influence and looping.
|
|
18
|
+
- `music` — music generation (`music_v1`) from prompt or composition plan.
|
|
19
|
+
- `dub` / `dub-status` — async dubbing with `--wait` / `--download` polling and per-language audio download.
|
|
20
|
+
- `isolate` — voice isolator (background noise removal).
|
|
21
|
+
- `align` — forced alignment (transcript ↔ audio timing).
|
|
22
|
+
- `account` / `models` — usage / subscription tier and model catalog.
|
|
23
|
+
- `ELEVENLABS_RECOMMENDED_VOICES` with 11 verified conversational voice IDs (Alexandra default).
|
|
24
|
+
- TTS models: `eleven_multilingual_v2` (default), `eleven_flash_v2_5`, `eleven_flash_v2`, `eleven_turbo_v2_5`, `eleven_turbo_v2`, `eleven_v3`. STT: `scribe_v1`, `scribe_v1_experimental`. Voice changer: `eleven_multilingual_sts_v2`. Output formats: `mp3_*`, `pcm_*`, `ulaw_8000`.
|
|
25
|
+
- `multix check` and `.env.example` document `ELEVENLABS_API_KEY`.
|
|
26
|
+
|
|
27
|
+
## [0.0.6] - 2026-05-05
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
- `multix byteplus generate-3d` (alias `3d`) — BytePlus Hyper3D / Hitem3d 3D generation on the ARK async tasks endpoint. Models: `hyper3d-gen2-260112` (text-to-3D + image-to-3D, 1–5 refs), `hitem3d-2-0-251223` (image-to-3D). Provider-specific knobs (`--mesh_mode`, `--hd_texture`, `--material`, `--ff`, `--resolution`, …) passed via `--flags <raw>` pass-through. Auto-detects output extension (`.glb` / `.gltf` / `.zip` …) from response URL.
|
|
31
|
+
- `multix byteplus status --download` extended to also fetch `content.file_url` for 3D tasks alongside `content.video_url` for video.
|
|
32
|
+
- New env override: `BYTEPLUS_3D_MODEL` (default `hyper3d-gen2-260112`).
|
|
33
|
+
|
|
8
34
|
## [0.0.5] - 2026-05-05
|
|
9
35
|
|
|
10
36
|
### Added
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
AI multimodal CLI — generate images/video/speech/music, analyze and transcribe media files, convert documents to Markdown, and optimize media with ffmpeg/ImageMagick.
|
|
4
4
|
|
|
5
|
-
Supports **Gemini** (analyze, transcribe, generate, Veo video, Flash TTS), **MiniMax** (image, video, speech, music), **OpenRouter** (image generation), **Leonardo.Ai** (image, video, upscale),
|
|
5
|
+
Supports **Gemini** (analyze, transcribe, generate, Veo video, Flash TTS), **MiniMax** (image, video, speech, music), **OpenRouter** (image generation), **Leonardo.Ai** (image, video, upscale), **BytePlus** (Seedream image, Seedance video, Hyper3D / Hitem3d 3D), and **ElevenLabs** (TTS, voice cloning, STT, voice changer, SFX, music, dubbing, isolation, alignment).
|
|
6
6
|
|
|
7
7
|
## Install
|
|
8
8
|
|
|
@@ -47,11 +47,13 @@ Set at least one provider key. Add to `.env` in your project root or `~/.multix/
|
|
|
47
47
|
| `LEONARDO_DEFAULT_MODEL` | No | Default Leonardo image model UUID |
|
|
48
48
|
| `LEONARDO_VIDEO_MODEL` | No | Default Leonardo video model (default `MOTION2`) |
|
|
49
49
|
| `BYTEPLUS_API_KEY` | For BytePlus | [BytePlus](https://console.byteplus.com/auth/api-keys) |
|
|
50
|
+
| `ELEVENLABS_API_KEY` | For ElevenLabs | [ElevenLabs](https://elevenlabs.io/app/settings/api-keys) |
|
|
50
51
|
| `ARK_API_KEY` | No | Fallback for `BYTEPLUS_API_KEY` (Volcengine ARK shared name) |
|
|
51
52
|
| `BYTEPLUS_BASE_URL` | No | Override BytePlus base (default `https://ark.ap-southeast.bytepluses.com/api/v3`) |
|
|
52
53
|
| `BYTEPLUS_IMAGE_MODEL` | No | Default Seedream model (default `seedream-4-0-250828`) |
|
|
53
54
|
| `BYTEPLUS_VIDEO_MODEL` | No | Default Seedance model (default `seedance-2.0`) |
|
|
54
55
|
| `BYTEPLUS_VIDEO_PARAMS_MODE` | No | `flags` (default) or `structured` — how video params are encoded |
|
|
56
|
+
| `BYTEPLUS_3D_MODEL` | No | Default 3D model (default `hyper3d-gen2-260112`) |
|
|
55
57
|
| `MULTIX_OUTPUT_DIR` | No | Override default output dir (`./multix-output`) |
|
|
56
58
|
| `OPENROUTER_IMAGE_MODEL` | No | Default OpenRouter model |
|
|
57
59
|
| `OPENROUTER_FALLBACK_MODELS` | No | Comma-separated fallback model ids |
|
|
@@ -220,6 +222,19 @@ multix byteplus reference-to-video --prompt "..." \
|
|
|
220
222
|
[video flags] [-v]
|
|
221
223
|
# On Windows, escape literal colons in paths with `\:` or use URLs.
|
|
222
224
|
|
|
225
|
+
# 3D model generation (alias: 3d) — Hyper3D / Hitem3d, async with auto-poll + download
|
|
226
|
+
multix byteplus generate-3d --prompt "Quadrupedal mech robot" \
|
|
227
|
+
--flags "--mesh_mode Raw --hd_texture true --material PBR" \
|
|
228
|
+
[--model hyper3d-gen2-260112] [--seed 8648] [--async] [--output model.glb] [-v]
|
|
229
|
+
|
|
230
|
+
# Image-to-3D (1–5 reference images, path or URL)
|
|
231
|
+
multix byteplus 3d --input-image ./front.png ./side.png ./back.png \
|
|
232
|
+
--prompt "Generate from these views" [--model hyper3d-gen2-260112]
|
|
233
|
+
|
|
234
|
+
# Hitem3d uses different flags
|
|
235
|
+
multix byteplus 3d --input-image ./cat.png --model hitem3d-2-0-251223 \
|
|
236
|
+
--flags "--ff 2 --resolution 1536pro"
|
|
237
|
+
|
|
223
238
|
# Poll a task / download MP4
|
|
224
239
|
multix byteplus status <taskId> [--wait] [--wait-timeout 600000] [--download] [--output <path>] [-v]
|
|
225
240
|
```
|
|
@@ -227,12 +242,87 @@ multix byteplus status <taskId> [--wait] [--wait-timeout 600000] [--download] [-
|
|
|
227
242
|
**BytePlus models:**
|
|
228
243
|
- Image: `seedream-4-0-250828`
|
|
229
244
|
- Video: `seedance-2.0-fast`, `seedance-2.0` (default), `seedance-2.0-pro`
|
|
245
|
+
- 3D: `hyper3d-gen2-260112` (Hyper3D Gen2, default — text-to-3D + image-to-3D), `hitem3d-2-0-251223` (Hitem3d 2.0 — image-to-3D)
|
|
230
246
|
|
|
231
247
|
**Notes:**
|
|
232
248
|
- Auth: `BYTEPLUS_API_KEY` is preferred; `ARK_API_KEY` is accepted as a fallback for compatibility with the Volcengine ARK SDK ecosystem.
|
|
233
249
|
- Video params can be encoded as flags inside the prompt text (default, e.g. `--rs 1080p --dur 8 --rt 16:9`) or as a top-level `parameters` object — set `BYTEPLUS_VIDEO_PARAMS_MODE=structured` to switch.
|
|
250
|
+
- 3D model knobs are passed via `--flags <raw>`, appended to the prompt text. Hyper3D supports `--mesh_mode`, `--hd_texture`, `--material`, `--addons`, `--quality_override`, `--use_original_alpha`, `--bbox_condition`, `--TAPose`. Hitem3d supports `--ff`, `--resolution`. See [BytePlus 3D docs](https://docs.byteplus.com/en/docs/ModelArk/2279947).
|
|
251
|
+
- 3D output is a textured model file (`.glb`/`.gltf`/`.zip` depending on flags). The CLI auto-detects the extension from the response URL.
|
|
252
|
+
- `multix byteplus status <taskId> --download` works for both video (`content.video_url`) and 3D (`content.file_url`) tasks.
|
|
234
253
|
- **Task cancellation is not supported** — there is no verified DELETE endpoint on the ARK API. Submitted tasks must run to completion.
|
|
235
254
|
|
|
255
|
+
### `multix elevenlabs`
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# Text-to-speech (sync, returns audio bytes)
|
|
259
|
+
multix elevenlabs tts --text "Hello world" [--voice <voiceId>] [--model eleven_multilingual_v2] \
|
|
260
|
+
[--format mp3_44100_128] [--stability 0.5] [--similarity-boost 0.75] [--style 0.0] \
|
|
261
|
+
[--no-speaker-boost] [--language-code en] [--seed <n>] [--output out.mp3] [-v]
|
|
262
|
+
|
|
263
|
+
# Voices: list / get / search shared / design / persist / delete
|
|
264
|
+
multix elevenlabs voices list [--category cloned|generated|premade|professional]
|
|
265
|
+
multix elevenlabs voices get <voiceId>
|
|
266
|
+
multix elevenlabs voices search [--search "calm female"] [--language en] [--gender female] [--age young] [--accent american]
|
|
267
|
+
multix elevenlabs voices design --description "friendly female narrator" [--text "sample text"] [--auto-text]
|
|
268
|
+
multix elevenlabs voices create-from-preview --generated-voice-id <id> --name "My Voice" --description "..."
|
|
269
|
+
multix elevenlabs voices delete <voiceId>
|
|
270
|
+
|
|
271
|
+
# Instant voice cloning (multipart upload of 1-3 minutes of samples)
|
|
272
|
+
multix elevenlabs clone --name "My Voice" --files sample1.wav sample2.wav [--description "..."] [--remove-background-noise]
|
|
273
|
+
|
|
274
|
+
# Speech-to-speech voice changer
|
|
275
|
+
multix elevenlabs voice-changer --input source.mp3 --voice <voiceId> [--model eleven_multilingual_sts_v2] \
|
|
276
|
+
[--format mp3_44100_128] [--remove-background-noise] [--output changed.mp3] [-v]
|
|
277
|
+
|
|
278
|
+
# Speech-to-text (Scribe)
|
|
279
|
+
multix elevenlabs transcribe --input audio.mp3 [--model scribe_v1] [--language en] [--diarize] \
|
|
280
|
+
[--num-speakers 2] [--tag-audio-events] [--timestamps-granularity word] [--format text|json|srt|vtt] [--output out.txt]
|
|
281
|
+
|
|
282
|
+
# Sound effects
|
|
283
|
+
multix elevenlabs sfx --text "car engine starting" [--duration-seconds 5] [--prompt-influence 0.3] [--loop] \
|
|
284
|
+
[--format mp3_44100_128] [--output sfx.mp3]
|
|
285
|
+
|
|
286
|
+
# Music generation
|
|
287
|
+
multix elevenlabs music --prompt "dreamy synthwave loop" [--music-length-ms 30000] [--model music_v1] \
|
|
288
|
+
[--format mp3_44100_128] [--output song.mp3]
|
|
289
|
+
# OR with a structured composition plan
|
|
290
|
+
multix elevenlabs music --plan ./plan.json [--output song.mp3]
|
|
291
|
+
|
|
292
|
+
# Dubbing (async — submit and poll, then optionally --download)
|
|
293
|
+
multix elevenlabs dub --input video.mp4 --target-lang es [--source-lang en] [--num-speakers 2] \
|
|
294
|
+
[--watermark] [--start-time 0] [--end-time 60] [--highest-resolution] [--name "My Dub"] \
|
|
295
|
+
[--async] [--wait] [--download] [--poll-interval 10] [--wait-timeout 1800000] [--output dubbed.mp4]
|
|
296
|
+
multix elevenlabs dub-status <dubbingId> [--download <lang>] [--output dubbed.mp4]
|
|
297
|
+
|
|
298
|
+
# Voice isolator (strip background noise)
|
|
299
|
+
multix elevenlabs isolate --input noisy.mp3 [--output clean.mp3]
|
|
300
|
+
|
|
301
|
+
# Forced alignment (transcript ↔ audio timing)
|
|
302
|
+
multix elevenlabs align --input audio.mp3 --text "transcript here" [--output alignment.json]
|
|
303
|
+
# Or read transcript from file:
|
|
304
|
+
multix elevenlabs align --input audio.mp3 --text-file transcript.txt
|
|
305
|
+
|
|
306
|
+
# Account info / available models
|
|
307
|
+
multix elevenlabs account
|
|
308
|
+
multix elevenlabs models
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
**ElevenLabs models:**
|
|
312
|
+
- TTS: `eleven_multilingual_v2` (default), `eleven_flash_v2_5`, `eleven_flash_v2`, `eleven_turbo_v2_5`, `eleven_turbo_v2`, `eleven_v3`
|
|
313
|
+
- STT: `scribe_v1`, `scribe_v1_experimental`
|
|
314
|
+
- Voice changer: `eleven_multilingual_sts_v2` (default)
|
|
315
|
+
- Music: `music_v1`
|
|
316
|
+
|
|
317
|
+
**Recommended voices** (verified from ElevenLabs conversational voice design guide):
|
|
318
|
+
`Alexandra` `kdmDKE6EkgrWrrykO9Qt` (default), `Archer` `L0Dsvb3SLTyegXwtm47J`, `Jessica Anne Bogart` `g6xIsTj2HwM6VR4iXFCw`, `Hope` `OYTbf65OHHFELVut7v2H`, `Eryn` `dj3G1R1ilKoFKhBnWOzG`, `Stuart` `HDA9tsk27wYi3uq0fPcK`, `Mark` `1SM7GgM6IMuvQlz2BwM3`, `Angela` `PT4nqlKZfc06VW1BuClj`, `Finn` `vBKc2FfBKJfcZNyEt1n6`, `Cassidy` `56AoDkrOh6qfVPDXZ7Pt`, `Grandpa Spuds Oxley` `NOpBlnGInO9m6vDvFkFC`. Use `multix elevenlabs voices list` for the full library.
|
|
319
|
+
|
|
320
|
+
**Notes:**
|
|
321
|
+
- Auth header is `xi-api-key`; base URL is `https://api.elevenlabs.io/v1`.
|
|
322
|
+
- Most generation endpoints (TTS, SFX, Music, Voice Changer, Isolation) return audio bytes synchronously.
|
|
323
|
+
- Dubbing is async: submit → poll → download per-language tracks.
|
|
324
|
+
- Output format strings combine codec + sample rate + bitrate, e.g. `mp3_44100_128`, `pcm_24000`, `ulaw_8000`.
|
|
325
|
+
|
|
236
326
|
### `multix media`
|
|
237
327
|
|
|
238
328
|
Requires `ffmpeg` (video/audio) and `magick` (images) on PATH.
|