> 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.

# Använd ditt eget transkript

> **Note**
>
> **Instruktionsguide** · Förutsätter att du är bekant med att skapa dubbningsprojekt, enligt
> [snabbstarten för dubbning](/docs/sv/eleven-api/guides/cookbooks/dubbing).

> **Warning**
>
> Att använda egna transkript och översättningar är endast tillgängligt för företagsarbetsytor. Kontakta
> [säljteamet](https://elevenlabs.io/contact-sales) för åtkomst.

Som standard transkriberar Dubbing API ditt källmaterial och maskinöversätter transkriptet till varje målspråk. Om du redan har ett korrekt transkript — undertexter, ett manus eller professionellt översatt text — kan du använda det i stället. Den här guiden täcker transkriptfilformatet, hur du skapar ett projekt från ett transkript och hur du tillhandahåller egna översättningar när du lägger till ett språk.

## Transkriptfilformat

Ett transkript är en JSON-fil med en enda `segments`-array på toppnivå. Varje segment är ett yttrande: den talade texten, när den börjar och slutar samt valfritt vem som säger den.

**`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."
    }
  ]
}
```

| Fält          | Krävs | Beskrivning                                                                                                                                                                |
| ------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `text`        | Ja    | Texten som sägs under segmentet.                                                                                                                                           |
| `start_s`     | Ja    | Segmentets starttid i sekunder.                                                                                                                                            |
| `end_s`       | Ja    | Segmentets sluttid i sekunder.                                                                                                                                             |
| `speaker_id`  | Nej   | Identifierare som grupperar segment från samma talare, så att varje talare dubbas med en konsekvent röst. Segment som saknar den delar en standardtalare.                  |
| `external_id` | Nej   | Din egen identifierare för segmentet, högst 128 tecken och unik inom transkriptet. Används för att nyckla översättningar och returneras vid varje läsning av transkriptet. |
| `translation` | Nej   | Översatt text för segmentet, som används för att initiera det språkmål som skapas via `target_language`. Om ett segment innehåller en måste alla segment göra det.         |

### Segmentregler

Transkriptet valideras när du skapar projektet:

* Segment måste vara sorterade efter `start_s`.
* Ett segment måste vara mellan 0,1 och 25 sekunder långt, och `end_s` måste vara större än `start_s`.
* Segment med samma `speaker_id` får inte överlappa varandra, men de kan mötas vid en slutpunkt. Segment från olika talare kan överlappa för att representera samtidigt tal.
* Ett transkript kan innehålla högst 20 000 segment och filen får vara högst 4 MiB.

Föredra kortare segment framför längre: dela upp meningar där det finns en paus på en sekund eller längre. Segmentgränser avgör hur det dubbade ljudet synkroniseras med källan, så ett transkript med korrekta, naturliga pauser ger en bättre synkroniserad dubbning.

## Skapa ett projekt från ditt transkript

Skicka transkriptfilen när du skapar projektet. `source_language` krävs när du tillhandahåller ett transkript, eftersom källmaterialet inte transkriberas automatiskt. Språk anges som BCP-47-taggar, till exempel `es` eller `fr-CA`. Se [språk och dialekter som stöds](/docs/sv/overview/capabilities/dubbing#supported-languages) för alla godkända värden.

```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);
```

Projektet läser fortfarande in källmaterialet innan det kan dubbas, så kontrollera dess status tills den är `ready`, enligt [snabbstarten](/docs/sv/eleven-api/guides/cookbooks/dubbing). Dina segment används som de är; ingen automatisk transkribering körs.

## Tillhandahåll dina egna översättningar

När du lägger till ett språkmål skickar du en `translations`-mappning för att använda egna översättningar i stället för maskinöversättning. Mappningen nycklas av varje källsegments `external_id`, eller dess interna segment-`id` om du inte angav något, och måste täcka varje källsegment exakt en gång.

```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.",
  },
});
```

Varje språkmål kräver ett skapandeanrop, så upprepa denna begäran för varje språk du vill dubba till. En `translations`-mappning kan innehålla högst 20 000 poster med sammanlagt högst 4 MiB text.

Om dina segment saknar `external_id` läser du källtranskriptet för att hämta varje segments interna `id` och använder dem som nycklar i stället:

```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);
}
```

### Initiera översättningar när projektet skapas

För ett enda målspråk kan du hoppa över den separata `translations`-mappningen genom att inkludera en `translation` i varje segment i transkriptfilen och skicka `target_language` när du skapar projektet. Språkmålet skapas i kö med dina översättningar och börjar genereras när projektet är klart.

**`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."
    }
  ]
}
```

## Kvalitetsaspekter

Dubbningen blir bara så bra som transkriptet och översättningarna den bygger på. Segmentens tidsangivelser och text används direkt för att tajma och röstsätta den dubbade produktionen, så felaktiga tidsangivelser eller text försämrar resultatet. Översättningar återges för att passa segmentets tidsintervall: en översättning som är mycket längre eller kortare än originalet påverkar tempot i det dubbade talet, så sträva efter översättningar med jämförbar talad längd.

## Nästa steg

#### [Förfina och generera om en dubbning](/docs/sv/eleven-api/guides/how-to/dubbing/refine-and-regenerate)

Redigera källtranskriptet och översättningarna och generera sedan om dubbningen

#### [Dubba till flera språk](/docs/sv/eleven-api/guides/how-to/dubbing/multiple-languages)

Lägg till flera målspråk i ett enda projekt

#### [API-referens](/docs/sv/api-reference/dubbing/create-project)

Utforska alla parametrar och svarsformat för Dubbing API