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

# Snabbstart för dubbning

Den här guiden visar hur du dubbar en mediefil till ett annat språk med Dubbing API. I det här exemplet skapar du ett dubbningsprojekt från en engelsk ljudfil och genererar en spansk dubbning.

Ett dubbningsprojekt har två delar: ett **projekt**, som innehåller en mediekälla och dess transkript, samt ett eller flera **språkmål**, där vart och ett skapar dubbad utdata på ett enda språk. Du skapar ett projekt, väntar på att källan transkriberas, lägger till ett språk och laddar sedan ned den färdiga dubbningen.

> **Note**
>
> Att skapa ett projekt debiterar dig för ett språk i förväg — minimidebiteringen för ett dubbningsprojekt.
> Detta förbetalar ditt första språkmål: det första språket du lägger till använder det, och varje
> ytterligare språk debiteras separat. Se [Vad kostar dubbning?](/docs/sv/help-center/product/dubbing/how-much-does-dubbing-cost) för mer information.

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.

## Använda Dubbing API

#### Skapa en API-nyckel

[Skapa en API-nyckel i dashboarden här](https://elevenlabs.io/app/api/api-keys), som du använder för att säkert [få åtkomst till API:t](/docs/sv/api-reference/authentication).

Spara nyckeln som en hanterad hemlighet och skicka den till SDK:erna antingen som en miljövariabel via en `.env`-fil eller direkt i appens konfiguration, beroende på vad du föredrar.

**`.env`**

```js title=".env"
ELEVENLABS_API_KEY=<your_api_key_here>
```

#### Installera SDK:t

#### SDK

Vi använder också biblioteket `dotenv` för att läsa in vår API-nyckel från en miljövariabel.

```python
pip install elevenlabs
pip install python-dotenv
```

```typescript
npm install @elevenlabs/elevenlabs-js
npm install dotenv
```

#### CLI

Installera ElevenLabs CLI. Homebrew (macOS) och Scoop (Windows) rekommenderas.

**`Homebrew (macOS)`**

```bash title="Homebrew (macOS)"
brew install elevenlabs/tap/elevenlabs
```

**`Scoop (Windows)`**

```powershell title="Scoop (Windows)"
scoop bucket add elevenlabs https://github.com/elevenlabs/scoop-bucket
scoop install elevenlabs
```

**`npm`**

```bash title="npm"
npm install -g @elevenlabs/cli
```

**`curl`**

```bash title="curl"
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/elevenlabs/cli/releases/latest/download/elevenlabs-cli-installer.sh | sh
```

> **Tip**
>
> Arbetar du med en AI-kodningsassistent? Kör `elevenlabs generate-skills` i ditt projekt för att skapa en
> `SKILL.md` för varje kommandogrupp i `skills/`, så att assistenten känner till hela CLI:ts yta
> utan att du behöver klistra in dokumentation. Använd `--output-dir` för att lägga dem någon annanstans. Detta läser CLI:ts egen
> inbäddade API-definition, så det kräver ingen API-nyckel och fungerar offline — och det följer
> den version av CLI:t som du har installerad.

Autentisera sedan — detta öppnar webbläsaren så att du kan auktorisera CLI:t:

```bash
elevenlabs auth login
```

> **Note**
>
> Python-exemplet använder biblioteket `requests` för att ladda ned det dubbade ljudet. Installera det
> med `pip install requests`.

#### Gör API-begäran

#### SDK

Skapa en ny fil med namnet `example.py` eller `example.mts`, beroende på vilket språk du väljer, och lägg till följande kod:

```python maxLines=0
# example.py
import os
import time
import requests
from dotenv import load_dotenv
from elevenlabs.client import ElevenLabs

load_dotenv()

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

# 1. Create a project from a source URL
project = elevenlabs.dubbing.project.create(
    source_url="https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
    source_language="en",
    reference="Quickstart dub",
)

# 2. Wait for the source media to be transcribed
while True:
    project = elevenlabs.dubbing.project.get(project.project_id)
    if project.status == "ready":
        break
    if project.status == "failed":
        raise RuntimeError("Project preparation failed")
    print("Preparing project...")
    time.sleep(5)

# 3. Add a Spanish language target
language = elevenlabs.dubbing.project.language.create(
    project.project_id,
    target_language="es",
)

# 4. Wait for the dub to finish generating
while True:
    language = elevenlabs.dubbing.project.language.get(
        project.project_id, language.language_id
    )
    if language.status == "completed":
        break
    if language.status == "failed":
        raise RuntimeError("Dub generation failed")
    print("Generating dub...")
    time.sleep(5)

# 5. Download the dubbed audio from the signed URL
audio = requests.get(language.outputs.lossless_audio)
with open("dubbed.wav", "wb") as f:
    f.write(audio.content)

print("Saved dubbed audio to dubbed.wav")
```

```typescript maxLines=0
// example.mts
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import { writeFile } from "fs/promises";
import "dotenv/config";

const elevenlabs = new ElevenLabsClient();

// 1. Create a project from a source URL
let project = await elevenlabs.dubbing.project.create({
  sourceUrl:
    "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3",
  sourceLanguage: "en",
  reference: "Quickstart dub",
});

// 2. Wait for the source media to be transcribed
while (true) {
  project = await elevenlabs.dubbing.project.get(project.projectId);
  if (project.status === "ready") break;
  if (project.status === "failed") throw new Error("Project preparation failed");
  console.log("Preparing project...");
  await new Promise((resolve) => setTimeout(resolve, 5000));
}

// 3. Add a Spanish language target
let language = await elevenlabs.dubbing.project.language.create(project.projectId, {
  targetLanguage: "es",
});

// 4. Wait for the dub to finish generating
while (true) {
  language = await elevenlabs.dubbing.project.language.get(
    project.projectId,
    language.languageId
  );
  if (language.status === "completed") break;
  if (language.status === "failed") throw new Error("Dub generation failed");
  console.log("Generating dub...");
  await new Promise((resolve) => setTimeout(resolve, 5000));
}

// 5. Download the dubbed audio from the signed URL
const response = await fetch(language.outputs!.losslessAudio!);
const buffer = Buffer.from(await response.arrayBuffer());
await writeFile("dubbed.wav", buffer);

console.log("Saved dubbed audio to dubbed.wav");
```

> **Note**
>
> Nedladdnings-URL:en i `outputs.lossless_audio` är signerad och upphör att gälla ungefär en timme efter att den
> har utfärdats. Hämta språket igen för att få en ny URL om den har gått ut.

Kör sedan programmet:

```python
python example.py
```

```typescript
npx tsx example.mts
```

Det dubbade ljudet sparas som `dubbed.wav` i din arbetskatalog.

#### CLI

CLI:t följer samma flöde. Varje steg skriver ut JSON — kopiera `project_id` och
`language_id` från svaren till nästa kommando och kontrollera `get`-kommandona
tills statusen har stabiliserats.

```bash
# 1. Create a project from a source URL (note the returned project_id)
elevenlabs dubbing project create \
  --source-url https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3 \
  --source-language en \
  --reference "Quickstart dub"

# 2. Poll until the project status is "ready"
elevenlabs dubbing project get --project-id <project_id> --query status

# 3. Add a Spanish language target (note the returned language_id)
elevenlabs dubbing project language create --project-id <project_id> --target-language es

# 4. Poll until the language status is "completed"
elevenlabs dubbing project language get \
  --project-id <project_id> --language-id <language_id> --query status

# 5. Get the signed download URL, then save the dubbed audio
elevenlabs dubbing project language get \
  --project-id <project_id> --language-id <language_id> --query outputs.lossless_audio

curl -o dubbed.wav "<lossless_audio_url>"
```

Det dubbade ljudet sparas som `dubbed.wav` i din arbetskatalog.

## Hantera fel

Om det inte går att lägga till ett språk lägger du till samma språk i det befintliga projektet igen, i stället för att skapa ett nytt projekt. Projektet och dess transkriberade källa kan återanvändas, så att försöka igen med språket går snabbare och gör att du slipper betala [minimidebiteringen för ett språk](/docs/sv/help-center/product/dubbing/how-much-does-dubbing-cost) en andra gång.

Skapa bara ett nytt projekt om projektet självt når `failed` under förberedelsen, vilket innebär att dess källa inte kunde transkriberas. Kontrollera källfilen eller URL:en och skapa sedan ett nytt projekt.

> **Tip**
>
> Företagsarbetsytor kan granska och korrigera källtranskriptet innan de lägger till ett språk, vilket
> ger mer korrekta översättningar. Se [Förfina och generera om en dubbning](/docs/sv/eleven-api/guides/how-to/dubbing/refine-and-regenerate).

## Nästa steg

#### [Använd ditt eget transkript](/docs/sv/eleven-api/guides/how-to/dubbing/bring-your-own-transcript)

Skapa ett projekt från ett befintligt transkript och använd dina egna översättningar

#### [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