> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# 独自の文字起こしを使用する

> **Note**
>
> **ハウツーガイド** · [ダビングクイックスタート](/docs/ja/eleven-api/guides/cookbooks/dubbing)で示すように、
> 吹き替えプロジェクトの作成に慣れていることを前提としています。

> **Warning**
>
> 独自の文字起こしと翻訳の提供は、エンタープライズワークスペースでのみ利用できます。利用をご希望の場合は、
> [営業担当](https://elevenlabs.io/contact-sales)までお問い合わせください。

デフォルトでは、ダビングAPIはソースメディアを文字起こしし、文字起こしを各ターゲット言語へ機械翻訳します。正確な文字起こし（字幕、台本、プロによる翻訳文など）がすでにある場合は、代わりにそれを提供できます。このガイドでは、文字起こしファイルの形式、文字起こしからプロジェクトを作成する方法、言語を追加する際に独自の翻訳を提供する方法について説明します。

## 文字起こしファイルの形式

文字起こしは、トップレベルに単一の`segments`配列を持つJSONファイルです。各セグメントは1つの発話であり、発話テキスト、開始時刻と終了時刻、必要に応じて話者を含みます。

**`transcript.json`**

```json title="transcript.json"
{
  "segments": [
    {
      "external_id": "line_0",
      "speaker_id": "speaker_0",
      "start_s": 0.0,
      "end_s": 14.5,
      "text": "With my soft and whispery American accent, I'm the ideal choice for creating ASMR content, meditation guides, or adding an intimate feel to your narrative projects."
    }
  ]
}
```

| フィールド         | 必須  | 説明                                                                                              |
| ------------- | --- | ----------------------------------------------------------------------------------------------- |
| `text`        | はい  | セグメント中に話されたテキスト。                                                                                |
| `start_s`     | はい  | セグメントの開始時刻（秒）。                                                                                  |
| `end_s`       | はい  | セグメントの終了時刻（秒）。                                                                                  |
| `speaker_id`  | いいえ | 同じ話者によるセグメントをグループ化する識別子です。各話者が一貫した音声で吹き替えられます。これを省略したセグメントは、単一のデフォルト話者を共有します。                   |
| `external_id` | いいえ | セグメント用の独自識別子です。128文字以内で、文字起こし内で一意である必要があります。翻訳のキーとして使用され、文字起こしを読み取るたびに返されます。                    |
| `translation` | いいえ | セグメントの翻訳テキストです。`target_language`を介して作成される言語ターゲットの初期値として使用されます。いずれかのセグメントに含める場合は、すべてのセグメントに必要です。 |

### セグメントのルール

文字起こしは、プロジェクトの作成時に検証されます。

* セグメントは`start_s`順に並んでいる必要があります。
* セグメントの長さは0.1～25秒で、`end_s`は`start_s`より大きい必要があります。
* 同じ`speaker_id`を持つセグメントは重複できません。ただし、終端で接することは可能です。異なる話者のセグメントは、同時発話を表現するために重複できます。
* 文字起こしには最大20,000セグメントを含めることができ、ファイルサイズは最大4MiBです。

長いセグメントよりも短いセグメントを推奨します。1秒以上の間がある箇所で文を区切ってください。セグメント境界によって吹き替え音声のソースに対するタイミングが決まるため、正確で自然な区切りの文字起こしほど、より同期した吹き替えになります。

## 文字起こしからプロジェクトを作成する

プロジェクト作成時に文字起こしファイルを渡します。文字起こしを提供する場合、ソースメディアは自動的に文字起こしされないため、`source_language`が必要です。言語は`es`や`fr-CA`などのBCP-47タグで指定します。指定可能なすべての値は[対応言語と方言](/docs/ja/overview/capabilities/dubbing#supported-languages)を参照してください。

```python
import os
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs

load_dotenv()

elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

with open("transcript.json", "rb") as transcript:
    project = elevenlabs.dubbing.project.create(
        source_url="https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
        source_language="en",
        transcript=transcript,
    )

print(project.project_id)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import "dotenv/config";
import { createReadStream } from "fs";

const elevenlabs = new ElevenLabsClient();

const project = await elevenlabs.dubbing.project.create({
  sourceUrl: "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
  sourceLanguage: "en",
  transcript: createReadStream("transcript.json"),
});

console.log(project.projectId);
```

吹き替えを行う前に、プロジェクトは引き続きソースメディアを取り込む必要があります。そのため、[クイックスタート](/docs/ja/eleven-api/guides/cookbooks/dubbing)に示すように、ステータスが`ready`になるまでポーリングしてください。セグメントはそのまま使用され、自動文字起こしは実行されません。

## 独自の翻訳を提供する

言語ターゲットを追加する際は、機械翻訳の代わりに独自の翻訳を使用するため、`translations`マップを渡します。このマップは各ソースセグメントの`external_id`をキーとして使用します。指定していない場合は内部セグメント`id`を使用します。すべてのソースセグメントをちょうど1回ずつカバーする必要があります。

```python
project_id = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3"

language = elevenlabs.dubbing.project.language.create(
    project_id,
    target_language="fr",
    translations={
        "line_0": "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs.",
    },
)
```

```typescript
const projectId = "proj_1601kwkyxp0hfzvtmyxwqxx6mcy3";

const language = await elevenlabs.dubbing.project.language.create(projectId, {
  targetLanguage: "fr",
  translations: {
    line_0:
      "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs.",
  },
});
```

各言語ターゲットには1回の作成呼び出しが必要なため、吹き替えたい言語ごとにこのリクエストを繰り返してください。`translations`マップには、合計で最大4MiBのテキスト、最大20,000エントリを含めることができます。

セグメントに`external_id`がない場合は、ソース文字起こしを読み取って各セグメントの内部`id`を取得し、代わりにそれらをキーとして使用します。

```python
transcript = elevenlabs.dubbing.project.transcript.get(project_id)
for segment in transcript.segments:
    print(segment.id, segment.text)
```

```typescript
const transcript = await elevenlabs.dubbing.project.transcript.get(projectId);
for (const segment of transcript.segments) {
  console.log(segment.id, segment.text);
}
```

### プロジェクト作成時に翻訳を指定する

単一のターゲット言語の場合、文字起こしファイル内のすべてのセグメントに`translation`を含め、プロジェクト作成時に`target_language`を渡すことで、個別の`translations`マップを省略できます。言語ターゲットは翻訳内容とともにキューに追加され、プロジェクトの準備が完了すると生成を開始します。

**`transcript.json`**

```json title="transcript.json"
{
  "segments": [
    {
      "external_id": "line_0",
      "speaker_id": "speaker_0",
      "start_s": 0.0,
      "end_s": 14.5,
      "text": "With my soft and whispery American accent, I'm the ideal choice for creating ASMR content, meditation guides, or adding an intimate feel to your narrative projects.",
      "translation": "Avec mon accent américain doux et murmuré, je suis le choix idéal pour créer du contenu ASMR, des guides de méditation, ou pour apporter une touche d'intimité à vos projets narratifs."
    }
  ]
}
```

## 品質に関する考慮事項

吹き替えの品質は、基となる文字起こしと翻訳の品質に左右されます。セグメントのタイミングとテキストは、吹き替え音声のタイミングと発声に直接使用されるため、不正確なタイミングやテキストは出力品質を低下させます。翻訳はセグメントの時間幅に収まるようにレンダリングされます。原文より大幅に長い、または短い翻訳は吹き替え音声のペースに影響するため、発話の長さが近い翻訳を目指してください。

## 次のステップ

#### [吹き替えを調整して再生成する](/docs/ja/eleven-api/guides/how-to/dubbing/refine-and-regenerate)

ソース文字起こしと翻訳を編集してから、吹き替えを再生成します

#### [複数の言語に吹き替える](/docs/ja/eleven-api/guides/how-to/dubbing/multiple-languages)

1つのプロジェクトに複数のターゲット言語を追加します

#### [APIリファレンス](/docs/ja/api-reference/dubbing/create-project)

すべてのダビングAPIパラメータとレスポンス形式を確認します