# 話者マップ

> カメラ自身のマイクから、各話者がどのカメラに映っているかを判定します。手作業で表を埋めなくても、マルチカメラの編集が正しい人に切り替わります。

Source: https://nodaro.ai/ja/docs/nodes/audio/speaker-map

**話者マップ**ノードは、カメラ自身のマイクから、各話者がどのカメラに映っているかを判定します。そのため、誰も表を埋めなくても、マルチカメラの編集が正しい人に切り替わります。結果は[**カメラ切り替え**](https://nodaro.ai/docs/nodes/video/camera-switch)の**話者マップ**入力に接続します。カメラ切り替えは、各カットを話している人のカメラに割り当てます。

マルチカメラのポッドキャストやインタビューでは、通常、ゲストごとに専用のカメラがあり、どのカメラにもマイクが付いています。ゲストが話している間、そのゲストに向いたカメラが最も大きくその声を拾います。話者マップは、話者ラベル付きの文字起こしを受け取り、各話者が話している間の各カメラの音を聞いて、どのカメラが誰のものかを決めます。

ノードは、AI モデルやプロバイダーのキーを使わずにローカルで動作するので、すべてのエディションで使えます。

## 使いどころ
- ゲストごとにカメラがあるマルチカメラのポッドキャストで、**話者**の表を埋めずに、どのカメラが誰のものかをカメラ切り替えに伝える。
- ゲストがセッションごとに席を替えるインタビューで、セッションごとにカメラを改めて割り当てる。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**オーディオ › 分析 › 話者マップ**を選びます。

### 録音を接続する
2〜6 本の録音を**カメラ**入力に接続します。カメラと、ある場合はマスター録音と引きのショットです。

### 文字起こしとオフセットを接続する
**話者分離**をオンにして実行した[**文字起こし**](https://nodaro.ai/docs/nodes/audio/transcribe)ノードを、**文字起こし**入力に接続します。録音を別々に開始した場合は、[**音声同期**](https://nodaro.ai/docs/nodes/audio/audio-sync)の**オフセット**出力を**オフセット**入力に接続します。

### マスターと引きのショットを指定して実行する
設定パネルを開きます。ある場合は、**マスター録音**と**引きのショット**を選びます。**実行**をクリックします。ノードに、各話者がどのカメラに映っているかが表示されます。

Workflow: 音声同期がカメラの時間を合わせ、文字起こしが話者にラベルを付け、話者マップがどのカメラが誰のものかをカメラ切り替えに伝えます。

- 動画アップロード → 音声同期 (ソース)
- 動画アップロード → 話者マップ (カメラ)
- 音声同期 → 話者マップ (オフセット)
- 文字起こし → 話者マップ (文字起こし)
- 話者マップ → カメラ切り替え (話者マップ)

## 入力
| 入力 | 受け付けるもの | 役割 |
| --- | --- | --- |
| **カメラ** | オーディオと動画のノード、2〜6 本 | すべての録音。カメラと、ある場合はマスター録音と引きのショットです。各録音は接続元のノードで識別され、その ID は編集プランが同じ録音に付ける ID と同じです。そのため、マップはそのままカメラ切り替えに合います。必須です。 |
| **オフセット** | データ | 同じ録音に対する[**音声同期**](https://nodaro.ai/docs/nodes/audio/audio-sync)の結果。録音がすでに 1 つの時計を共有している場合は、接続しません。音声同期の基準には、どの録音を使ってもかまいません。任意です。 |
| **文字起こし** | データ | 話者分離をオンにして実行した文字起こしノードから得た、話者ラベル付きの単語単位の文字起こし。マスター録音、なければ最初の録音の文字起こしで、発話の区間はその録音の時計で読み取られます。必須です。 |

## 出力
| 出力 | 渡すもの |
| --- | --- |
| **話者マップ** | 各話者がどのカメラに映っているか。カメラ切り替えの**話者マップ**入力に接続します。 |
| **編集（EDL）** | マスターの時計上の 1 つの編集としてまとめた録音。オフセットを適用し、マスターと引きのショットに印を付け、各カメラの話者をマップから設定したものです。 |

**話者マップ**出力は次のようになります。

```json
{
"version": 1,
"speakerMap": { "speaker_0": "camA", "speaker_1": "camB", "speaker_2": "" },
"confidence": {
"speaker_0": { "camera": "camA", "marginDb": 9.4 },
"speaker_1": { "camera": "camB", "marginDb": 6.1 },
"speaker_2": { "camera": "", "marginDb": 1.2 }
},
"notes": ["\"speaker_2\": no clear camera (the loudest led by 1.2 dB) — shown on the wide shot; set the map to override."]
}
```

| フィールド | 意味 |
| --- | --- |
| `speakerMap` | 各話者のラベルと、その人のカメラの ID。`""` ははっきりしたカメラがないことを意味し、その話者は引きのショットで、なければ映像のあるいずれかのカメラで映ります。 |
| `confidence` | 各話者について、割り当てられたカメラと、最も大きいカメラが次のカメラを何 dB 上回ったか。2 台未満のカメラにしか聞こえなかった場合は `null` です。 |
| `edl` | **編集（EDL）**出力と同じ編集。録音を読み込めて、マスター以外の録音に映像がある場合に入ります。 |
| `notes` | わかりやすい言葉の警告。はっきりしたカメラがない話者、2 台未満のカメラにしか聞こえなかった話者、オーディオトラックのないカメラ、どの発話も聞こえなかったカメラについて記されます。 |

## 設定
| 設定 | 役割 |
| --- | --- |
| **カメラ** | 接続した録音を、接続した順に表示します。 |
| **マスター録音** | 全員の声を拾う録音、たとえばメインのマイク。誰のカメラにもならず、編集はこの録音の時計で進みます。デフォルトは**なし**です。 |
| **引きのショット** | 全員を映すカメラ。誰のカメラにもならず、はっきりしたカメラがない話者はこのカメラで映ります。音声だけの録音ではなく、カメラである必要があります。デフォルトは**なし**です。 |
| **必要な差** | 話者にカメラを割り当てるために、最も大きいカメラが次のカメラよりどれだけ大きい必要があるか。デフォルトは 3 dB で、設定パネルでは 1〜12 dB を選べます。値を低くすると、より多くの話者にカメラが付きます。値を高くすると、はっきりした話者だけが残ります。 |

### カメラの決め方
各話者について、その話者のすべての発話を通して判定します。

- **最も大きいカメラが選ばれます。**話者の声を最も大きく拾うカメラが、次のカメラを**必要な差**以上上回っている場合、そのカメラがその人のカメラになります。
- **はっきりしたカメラがない場合。**話者が 2 台のカメラの間に座っているなどの理由で、それだけ上回るカメラがない場合、その話者にははっきりしたカメラがありません。カメラ切り替えは、その話者を引きのショットで、引きのショットがなければ映像のあるいずれかのカメラで映します。注記には、その話者と、最も大きいカメラがどれだけ上回っていたかが記されます。
- **引きのショットとマスター録音は選ばれません。**全員の声を拾うので、誰のカメラにもなりません。
- **音のないカメラは失敗の原因になりません。**オーディオトラックのないカメラ、ミュートされたマイク、どの発話も聞こえなかったカメラは、どの話者にも選ばれないだけで、注記にその名前が記されます。

## クレジット
話者マップは、録音の長さや本数にかかわらず、1 回の実行につき一律の料金です。ノードの**実行**ボタンに料金が表示されます。セルフホスティングの Community エディションと Business エディションでは、クレジットを使いません。

次のものは、クレジットが課金される前に拒否されます。

- 2 本未満または 6 本を超える録音、または同じ ID を持つ 2 本の録音。
- オーディオノードのような、音声だけの録音を引きのショットにした場合。
- 文字起こしがない場合、または話者ラベルがまったくない文字起こし。文字起こしで話者分離をオンにして、もう一度実行してください。

キャンバスでは、録音のどれでもないマスターや引きのショットは無視されます。API では拒否されます。

## ヒント
- **メインのマイクと引きのショットを指定する。**指定しないと、それらの音がカメラの音と競合し、全員の声を拾う引きのショットが話者に選ばれることがあります。
- **録音を別々に開始した場合はオフセットを接続する。**オフセットがないと、各カメラは文字起こしの時間で読み取られ、遅れて開始したカメラは間違った時点で聞かれます。
- **注記を読む。**はっきりしたカメラがない話者は、たいてい 2 台のカメラの間に座っているか、カメラのマイクの設定が大きく異なっています。その話者のカメラを、カメラ切り替えの**話者**の表で設定してください。そこで設定したカメラは、マップより優先されます。
- **差を調整する。**わずかに大きいだけのカメラがマップで選ばれる場合は、**必要な差**を上げます。はっきりしたカメラがない話者が多すぎる場合は、下げます。
- **スピーカーレイアウトに任せる。**[**スピーカーレイアウト**](https://nodaro.ai/docs/nodes/video/speaker-layout)は、音声同期、文字起こし、話者マップ、カメラ切り替えを代わりに実行し、各話者をその人のカメラでフレーミングします。

## トラブルシューティング
| 問題 | 対処 |
| --- | --- |
| 文字起こしに話者ラベルがないため実行が拒否される | 文字起こしで話者分離をオンにして再び実行し、新しい文字起こしを接続してください。 |
| はっきりしたカメラがない話者がいる | マスターと引きのショットを指定するか、**必要な差**を下げるか、カメラ切り替えでその話者のカメラを設定してください。 |
| 引きのショットが話者に選ばれる | そのカメラを**引きのショット**で選び、誰のカメラにもならないようにしてください。 |
| 遅れて開始したカメラのマップが間違っている | 音声同期の**オフセット**出力を**オフセット**入力に接続してください。 |

## API から
`POST /v1/speaker-map` は、`sources`（一意の `id`、`url`、任意の `kind` を持つ 2〜6 個のオブジェクトのリスト）と `transcript` を受け取ります。任意で、`offsets`（音声同期の結果）、`masterSourceId`、`wideSourceId`、0〜30 の `marginDb` も受け取ります。`kind: "audio"` は、メインのマイクのような音声だけの録音を示し、その録音は誰のカメラにもなりません。

形式が正しくないリクエストは `400 validation_error` を、話者ラベルのない文字起こしは `422 no_speakers` を、どちらもクレジットが確保される前に返します。完了したジョブの `output_data.json` は上記の**話者マップ**の結果で、`output_data.edl` が編集です。

SDK のメソッドは `client.edit.speakerMap`、CLI コマンドは `nodaro edit speaker-map`、MCP ツールは `speaker_map` です。結果をカメラ切り替えに渡すには、SDK では `speakerMapResult`、CLI では `--speaker-map-result`、MCP では `speaker_map_result` を使います。[音声とメディア](https://nodaro.ai/docs/developers/api/voice-and-media)、[SDK での編集](https://nodaro.ai/docs/developers/sdk/editing)、[MCP ツールリファレンス](https://nodaro.ai/docs/mcp/tools)を参照してください。

## よくある質問

### 話者マップは何をしますか？

話者マップは、マルチカメラの収録で、各話者がどのカメラに映っているかを判定します。話者が話している間、その人に向いたカメラが最も大きくその声を拾うので、そのカメラがその人のカメラになります。そのあと、カメラ切り替えが各カットを話している人のカメラに割り当てます。

### 話者マップに何を接続する必要がありますか？

話者マップには、1 つの会話の録音 2〜6 本と、話者分離をオンにした文字起こしから得た話者ラベル付きの文字起こしが必要です。録音を別々に開始した場合は、音声同期のオフセット出力も接続します。

### どのカメラも話者をはっきり拾わない場合はどうなりますか？

話者には、はっきりしたカメラがなくなります。カメラ切り替えは、その話者を引きのショットで映します。引きのショットがない場合は、映像のあるいずれかのカメラで映します。注記には、その話者名と、最も大きいカメラがどれだけ上回っていたかが記されます。

### 話者マップのクレジットはいくらですか？

話者マップは、録音の長さや本数にかかわらず、1 回の実行につき一律の料金です。ノードの実行ボタンに料金が表示されます。セルフホスティングの Community エディションと Business エディションでは、クレジットを使いません。

### 話者マップに AI モデルやプロバイダーのキーは必要ですか？

いいえ。話者マップは各録音の音声をローカルで読み取るので、プロバイダーのキーのない Community エディションの環境を含め、すべてのエディションで使えます。
