diff --git a/README.md b/README.md index 18b738f..4799e15 100644 --- a/README.md +++ b/README.md @@ -401,9 +401,10 @@ Async-only; use `submit()` plus async call. Pass exactly one of `video` / `video_url` (`video_url` must be **https**), plus optional `languages` — it defaults server-side to `["zh_cn", "es", "fr"]`; supported codes are `en, zh_cn, ja, ko, pt, pt_br, -es, es_419, de, fr, it, ru, th, ar, tr, vi, id` (`pt_br` is Brazilian -Portuguese and `es_419` Latin American Spanish; plain `pt` and `es` stay -unqualified, as does `ar`). The optional `ducking` boolean (default off, free) ducks the +es, es_419, de, fr, it, ru, th, ar, tr, vi, id, ta, ml, kn, gu, pa_in, sd_in` +(`pt_br` is Brazilian Portuguese and `es_419` Latin American Spanish; plain +`pt` and `es` stay unqualified, as does `ar`; `pa_in` and `sd_in` are Punjabi +and Sindhi as spoken in India, the only variants available). The optional `ducking` boolean (default off, free) ducks the background music/effects bed under the dubbed voice while it speaks; when off the bed is kept at a constant level. (Every endpoint's `ducking` defaults off, so this one is no exception.) diff --git a/context7.json b/context7.json index b075072..9357819 100644 --- a/context7.json +++ b/context7.json @@ -30,7 +30,7 @@ "Self-serve accounts start with free runs per endpoint (2 each for text-to-music, text-to-sfx, audio-ducking, video-analysis; 1 each for other video endpoints; none for dubbing), then bill normally. A first call succeeding is not proof billing works.", "Before a paid call, read client.account.services().get(\"trial\", {}) and degrade gracefully when a service's remaining is 0: that call raises TrialExhaustedError (402 trial_exhausted), which no retry fixes \u2014 ask for a payment method. trial may be absent.", "client.audio_ducking ducks an EXISTING music bed under an EXISTING voice track; nothing is generated. One of voice/voice_url, one of music/music_url. Voice may be audio or video (video returns a .mp4); music must be audio. Result: output_url, no stems.", - "client.dubbing dubs one video into many languages in one async call. languages is a list of en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th, ar, tr, vi, id; omit for the default [\"zh_cn\",\"es\",\"fr\"]. Billed per language; no free trial runs.", + "client.dubbing dubs one video into many languages in one async call; languages: en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th, ar, tr, vi, id, ta, ml, kn, gu, pa_in, sd_in; default [\"zh_cn\",\"es\",\"fr\"]. Billed per language, no free trial.", "A DubbingResult has no audio/video/output_url. Its results live in result.outputs, a map of language code to dubbed .mp4 URL: use result.save(lang, path) or result.save_all(dir). dubbing's video_url must be https.", "client.video_analysis returns a creative BRIEF, not media: the method is analyze() (not generate()) and VideoAnalysisResult has no save(). Read result.segments (start/end/label/prompt) and result.variations[i].prompt.", "Pass a video_analysis variation's prompt straight to video_to_music / video_to_sfx / video_to_sound as their prompt. It takes one of video/video_url plus optional prompt and variants_num (1-5, billed per brief); max 360s, 10s billing floor." diff --git a/sonilo-cli/README.md b/sonilo-cli/README.md index 86f5111..80f250f 100644 --- a/sonilo-cli/README.md +++ b/sonilo-cli/README.md @@ -274,8 +274,10 @@ command that produces no media file — nothing is generated: - `--languages` is comma-separated; omit it to use the server default `zh_cn,es,fr`. Supported codes: `en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, it, ru, th, ar, - tr, vi, id` (`pt_br` is Brazilian Portuguese and `es_419` Latin American - Spanish; plain `pt` and `es` stay unqualified, as does `ar`). + tr, vi, id, ta, ml, kn, gu, pa_in, sd_in` (`pt_br` is Brazilian Portuguese + and `es_419` Latin American Spanish; plain `pt` and `es` stay unqualified, as + does `ar`; `pa_in` and `sd_in` are Punjabi and Sindhi as spoken in India, the + only variants available). - Source videos may be at most 300 seconds long. - `--no-lipsync` leaves the picture completely untouched. By default the speaker's mouth is re-rendered to match the dubbed speech; with this flag the video comes back at its original diff --git a/sonilo-cli/src/sonilo_cli/__main__.py b/sonilo-cli/src/sonilo_cli/__main__.py index c490a6a..d4221ba 100644 --- a/sonilo-cli/src/sonilo_cli/__main__.py +++ b/sonilo-cli/src/sonilo_cli/__main__.py @@ -1081,9 +1081,11 @@ def build_parser() -> argparse.ArgumentParser: "--languages", default=None, help="Comma-separated target languages. Default: zh_cn,es,fr. " "Supported: en, zh_cn, ja, ko, pt, pt_br, es, es_419, de, fr, " - "it, ru, th, ar, tr, vi, id. pt_br is Brazilian Portuguese and " - "es_419 Latin American Spanish; plain pt and es stay " - "unqualified, as does ar.", + "it, ru, th, ar, tr, vi, id, ta, ml, kn, gu, pa_in, sd_in. " + "pt_br is Brazilian Portuguese and es_419 Latin American " + "Spanish; plain pt and es stay unqualified, as does ar. pa_in " + "and sd_in are Punjabi and Sindhi as spoken in India, the only " + "variants available.", ) p_dub.add_argument( "--no-lipsync", dest="no_lipsync", action="store_true",