# メディアと音声のコマンド

> Nodaro CLI の voice、media、audio、edit の各コマンドで、トラックの声を差し替え、字幕を焼き込み、スライドショーとオーバーレイを作成し、オーディオを処理し、編集を計画します。

Source: https://nodaro.ai/ja/docs/developers/cli/media-commands

Nodaro CLI の**メディアと音声のコマンド**は、オーディオ、動画、画像を直接扱います。`voice` グループはトラックの声を差し替え、ボイスをデザインします。`media` はメディアのインポート、トリミング、字幕付け、合成を行います。`audio` は音を処理し、文字起こしします。`edit` は、ポッドキャストや長い動画の編集を計画し、適用します。各コマンドは、エディターの対応するノードと同じエンジンで動作します。

ジョブを開始するコマンドはすべて、結果を待つ `--watch`、ポーリングの間隔を設定する `--poll-interval <ms>`、そして `--json` を受け付けます。[出力と終了コード](https://nodaro.ai/docs/developers/cli/output)を参照してください。

## ボイス
```bash
nodaro voice list [--clones] [--json]
nodaro voice changer --voice <id> --audio <url>|--video <url> [--model <id>] [--stability <0..1>] [--similarity <0..1>] [--style <0..1>] [--use-speaker-boost] [--seed <n>] [--remove-background-noise] [--watch] [--poll-interval <ms>] [--json]
nodaro voice recast --audio <url>|--video <url> --voices <v1,v2,...>|--voices-json <json> [--model <id>] [--output video|stems] [--analysis-json <json>|--analysis-file <path>] [--no-preserve-background] [--separation-quality fast|best] [--music-volume-mode match|normalize|manual] [--music-volume <0-200>] [--remove-background-noise] [--voice-fx <preset>] [--voice-fx-mix <0-100>] [--voice-fx-delay <20-2000>] [--voice-fx-decay <0-1>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice analyze --audio <url>|--video <url> [--separation-quality fast|best] [--suggest-title] [--watch] [--poll-interval <ms>] [--json]
nodaro voice export --source <videoUrl> --tracks-json <json>|--tracks-file <path> [--voice-fx <preset>] [--voice-fx-mix <0-100>] [--voice-fx-delay <20-2000>] [--voice-fx-decay <0-1>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice design --text <line> --description <desc> [--model <id>] [--loudness <-1..1>] [--guidance-scale <0-100>] [--seed <n>] [--quality <n>] [--enhance] [--user-prompt <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice remix --text <text> --description <desc> [--user-prompt <text>] [--watch] [--poll-interval <ms>] [--json]
nodaro voice dub --audio <url> --target-language <code> [--source-language <code>] [--num-speakers <1-20>] [--disable-voice-cloning] [--drop-background-audio] [--watch] [--poll-interval <ms>] [--json]
nodaro voice clones list [--json]
nodaro voice clones delete <id> [--json]
```

| コマンド | 内容 |
| --- | --- |
| `voice list` | 標準ボイスを一覧表示します。`--clones` を付けると、自分のクローンを表示します。その名前または ID を `--voice` と `--voices` で使います。 |
| `voice changer` | [**ボイスチェンジャー**（Voice Changer）](https://nodaro.ai/docs/nodes/audio/voice-changer)ノードのように、1 つのオーディオトラックまたは 1 つの発話動画の声を、単一のボイスに差し替えます。`voice change` も同じコマンドです。 |
| `voice recast` | [**ボイスチェンジャー Pro**（Voice Changer Pro）](https://nodaro.ai/docs/nodes/audio/voice-changer-pro)ノードのように、録音のすべての話者の声を一度に差し替えます。`voice pro` も同じコマンドです。 |
| `voice analyze` | 声を差し替えずに話者を検出し、`--watch` を付けると一覧を表示します。Nodaro Cloud 専用です。 |
| `voice export` | ミックスしたトラックのセットから、最終的な動画をレンダリングします。Nodaro Cloud 専用です。 |
| `voice design` | [**ボイスデザイン**（Voice Design）](https://nodaro.ai/docs/nodes/audio/voice-design)ノードのように、テキストの説明から新しい合成ボイスをデザインします。 |
| `voice remix` | [**ボイスリミックス**（Voice Remix）](https://nodaro.ai/docs/nodes/audio/voice-remix)ノードのように、クローンを作らず、説明したボイスでテキストを読み上げます。 |
| `voice dub` | [**吹き替え**（Dubbing）](https://nodaro.ai/docs/nodes/audio/dubbing)ノードのように、録音を別の言語に吹き替え、各話者の声を保ちます。 |
| `voice clones` | クローン機能が廃止される前に作られたボイスクローンを、一覧表示および削除します。 |

### 複数の話者の声を差し替える
`voice recast` は、Nodaro Cloud で動作します。セルフホスティング環境では、[Nodaro Cloud への接続](https://nodaro.ai/docs/self-hosting/cloud-connect)を通じて動作します。

- `--voices` は、Nodaro が検出した順に、ボイスを話者へ割り当てます。`keep` という語は、その話者の元の声を保ちます。`--voices Rachel,keep,Aria` のように書きます。
- `--voices-json` は、代わりに SDK の生の配列を受け取ります。ボイス ID、ボイスごとの設定オブジェクト、または元の声を保つ話者には `null` を指定します。
- `--output stems` は、完成した動画の代わりに、対話的なミックス用に、話者ごとの 1 本のドライなトラックを返します。ミックスは `voice export` でレンダリングします。
- `--analysis-file` は、保存済みの `voice analyze` の結果を再利用するので、話者が再び検出されることはありません。

### 対話形式で声を差し替えるフロー
1 ステップの `voice recast` は、1 回の呼び出しで完成した動画をレンダリングします。3 ステップのフローでは、レンダリングの前に、まず話者を確認し、結果をミックスできます。

```bash
# 1. Detect the speakers. Save the job's output_data for step 2.
nodaro voice analyze --video https://example.com/panel.mp4 --watch --json > analyze.json
jq .output_data analyze.json > analysis.json

# 2. Recast to dry stems, reusing the analysis (no second detection)
nodaro voice recast --video https://example.com/panel.mp4 --voices Rachel,keep,Aria \
  --analysis-file analysis.json --output stems --watch

# 3. Set the level and mute of each track, then render
nodaro voice export --source https://example.com/panel.mp4 --tracks-file mix.json \
  --voice-fx hall --voice-fx-mix 25 --watch
```

手順 3 では、`mix.json` の各トラックは、手順 2 のステムから取得した `url`、0〜200 の `gain`、`muted` フラグ、省略可能な `kind` を持つオブジェクトです。エクスポートは、動画ストリームをそのままコピーします。再エンコードされることはありません。

## メディア
```bash
nodaro media download <url> [--max-height <px>] [--section <a-b>] [--watch] [--json]
nodaro media metadata <url> [--json]
nodaro media trim-video --video <url> --start <sec> --end <sec>|--keep-first <sec>|--keep-last <sec> [--watch] [--poll-interval <ms>] [--json]
nodaro media trim-audio --video <url>|--audio <url> [--start <sec>] [--end <sec>] [--format mp3|wav|aac] [--watch] [--poll-interval <ms>] [--json]
nodaro media add-captions <videoUrl> [options, see below]
nodaro media still-to-video --image <url> --audio <url> [--motion none|zoom-in|zoom-out|pan-left|pan-right|ken-burns] [--intensity <1-10>] [--resolution 720p|1080p|4K] [--aspect-ratio <W:H>] [--fps 24|30] [--fit cover|contain] [--pad-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media slideshow --images <url...> [--audio <url>] [--durations "10,auto,auto"] [--per-image <sec>] [--transition <id>] [--transition-duration <sec>] [--motion none|zoom-in|zoom-out|ken-burns|alternate] [--intensity <1-10>] [--resolution 720p|1080p|4K] [--aspect-ratio <W:H>] [--fps 24|30] [--fit cover|contain] [--pad-color <hex>] [--watch] [--json]
nodaro media collage <imageUrls...> [--sizes <0-3,...>] [--numbered] [--label <text>...] [--badge-position top-left|top-right] [--layout smart|grid] [--resolution 2K|4K] [--aspect-ratio <W:H>] [--gap <px>] [--background-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media overlay <imageUrl> [layerUrls...] [--layers-file <path>] [--anchor <anchor>] [--x <%>] [--y <%>] [--width <%>] [--opacity <0-1>] [--platform <id>...] [--qr-text <text>] [--mask-mode none|layers|around|outside] [--mask-spread <px>] [--canvas <WxH>] [--base-fit contain|cover] [--background-color <hex>] [--output-format png|jpg|webp] [--watch] [--poll-interval <ms>] [--json]
nodaro media overlay-placement <imageUrl> [--intent <text>] [--aspect <ratio>] [--safe-area <x,y,w,h>] [--json]
nodaro media video-overlay <videoUrl> [layerUrls...] [--at <start[-end]>...] [--preset card|corner-badge|full-frame] [--corner top-left|top-right|bottom-left|bottom-right] [--layers-file <path>] [--aspect 16:9|9:16|1:1|4:5] [--base-fit cover|contain] [--background-color <hex>] [--watch] [--poll-interval <ms>] [--json]
nodaro media save <url> [--filename <name>] [--type image|video|audio] [--watch] [--poll-interval <ms>] [--json]
```

| コマンド | 内容 |
| --- | --- |
| `media download` | YouTube、TikTok、Instagram、X、Facebook から、動画を自分のストレージにインポートします。`--section` は、秒単位で 1 つの時間範囲を取得します。`--watch` はリアルタイムの進行状況をストリーミングし、後でポーリングするジョブはありません。 |
| `media metadata` | メディアの URL の長さ、サイズ、タイトルを、ダウンロードせずに読み取ります。 |
| `media trim-video` | 開始時刻と終了時刻で動画をカットするか、最初または最後の秒数だけを残します。 |
| `media trim-audio` | 動画またはオーディオファイルの音声をカットし、MP3、WAV、AAC のいずれかで保存します。 |
| `media add-captions` | 動画に字幕を焼き込みます。[字幕](#captions)を参照してください。 |
| `media still-to-video` | 1 枚の静止画と 1 つのオーディオファイルを、0 クレジットで MP4 にします。動画の長さはオーディオと同じなので、長さのオプションはありません。`--motion` は、静止画にアニメーションを付けます。 |
| `media slideshow` | 2〜100 枚の画像から、0 クレジットで MP4 のスライドショーを作ります。オーディオを添えることもできます。 |
| `media collage` | 2〜30 枚の画像を、1 枚の大きな画像に合成します。 |
| `media overlay` | AI を使わず、最大 12 個のレイヤーを、ピクセル単位で正確にベース画像の上に配置します。 |
| `media overlay-placement` | 1 つのレイヤーをどこに置くべきかを、ビジョンモデルに尋ねます。 |
| `media video-overlay` | AI を使わず、20 クレジットで、1〜20 個のタイミング付き画像レイヤーを動画の上に配置します。 |
| `media save` | メディアの URL を、画像、動画、オーディオファイルのいずれかとして、自分のストレージに保存します。 |

### スライドショー
オーディオがある場合、スライドショーの長さはそのオーディオが決めます。`--durations` で固定した長さは比例して調整され、CLI がその旨を知らせます。オーディオがない場合、スライドショーは無音になり、長さは画像の枚数に `--per-image` を掛けたものになります。

### コラージュ
- `--sizes` は、画像の順番どおりに、各画像へ相対的なサイズのヒントを与えます。`0` は自動、`1` は大（幅がおよそ 2 倍）、`2` は中、`3` は小（幅がおよそ半分）です。サイズのヒントは、スマートレイアウトでのみ機能します。
- `--numbered` は、ストーリーボード用に、各画像の隅に 1 から始まる連番を付けます。
- `--badge-position` は、その隅の位置を設定します。デフォルトの `top-left` または `top-right` です。ラベルの位置もここで決まります。
- `--label` は、番号の後にキャプションを追加します。画像ごとに、順番に 1 回ずつ繰り返します。空の `""` は、その画像をスキップします。

### 画像オーバーレイ
- ベース画像の後に続く画像 URL は、画像レイヤーになります。`--anchor`、`--x`、`--y`、`--width`、`--opacity` を共有し、透かしに向いています。
- `--layers-file` は、代わりにレイヤーの完全な JSON 配列を受け取ります。レイヤーごとのオプション、テキスト、QR コード、図形の種類です。
- 配置は、ベース画像に対するパーセントで指定するので、1 つのコマンドで 1K のプレビューと 4K のレンダリングの両方に対応します。
- 繰り返し指定できる `--platform` は、そのプラットフォームのサイズでも合成画像をレンダリングします。ベースのレンダリングは 10 クレジットで、プラットフォームごとに 2 クレジット追加されます。ジョブの出力には、追加のレンダリングが `variants` として一覧表示されます。
- `overlay-placement` は、同じパーセント単位で、アンカー、`x`、`y`、`width`、そして 1 行の理由を答えます。ポーリングするジョブなしで即座に答え、画像からテキストへの呼び出し 1 回分の料金がかかります。

### 動画オーバーレイ
- `--at` は、画像 URL ごとに、順番どおりに 1 つ指定します。`3` は 3 秒目から最後まで、`1.2-2.6` は 1.2 秒から 2.6 秒までを意味します。
- `--preset` と `--corner` は、URL として指定したすべての画像レイヤーに適用されます。
- `--layers-file` は、代わりにレイヤーの完全な配列を受け取ります。レイヤーごとのボックス、不透明度、アニメーション、重なり順です。
- `--base-fit` と `--background-color` には、`--aspect` が必要です。
- ベース動画の音声は、変更されずに保たれます。

レイヤーのオプションについては、[**動画オーバーレイ**（Video Overlay）](https://nodaro.ai/docs/nodes/video/video-overlay)ノードを参照してください。

## 字幕
```bash
nodaro media add-captions <videoUrl> [--text <text>] [--captions-file <file.json>] [--style subtitle|word-highlight|karaoke|tiktok-words|word-pop|bouncy] [--look outline|clean] [--position bottom|top|center] [--position-y <pct>] [--font-size <px>] [--font-family <name>] [--font-weight <100-900>] [--color <c>] [--background-color <c>] [--stroke-color <c>] [--stroke-width <px>] [--highlight-color <c>] [--uppercase|--no-uppercase] [--max-words-per-line <1-20>] [--animate|--no-animate] [--no-auto-transcribe] [--transcribe-provider elevenlabs-stt|incredibly-fast-whisper|whisper] [--segments-file <file.json>] [--watch] [--poll-interval <ms>] [--json]
```

`media add-captions` には、[**字幕を追加**（Add Captions）](https://nodaro.ai/docs/nodes/video/add-captions)ノードと同じく、2 種類のスタイルがあります。

| スタイル | 表示内容 |
| --- | --- |
| `subtitle` | 単語のアニメーションのない、静的な字幕です。 |
| `word-highlight`、`karaoke`、`tiktok-words`、`word-pop`、`bouncy` | 単語ごとにアニメーションする、キネティック字幕です。`word-highlight`、`karaoke`、`bouncy` は、1 行ずつ保持して表示します。 |

### 字幕のテキスト
- `subtitle` では、`--text` は動画全体を通して 1 つの静的なブロックとして焼き込まれます。文字起こしに置き換えられることはありません。発話に字幕を付けるには、`--text` を省略します。
- キネティックスタイルでは、`--text` は、文字起こしが何も返さなかったとき、または `--no-auto-transcribe` を渡したときのフォールバックにすぎません。
- `--captions-file` は、単語のタイミング付きエントリーの JSON 配列 `[{ text, startMs, endMs }]` で、キネティックスタイルでは単語ごとに 1 エントリーです。`nodaro audio transcribe` の結果の `words` は、そのままの形で使えます。このファイルは `--no-auto-transcribe` と組み合わせます。
- `--segments-file` は、時間範囲ごとに、独自のスタイル、ルック、位置を与えます。範囲が重なってはいけません。

### スタイリング
- スタイリングのオプションは、`subtitle` にもスタイルを適用します。`--look`、`--font-family`、`--font-weight`、`--stroke-color`、`--stroke-width`、`--uppercase`、`--position-y`、`--max-words-per-line` です。スタイルを適用した `subtitle` は、キネティックスタイルと同じ料金になります。何も適用しない `subtitle` は、低いほうの料金のままです。
- `--highlight-color` と `--animate` は、キネティックスタイルでのみ機能します。`subtitle` では拒否されます。
- `--animate` は、デフォルトでオンです。`--no-animate` は、各単語の動きを止めますが、グルーピングとハイライトの色は保ちます。
- `--look` を指定しない場合、キネティックスタイルは `outline` で、`subtitle` は `clean` でレンダリングされます。
- `--max-words-per-line` は、1 つの字幕行、または `tiktok-words` の 1 ページに表示する単語数を、1〜20 の範囲で制限します。フレーム幅、文の終わり、0.5 秒以上の間も、行の区切りになります。1〜2 語にすると、テンポの速いインパクトのある字幕になります。未設定のままにすると、幅いっぱいに表示します。`--text` を指定した `subtitle` では、行の区切りだけを設定し、`word-pop` には影響しません。
- キネティックスタイル、またはスタイルを適用したレンダリングは、ソースのフレームレートを、15〜60 fps の整数として保ちます。可変フレームレートまたは非常に長いソースは、30 fps でレンダリングされます。

### 文字起こしエンジン
`--transcribe-provider` は、発話を文字起こしするエンジンを選びます。キネティックスタイルには単語のタイミングが必要で、デフォルトの `incredibly-fast-whisper`、または `elevenlabs-stt` を使います。`subtitle` はフレーズのタイミングだけで足りるので、`whisper` もそこで使えます。

## オーディオ
```bash
nodaro audio separate --audio <url> [--mode vocal_instrumental|stems] [--quality auto|fast|best] [--watch] [--poll-interval <ms>] [--json]
nodaro audio isolate --audio <url> [--watch] [--poll-interval <ms>] [--json]
nodaro audio fx --audio <url> [--preset <preset>] [--mix <0-100>] [--delay <20-2000>] [--decay <0-1>] [--eq-low <db>] [--eq-high <db>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio mix --audio <url> --audio <url> ... [--volumes <csv>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio adjust-volume --audio <url>|--video <url> [--volume <0-200>] [--normalize] [--fade-in <sec>] [--fade-out <sec>] [--watch] [--poll-interval <ms>] [--json]
nodaro audio combine --segment <url[@a-b]> --segment ... [--watch] [--poll-interval <ms>] [--json]
nodaro audio transcribe --audio <url> [--provider elevenlabs-stt|incredibly-fast-whisper|whisper] [--language <code>] [--diarize] [--tag-audio-events] [--word-timestamps] [--watch] [--poll-interval <ms>] [--json]
```

| コマンド | 内容 | ノード |
| --- | --- | --- |
| `audio separate` | ボーカルをインストゥルメンタルから分離するか、ステムに分離します。 | [**音源分離**（Audio Separation）](https://nodaro.ai/docs/nodes/audio/audio-separation) |
| `audio isolate` | 声を残し、それ以外を取り除きます。 | [**音声抽出**（Voice Extractor）](https://nodaro.ai/docs/nodes/audio/voice-extractor) |
| `audio fx` | ミックス、ディレイ、ディケイ、イコライザーの設定で、エフェクトのプリセットを適用します。 | [**オーディオ FX**（Audio FX）](https://nodaro.ai/docs/nodes/audio/audio-fx) |
| `audio mix` | トラックごとに音量を設定して、複数のトラックをミックスします。 | [**オーディオをミックス**（Mix Audio）](https://nodaro.ai/docs/nodes/audio/mix-audio) |
| `audio adjust-volume` | 音量を変更し、ノーマライズし、フェードインまたはフェードアウトします。 | [**音量調整**（Adjust Volume）](https://nodaro.ai/docs/nodes/audio/adjust-volume) |
| `audio combine` | セグメントを順番につなげます。`url@a-b` は、ファイルの 1 つの時間範囲を指定します。 | [**オーディオを結合**（Combine Audio）](https://nodaro.ai/docs/nodes/audio/combine-audio) |
| `audio transcribe` | 発話をテキストにします。 | [**文字起こし**（Transcribe）](https://nodaro.ai/docs/nodes/audio/transcribe) |

これらは、ボイスチェンジャー Pro が組み合わせて使っている構成要素で、単独でも使えます。

### 文字起こしエンジン
| エンジン | 単語のタイミング | ほかにできること |
| --- | --- | --- |
| `elevenlabs-stt` | 常に返します | `--diarize`（誰がいつ話しているか）と `--tag-audio-events` |
| `incredibly-fast-whisper` | `--word-timestamps` を付けると返します | |
| `whisper` | 返しません。フレーズ単位のセグメントのみです。`--word-timestamps` は、クレジットが使われる前に拒否されます | |

`--provider` を省略すると、`whisper` エンジンが実行されます。単語のタイミングが必要なときは、必ずエンジンを指定してください。

完了したジョブの `output_data` には、`text`、`words`（単語ごとに 1 エントリー、ミリ秒単位）、`json`（正規化された文字起こし、こちらもミリ秒単位）が含まれます。トップレベルの `segments` リスト（秒単位）は、`whisper` と `incredibly-fast-whisper` にのみ存在します。`elevenlabs-stt` は返さないので、`words` を読み取ってください。キネティックスタイルでレンダリングするには、`words` を `media add-captions --captions-file` に渡します。

## 編集
edit のコマンドは、ポッドキャストや長い動画のための、編集用の構成要素です。

```bash
nodaro edit silence-detect <audioUrl> [--threshold-db=-35] [--min-silence-ms <ms>] [--pad-ms <ms>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit audio-sync (--source <[id=]url> ... | --sources-file <file.json>) [--reference <id>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit apply-edl --edl <file.json> [--transcript <file.json>] [--source <url> ...] [--output video|audio] [--quality proxy|final] [--crossfade-ms <ms>] [--watch] [--poll-interval <ms>] [--json]
nodaro edit plan --mode tighten|clips|chapters --plan-tier economy|standard|premium --transcript <file.json> (--source <url[@audio|@video]> ... | --sources-file <file.json>) [--silence <file.json>] [--instructions <text>] [--style-guide <text>] [--count <n>] [--target-duration-sec <n>] [--target-aspect 16:9|9:16|1:1|4:5] [--platform <name>] [--watch] [--poll-interval <ms>] [--json]
```

| コマンド | 内容 | ノード |
| --- | --- | --- |
| `edit silence-detect` | 録音の中の無音の部分を見つけます。 | [**無音検出**（Silence Detect）](https://nodaro.ai/docs/nodes/audio/silence-detect) |
| `edit audio-sync` | 同じ出来事を収録した 2〜6 本の録音（オーディオまたは動画）の位置をそろえます。 | [**音声同期**（Audio Sync）](https://nodaro.ai/docs/nodes/audio/audio-sync) |
| `edit plan` | 文字起こしから編集を計画します。テンポを詰める、クリップを切り出す、チャプターを付けるのいずれかです。 | [**編集プラン**（Edit Plan）](https://nodaro.ai/docs/nodes/video/edit-plan) |
| `edit apply-edl` | 編集決定リスト（EDL）を、動画またはオーディオファイルとしてレンダリングします。 | [**EDL 適用**（Apply EDL）](https://nodaro.ai/docs/nodes/video/apply-edl) |

`edit audio-sync` は、`id=url` の形で ID を指定しない限り、録音に `source-1`、`source-2` のように名前を付けます。その `output_data.json` には、3 つのフィールドがあります。

- `reference`：ほかの録音がそろえられる基準となる録音です。`--reference` で選びます。
- `offsets`：録音ごとに 1 エントリーで、`sourceId`、`offsetMs`、`confidence`、`driftMsPerHour` を持ちます。
- `notes`：位置合わせについての備考です。

録音内のある時刻は、`referenceMs = sourceMs + offsetMs` で基準の時刻に変換されます。

## Frequently asked questions

### CLI から、動画の複数の話者の声を差し替えるには、どうすればよいですか？

--video と --voices を指定して nodaro voice recast を実行します。--voices には、検出された順に話者ごとのボイスを 1 つずつ指定します。元の声のままにする話者には、--voices Rachel,keep,Aria のように keep と書きます。

### 単語のタイミングを返す文字起こしエンジンは、どれですか？

elevenlabs-stt は常に単語のタイミングを返し、incredibly-fast-whisper は --word-timestamps を付けると返します。whisper が返すのはフレーズ単位のセグメントだけです。--provider を省略すると whisper エンジンが実行されるので、単語が必要なときは必ずエンジンを指定してください。

### still-to-video と slideshow には、クレジットがかかりますか？

かかりません。nodaro media still-to-video と nodaro media slideshow は、AI モデルを一切使わずに動画をレンダリングするため、0 クレジットです。

### 自分で修正した単語で、動画に字幕を付けるには、どうすればよいですか？

単語単位のエンジンで音声を文字起こしし、保存した JSON ファイル内の単語を編集してから、そのファイルを --captions-file と --no-auto-transcribe を付けて nodaro media add-captions に渡します。

### Nodaro Cloud が必要なメディアコマンドは、どれですか？

voice analyze と voice export は、Nodaro Cloud でのみ動作します。voice recast は Nodaro Cloud で動作し、セルフホスティング環境では、Nodaro Cloud への接続を通じて動作します。
