sonilo-cli 0.14.2__tar.gz → 0.15.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.
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/PKG-INFO +10 -5
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/README.md +8 -3
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/pyproject.toml +2 -2
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/src/sonilo_cli/__init__.py +1 -1
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/src/sonilo_cli/__main__.py +16 -2
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/.gitignore +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/LICENSE +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/src/sonilo_cli/credentials.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/src/sonilo_cli/login.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/__init__.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/conftest.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/test_cli.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/test_context7.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/test_credentials.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/test_login.py +0 -0
- {sonilo_cli-0.14.2 → sonilo_cli-0.15.0}/tests/test_smoke.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: sonilo-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.15.0
|
|
4
4
|
Summary: Command-line interface for the Sonilo API: generate music and sound effects from text or video
|
|
5
5
|
Project-URL: Repository, https://github.com/sonilo-ai/sonilo-python
|
|
6
6
|
Author: Sonilo AI
|
|
@@ -8,7 +8,7 @@ License-Expression: MIT
|
|
|
8
8
|
License-File: LICENSE
|
|
9
9
|
Keywords: ai,cli,music,sfx,sonilo,text-to-music,video-to-music
|
|
10
10
|
Requires-Python: >=3.9
|
|
11
|
-
Requires-Dist: sonilo<0.
|
|
11
|
+
Requires-Dist: sonilo<0.17,>=0.16.0
|
|
12
12
|
Provides-Extra: dev
|
|
13
13
|
Requires-Dist: pytest>=8; extra == 'dev'
|
|
14
14
|
Requires-Dist: respx>=0.21; extra == 'dev'
|
|
@@ -289,10 +289,15 @@ command that produces no media file — nothing is generated:
|
|
|
289
289
|
# writes dubbed.es.mp4 and dubbed.fr.mp4
|
|
290
290
|
|
|
291
291
|
- `--languages` is comma-separated; omit it to use the server default `zh_cn,es,fr`. Supported
|
|
292
|
-
codes: `en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th
|
|
293
|
-
(`pt_br` is Brazilian Portuguese and `es_419` Latin American
|
|
294
|
-
`pt` and `es` stay unqualified).
|
|
292
|
+
codes: `en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th, ar,
|
|
293
|
+
tr, vi, id` (`pt_br` is Brazilian Portuguese and `es_419` Latin American
|
|
294
|
+
Spanish; plain `pt` and `es` stay unqualified, as does `ar`).
|
|
295
295
|
- Source videos may be at most 300 seconds long.
|
|
296
|
+
- `--no-lipsync` leaves the picture completely untouched. By default the speaker's mouth is
|
|
297
|
+
re-rendered to match the dubbed speech; with this flag the video comes back at its original
|
|
298
|
+
resolution and frame rate and only the audio is replaced, so the mouths keep moving to the
|
|
299
|
+
original language. Use it for footage with no on-camera speaker, or when preserving the exact
|
|
300
|
+
original picture matters more than matching lip movement.
|
|
296
301
|
- `--output` is a filename template, not a single destination: a dubbing task returns one video
|
|
297
302
|
per language, so `--output clip.mp4` writes `clip.es.mp4`, `clip.fr.mp4`, etc.
|
|
298
303
|
- Billing is per language, and dubbing has **no free trial runs** — see [Free trial](#free-trial)
|
|
@@ -273,10 +273,15 @@ command that produces no media file — nothing is generated:
|
|
|
273
273
|
# writes dubbed.es.mp4 and dubbed.fr.mp4
|
|
274
274
|
|
|
275
275
|
- `--languages` is comma-separated; omit it to use the server default `zh_cn,es,fr`. Supported
|
|
276
|
-
codes: `en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th
|
|
277
|
-
(`pt_br` is Brazilian Portuguese and `es_419` Latin American
|
|
278
|
-
`pt` and `es` stay unqualified).
|
|
276
|
+
codes: `en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th, ar,
|
|
277
|
+
tr, vi, id` (`pt_br` is Brazilian Portuguese and `es_419` Latin American
|
|
278
|
+
Spanish; plain `pt` and `es` stay unqualified, as does `ar`).
|
|
279
279
|
- Source videos may be at most 300 seconds long.
|
|
280
|
+
- `--no-lipsync` leaves the picture completely untouched. By default the speaker's mouth is
|
|
281
|
+
re-rendered to match the dubbed speech; with this flag the video comes back at its original
|
|
282
|
+
resolution and frame rate and only the audio is replaced, so the mouths keep moving to the
|
|
283
|
+
original language. Use it for footage with no on-camera speaker, or when preserving the exact
|
|
284
|
+
original picture matters more than matching lip movement.
|
|
280
285
|
- `--output` is a filename template, not a single destination: a dubbing task returns one video
|
|
281
286
|
per language, so `--output clip.mp4` writes `clip.es.mp4`, `clip.fr.mp4`, etc.
|
|
282
287
|
- Billing is per language, and dubbing has **no free trial runs** — see [Free trial](#free-trial)
|
|
@@ -4,13 +4,13 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "sonilo-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.15.0"
|
|
8
8
|
description = "Command-line interface for the Sonilo API: generate music and sound effects from text or video"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
11
11
|
requires-python = ">=3.9"
|
|
12
12
|
authors = [{ name = "Sonilo AI" }]
|
|
13
|
-
dependencies = ["sonilo>=0.
|
|
13
|
+
dependencies = ["sonilo>=0.16.0,<0.17"]
|
|
14
14
|
keywords = ["sonilo", "cli", "music", "sfx", "text-to-music", "video-to-music", "ai"]
|
|
15
15
|
|
|
16
16
|
[project.urls]
|
|
@@ -635,6 +635,9 @@ def cmd_dubbing(client: Sonilo, args: argparse.Namespace) -> None:
|
|
|
635
635
|
video=args.video,
|
|
636
636
|
video_url=args.video_url,
|
|
637
637
|
languages=languages,
|
|
638
|
+
# Only sent when the flag is present, so the server keeps owning the
|
|
639
|
+
# default (lip sync on).
|
|
640
|
+
lipsync=False if args.no_lipsync else None,
|
|
638
641
|
timeout=args.timeout,
|
|
639
642
|
)
|
|
640
643
|
if not result.outputs:
|
|
@@ -1006,8 +1009,19 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
1006
1009
|
"--languages", default=None,
|
|
1007
1010
|
help="Comma-separated target languages. Default: zh_cn,es,fr. "
|
|
1008
1011
|
"Supported: en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, "
|
|
1009
|
-
"it, ru, th. pt_br is Brazilian Portuguese and
|
|
1010
|
-
"American Spanish; plain pt and es stay
|
|
1012
|
+
"it, ru, th, ar, tr, vi, id. pt_br is Brazilian Portuguese and "
|
|
1013
|
+
"es_419 Latin American Spanish; plain pt and es stay "
|
|
1014
|
+
"unqualified, as does ar.",
|
|
1015
|
+
)
|
|
1016
|
+
p_dub.add_argument(
|
|
1017
|
+
"--no-lipsync", dest="no_lipsync", action="store_true",
|
|
1018
|
+
help="Leave the picture completely untouched. By default the speaker's "
|
|
1019
|
+
"mouth is re-rendered to match the dubbed speech; with this the "
|
|
1020
|
+
"video comes back at its original resolution and frame rate and "
|
|
1021
|
+
"only the audio is replaced, so the mouths keep moving to the "
|
|
1022
|
+
"original language. Use it for footage with no on-camera speaker, "
|
|
1023
|
+
"or when preserving the exact original picture matters more than "
|
|
1024
|
+
"matching lip movement.",
|
|
1011
1025
|
)
|
|
1012
1026
|
p_dub.add_argument(
|
|
1013
1027
|
"--output", default=None,
|
|
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
|