# 強制アライメント

> 内容がわかっている文字起こしの各単語をオーディオに合わせ、単語ごとの開始と終了の時間をデータとして取得します。カラオケ風のハイライト、タイミングに合わせたグラフィック、字幕に使えます。

Source: https://nodaro.ai/ja/docs/nodes/audio/forced-alignment

**強制アライメント**（Forced Alignment）ノードは、内容がわかっている文字起こしの各単語が、オーディオのどこで話されているかを特定します。録音と、その中で話されている正確なテキストを渡すと、各単語の開始時間と終了時間を返します。結果はオーディオではなくデータです。カラオケ風のハイライトや、単語に反応するグラフィックに使ったり、生成した音声のペースを確認したりするのに使います。

- Found in: Audio › Transcribe
- Output: data
- API type: `forced-alignment`

## 使いどころ
- 手元にある台本から、キャプションや字幕のための正確な単語のタイミングを取得します。
- オーディオに合わせて単語がハイライトされる、カラオケ風の表示を作ります。
- アニメーションやモーショングラフィックスのタイミングを、特定の単語に合わせます。
- 動画のコンポジションで、映像の要素を話し声に同期させます。
- [**テキストから音声**（Text to Speech）](https://nodaro.ai/docs/nodes/audio/text-to-speech)の出力のタイミングが、想定したペースどおりかを確認します。

文字起こしがない場合は、代わりに[**文字起こし**（Transcribe）](https://nodaro.ai/docs/nodes/audio/transcribe)を使ってください。ElevenLabs STT と Incredibly Fast Whisper を使う場合、そのノードの文字起こし出力には、すでに単語のタイミングが含まれています。

## クイックスタート
### ノードを追加する
キャンバス上で Tab を押し、**オーディオ › 文字起こし › 強制アライメント**を選びます。

### オーディオを接続する
オーディオノードを、**オーディオ**入力に接続します。

### 文字起こしを渡す
設定パネルを開き、話されている正確なテキストを**文字起こし**に貼り付けます。または、テキストノードを**文字起こし**入力に接続します。

### 実行する
ノードの**実行**をクリックします。単語のタイミングが、**データ**出力に表示されます。

Workflow: 同じ台本をテキストから音声ノードで読み上げてから、その音声に対して単語ごとにタイミングを合わせます。

- テキスト → テキストから音声 (プロンプト)
- テキストから音声 → 強制アライメント (オーディオ)
- テキスト → 強制アライメント (文字起こし)

## 入力と出力
| 入力 | 接続できるノード | 説明 |
| --- | --- | --- |
| **オーディオ** | **オーディオアップロード**（Upload Audio）、**リファレンスオーディオ**（Reference Audio）、テキストから音声などのオーディオノード | アライメントする録音です。 |
| **文字起こし** | **テキスト**（Text）などのテキストノード | 話されているテキストで、文字起こしの欄の代わりに使われます。 |

出力の**データ**は、単語と、その開始時間と終了時間のリストです。オーディオではなくデータなので、テキストやデータを受け取るノードに接続します。

## 設定
| 設定 | 説明 |
| --- | --- |
| **文字起こし** | オーディオで話されている全文を、飾りのない単語だけで書きます。話し声とよく一致している必要があります。 |
| **前後のテキスト** | 文字起こしの前後に必ず追加されるテキストです。ワークフローをアプリとして使う人には表示されません。[プロンプトの前後のテキスト](https://nodaro.ai/docs/concepts/prompt-pre-post-text)を参照してください。 |

## 結果の読み方
**データ**出力は、次のような形式です。

```json
[
{ "word": "Hello", "start": 0.0, "end": 0.35 },
{ "word": "world", "start": 0.38, "end": 0.72 }
]
```

| フィールド | 意味 |
| --- | --- |
| `word` | アライメントされた単語です。 |
| `start` | 単語が始まる時間で、単位は秒です。 |
| `end` | 単語が終わる時間で、単位は秒です。 |

## モデル
| Model | Maker | Modes | Credits | Details |
| --- | --- | --- | --- | --- |
| [ElevenLabs Forced Alignment](https://nodaro.ai/docs/models/audio/elevenlabs-forced-alignment) | ElevenLabs | Forced alignment | 30 | Align an existing transcript to audio with word-level timestamps. |

## ヒント
- **文字起こしを話し声に合わせる**：テキストとオーディオに違いがあると、タイミングが不正確になります。
- **文字起こしを整える**：実際に話されている場合を除き、フィラーワード、言い直し、`[music]` などのメモは削除します。
- **プレーンテキストを使う**：タイムスタンプ、話者ラベル、書式は入れません。話されているとおりの言葉だけを書きます。
- **録音全体をカバーする**：文字起こしが一部分だけの場合、アライメントされるのはその部分だけです。
- **ノイズの多いオーディオは先にクリーンにする**：録音を[**音声抽出**（Voice Extractor）](https://nodaro.ai/docs/nodes/audio/voice-extractor)に通すと、タイミングがより正確になります。
- **聞き取りにくい話し声では精度が下がる**：とても速い話し方、強いなまり、話者の声の重なりがあると、精度が下がることがあります。

## API から
MCP ツールは `forced_alignment` です。[MCP ツール](https://nodaro.ai/docs/mcp/tools)を参照してください。

## Frequently asked questions

### 「強制アライメント」と「文字起こし」の違いは何ですか？

「文字起こし」は、何がいつ話されたかを割り出します。「強制アライメント」は、話された内容を手元の文字起こしからすでに把握しているので、各単語がいつ話されるかを正確に特定します。正確な台本があるときに使ってください。

### 文字起こしは、オーディオと完全に一致している必要がありますか？

できるだけ近づけてください。話されていない単語や、話されているのに文字起こしにない単語があると、タイミングが不正確になります。オーディオに含まれないメモ、ラベル、フィラーワードは削除してください。

### タイムスタンプの単位は何ですか？

秒です。各単語には開始と終了があり、たとえば 0.38 秒から 0.72 秒までの単語のように表されます。

### 強制アライメントノードは、オーディオを返しますか？

いいえ。出力はデータで、単語とその時間のリストです。テキストやデータを受け取るノードに接続でき、オーディオ入力には接続できません。
