# 文字起こし

> ElevenLabs STT または Whisper で、オーディオや動画の音声をテキストにします。字幕用の単語のタイミング、話者のラベル、音楽や笑い声のタグも取得できます。

Source: https://nodaro.ai/ja/docs/nodes/audio/transcribe

**文字起こし**（Transcribe）ノードは、音声をテキストにします。オーディオか動画を接続すると、ノードは文字起こしを 2 つの形で返します。プレーンなテキストと、すべての単語のタイミングが入った構造化された文字起こしです。3 つのエンジンから選べ、エンジンによって、字幕にとって重要な 1 点が異なります。単語のタイミングを返すかどうかです。

- Found in: Audio › Transcribe
- Output: text
- Credits: 22–40 per run, by model
- Models: 3
- API type: `transcribe`

## 使いどころ
- インタビューやポッドキャストを文字起こしして、文章のコンテンツにします。
- [**字幕を追加**（Add Captions）](https://nodaro.ai/docs/nodes/video/add-captions)で、動画の音声から字幕を作ります。
- ボイスメモや会議の録音をテキストにします。
- オーディオライブラリを、テキストで検索できるようにします。
- 文字起こしをテキスト系のノードに渡して、要約や分析をします。
- [**編集プラン**（Edit Plan）](https://nodaro.ai/docs/nodes/video/edit-plan)が編集を計画するのに必要な、タイミング付きの文字起こしを渡します。

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

### 録音を接続する
オーディオ系か動画系のノードを、**オーディオ**入力に接続します。

### エンジンと言語を選ぶ
設定パネルを開きます。ほかのエンジンが必要でなければ、**プロバイダー**は **ElevenLabs STT** のままにします。**言語**は**自動検出**のままにするか、言語を選びます。

### 実行する
ノードの**実行**をクリックします。プレーンな文字起こしは**テキスト**出力に、タイミング付きの文字起こしは**文字起こし**出力に表示されます。

Workflow: 動画を 1 回だけ文字起こしします。タイミング付きの文字起こしをもとに単語ごとの字幕を表示し、テキストは要約します。

- 動画アップロード → 文字起こし (オーディオ)
- 動画アップロード → 字幕を追加 (動画)
- 文字起こし → 字幕を追加 (文字起こし)
- 文字起こし → プロンプト (プロンプト)

## 入力と出力
| 入力 | 接続できるノード | 説明 |
| --- | --- | --- |
| **オーディオ** | オーディオ系と動画系のノード | 文字起こしする音声です。動画の場合、ノードはその音声トラックを使います。 |

| 出力 | 内容 |
| --- | --- |
| **テキスト** | 文字起こし全体を、プレーンなテキストにしたものです。テキストを受け付けるどのノードにも接続できます。 |
| **文字起こし** | ミリ秒単位の単語とセグメントのタイミングが入った、構造化された文字起こしです。字幕を追加や編集系のノードに渡します。 |

プロンプトの中で `{Transcribe}` のようにノードのラベルを参照すると、プレーンなテキストが入ります。

## 設定
| 設定 | 説明 |
| --- | --- |
| **プロバイダー** | エンジンです。**ElevenLabs STT**（デフォルト）、**Whisper — 単語タイミングなし**、**Incredibly Fast Whisper** のいずれかです。 |
| **言語** | **自動検出**（デフォルト）か、英語、スペイン語、ヘブライ語、日本語、アラビア語など 20 の言語のいずれかです。 |
| **話者分離** | 誰が何を話したかを、ラベルで示します。デフォルトはオフです。プロバイダーが **ElevenLabs STT** のときだけ表示されます。 |
| **オーディオイベントのタグ付け** | `[music]` や `[laughter]` など、話し声以外の音を文字起こしの中に記します。デフォルトはオフです。プロバイダーが **ElevenLabs STT** のときだけ表示されます。 |

話者分離とオーディオイベントのタグ付けは、互いに独立した設定です。どちらか一方だけをオンにすることも、両方をオンにすることも、どちらもオフのままにすることもできます。

![文字起こしの設定パネル。「プロバイダー」は ElevenLabs STT、「言語」は「自動検出」に設定され、「話者分離」と「オーディオイベントのタグ付け」のチェックボックスがあります。](https://nodaro.ai/docs-media/screens/en/nodes/transcribe/settings.light.webp)

## モデル
| Model | Maker | Modes | Credits | Details |
| --- | --- | --- | --- | --- |
| [ElevenLabs STT](https://nodaro.ai/docs/models/audio/elevenlabs-stt) | ElevenLabs | Speech to text | 22 | Speech-to-text with WORD-level timestamps (always on), speaker diarization and audio-event tags. The engine to use when the transcript feeds captions. |
| [Incredibly Fast Whisper](https://nodaro.ai/docs/models/audio/incredibly-fast-whisper) | OpenAI | Speech to text | 40 | Fast Whisper speech-to-text. Returns WORD-level timestamps when asked, so its transcript can feed captions. |
| [Whisper](https://nodaro.ai/docs/models/audio/whisper) | OpenAI | Speech to text | 40 | Whisper speech-to-text — PHRASE-level segments only, NO word timestamps. Fine for a transcript or a static subtitle; not for word-timed (kinetic) captions. |

## 単語のタイミング：どのエンジンが返すか
| エンジン | 単語のタイミング | 備考 |
| --- | --- | --- |
| **ElevenLabs STT**（デフォルト） | 常に返す | 設計上、単語単位です。字幕、話者のラベル、オーディオイベントに使うエンジンです。 |
| **Incredibly Fast Whisper** | 必要なときに返す | **文字起こし**出力が接続されていると、ノードが自動で単語のタイミングを要求します。 |
| **Whisper** | 返さない | フレーズ単位のセグメントだけです。プレーンな文字起こしや静的な字幕なら、これで十分です。 |

明らかに話し声があるオーディオに対して、ElevenLabs STT や Incredibly Fast Whisper が単語のタイミングを返さなかった場合、実行は失敗し、クレジットは返還されます。話し声がまったくないオーディオは、単語なしのまま成功します。たとえば、`[music]` と文字起こしされるクリップです。

## 構造化された文字起こし
**文字起こし**出力は、次のような形です。

```json
{
"version": 1,
"language": "en",
"words": [
{ "text": "Welcome", "startMs": 0, "endMs": 420 },
{ "text": "back", "startMs": 460, "endMs": 700 }
],
"segments": [
{ "startMs": 0, "endMs": 700, "text": "Welcome back" }
]
}
```

- 時間はすべて、ミリ秒単位の整数です。
- `words` には、すべての単語が開始と終了の時間とともに入ります。エンジンが単語のタイミングを返すときは、常に値が入ります。
- `segments` には、より大きな単位の文やフレーズが入ります。エンジンがそれを返す場合だけです。
- 話者分離をオンにした実行では、各単語と各セグメントに `speaker` も付きます。単語には `confidence` が付くこともあります。

**テキスト**出力では、話者分離によって各セグメントの前に `Speaker 1:` のようなラベルが付き、オーディオイベントのタグ付けによって `[music]` や `[laughter]` のようなタグが、その音の位置に入ります。

## 文字起こしから字幕を作る
**文字起こし**出力を、[字幕を追加](https://nodaro.ai/docs/nodes/video/add-captions)の文字起こし入力に接続します。すると字幕を追加が、各単語のタイミングに合わせて字幕を描きます。これには **ElevenLabs STT** か **Incredibly Fast Whisper** を使います。

**Whisper の文字起こしでは字幕を作れません**。**Whisper** を使う文字起こしノードが字幕を追加につながっている場合、何かが実行されたり課金されたりする前に、次のメッセージとともに実行が拒否されます。

```
Captions need word timings, but the "whisper" engine does not return word timings — pick incredibly-fast-whisper or elevenlabs-stt.
```

- このチェックは、[**EDL 適用**（Apply EDL）](https://nodaro.ai/docs/nodes/video/apply-edl)を経由するつながりや、どの深さのサブワークフロー内のつながりも対象にします。
- 接続した時点で、設定パネルの**プロバイダー**の横にも同じ警告が表示されるので、実行する前に修正できます。
- 文字起こしノードを単独で実行する場合は、ブロックされることはありません。Whisper の文字起こしを、ほかの場所に渡すのも問題ありません。
- 事前にチェックできないケースが 1 つあります。文字起こしと字幕を追加が、サブワークフローの境界をはさんで別々の側にあるつながりです。この場合、文字起こしが実行されて課金された後に、字幕を追加で実行が失敗します。

## クレジット
文字起こしの料金は、オーディオの長さにかかわらず、1 回の実行ごとの定額です。

| エンジン | 1 回の実行あたりのクレジット |
| --- | --- |
| **ElevenLabs STT** | 22 |
| **Incredibly Fast Whisper** | 40 |
| **Whisper** | 40 |

字幕を追加に接続された Whisper の文字起こしのように、開始前に拒否されたリクエストには料金がかかりません。

## セルフホスティング環境の場合
各エンジンは、自分のプロバイダーキーで動きます。選んだエンジンのキーがなく、環境に [Nodaro Cloud への接続](https://nodaro.ai/docs/self-hosting/cloud-connect)がある場合、文字起こしはその接続を通じて実行されます。どちらもない場合、ノードは失敗し、追加すべきキーを示すメッセージが表示されます。[プロバイダーキー](https://nodaro.ai/docs/self-hosting/provider-keys)を参照してください。

## ヒント
- **言語は自動検出のままにする**：言語を選ぶのは、その言語がわかっている場合だけにします。たとえば、2 つの言語の響きが似ている場合です。
- **会話では話者にラベルを付ける**：インタビュー、会議、ポッドキャストでは、**話者分離**をオンにします。
- **必要なときはイベントにタグを付ける**：背景の音が録音の理解に役立つ場合は、**オーディオイベントのタグ付け**をオンにします。
- **ノイズの多いオーディオは先にクリーンにする**：文字起こしの前に、録音を[**音声抽出**（Voice Extractor）](https://nodaro.ai/docs/nodes/audio/voice-extractor)に通します。
- **とても長いオーディオは分割する**：短いセグメントのほうが、確実に文字起こしできます。[**チャンクに分割**（Split into Chunks）](https://nodaro.ai/docs/nodes/video/split-into-chunks)は、長いファイルを同じ長さのパートに分けます。
- **代わりに手元の台本を合わせる**：正確な台本がすでにある場合は、[**強制アライメント**（Forced Alignment）](https://nodaro.ai/docs/nodes/audio/forced-alignment)が、台本の各単語のタイミングをオーディオに合わせて求めます。

## API から
`POST /v1/transcribe` は、`audioUrl` と、任意の `provider`（`elevenlabs-stt`、`incredibly-fast-whisper`、`whisper`）、`language`、`diarize`、`tagAudioEvents`、`wordTimestamps` を受け取ります。

- **エンジンを指定する**：`provider` のないリクエストは Whisper で実行されるので、既存の呼び出し元はこれまでと同じエンジンを使い続けます。単語のタイミング、`diarize`、`tagAudioEvents` が必要な場合は、必ず `provider` を設定してください。
- **単語のタイミング**：`incredibly-fast-whisper` が単語を返すのは、`wordTimestamps: true` を指定した場合だけです。`whisper` で `wordTimestamps: true` を指定すると、ジョブが作成される前に `400 validation_error` で拒否されるので、料金はかかりません。エンジンが知らないうちに切り替えられることはありません。
- **字幕**：完了したジョブの `output_data.words` は、すでに字幕の形（`text`、`startMs`、`endMs`）になっています。これを `captions` として `POST /v1/add-captions` に渡せば、字幕を追加がもう一度文字起こしすることはありません。
- **料金**：`GET /v1/credits/model-cost?model=<engine>` は、自分のアカウントでの正確な料金を返します。

SDK のメソッドは `client.audio.transcribe`、CLI のコマンドは `nodaro audio transcribe --provider <engine>` です。MCP ツールの `transcribe` は常に ElevenLabs STT で実行されるので、その結果には必ず単語のタイミングが含まれます。[音声とメディア](https://nodaro.ai/docs/developers/api/voice-and-media)を参照してください。

## Frequently asked questions

### どの文字起こしエンジンを選べばよいですか？

デフォルトの ElevenLabs STT のままにしてください。常に単語のタイミングを返し、話者のラベル付けやオーディオイベントのタグ付けもでき、最も安価です。Incredibly Fast Whisper も、ノードが必要とする場合は単語のタイミングを返します。Whisper が返すのはフレーズだけですが、プレーンな文字起こしならそれで十分です。

### 文字起こしノードと「字幕を追加」ノードを使ったワークフローが拒否されたのは、なぜですか？

文字起こしノードが Whisper を使っているためです。Whisper は単語のタイミングを返しませんが、字幕にはそれが必要です。「プロバイダー」を ElevenLabs STT か Incredibly Fast Whisper に切り替えて、もう一度実行してください。実行は開始前に拒否されるので、料金はかかりません。

### 文字起こしノードには、何クレジットかかりますか？

オーディオの長さにかかわらず、1 回の実行ごとの定額です。ElevenLabs STT は 22 クレジット、Incredibly Fast Whisper と Whisper はそれぞれ 40 クレジットです。

### 文字起こしノードは、話者を区別できますか？

はい。ElevenLabs STT なら区別できます。「話者分離」をオンにすると、テキストの各セグメントに「Speaker 1:」のような話者のラベルが付きます。構造化された文字起こしでは、各単語にも話者が記録されます。

### 動画を文字起こしできますか？

はい。動画を「オーディオ」入力に接続すると、ノードがその音声トラックを文字起こしします。
