# So erhalten Sie Zeitstempel für jedes einzelne Wort einer Aufnahme

> Rufen Sie POST /transcribe mit output_format auf json und word_timestamps auf true auf (beides sind die Standardwerte). Im Ergebnis enthält dann jeder Abschnitt ein words-Array mit Einträgen der Form {start, end, word}, wobei die Zeiten in Sekunden angegeben sind. Hier sehen Sie, wie die Antwort aufgebaut ist, welche Modelle Wortzeiten liefern und was Sie damit umsetzen können.

Zuletzt aktualisiert: 2026-10-18 · HTML: https://console.kolwrite.com/de/guides/word-timestamps-api

## Die Anfrage

```json
{
  "audio_url": "https://example.com/interview.mp3",
  "model": "oracle",
  "language": "auto",
  "word_timestamps": true,
  "output_format": "json"
}
```

Starten Sie den Auftrag über `POST /transcribe` und fragen Sie anschließend `GET /transcribe/{jobId}` ab, bis der Status `COMPLETED` lautet. Geben Sie den Parameter `model` immer ausdrücklich an. Wenn er fehlt, greift die API auf das veraltete Modell `core` zurück.

## Die Antwort

```json
{
  "jobId": "34c63d45-4cb5-473b-bc60-25c175e69c57",
  "status": "COMPLETED",
  "result": {
    "language": "en",
    "segments": [
      {
        "start": 1.0,
        "end": 3.75,
        "text": "Hello everyone and welcome to the show.",
        "speaker": "Speaker 1",
        "words": [
          { "start": 1.0, "end": 1.35, "word": "Hello" },
          { "start": 1.4, "end": 1.75, "word": "everyone" }
        ]
      }
    ]
  }
}
```

- `segments[]`: enthält `start` und `end` in Sekunden, `text`, bei aktiver Diarisierung das Feld `speaker` sowie das Array `words[]`.
- `words[]`: enthält `start`, `end` und `word`. Die Zeiten sind in Sekunden auf drei Nachkommastellen gerundet.
- Manchmal hat ein Wort für `start` und `end` denselben Wert, und ein kurzes Wort kann nur ein paar Hundertstelsekunden dauern. Teilen Sie deshalb nicht durch die Wortdauer.
- Setzen Sie `word_timestamps` auf `false` oder liefert das gewählte Modell nur Zeiten für ganze Abschnitte, fehlt das Array `words`. Sie erhalten dann nur `start` und `end` für den jeweiligen Abschnitt.

## Welche Modelle Wortzeiten liefern

| Modell | Wortzeiten |
| --- | --- |
| `base`, `oracle`, `oracle_pro`, `oracle_max` | Ja |
| `oracle_mini` | Liefert bei reiner Transkription nur Abschnittszeiten. Wortzeiten gibt es hier nur, wenn ein Sprechermodus (Diarisierung oder Kanaltrennung) aktiv ist. |
| `core`, `edge` (Legacy) | Ja |

Reiner Text (`txt`) enthält keine Zeitangaben. Wenn Sie das SRT direkt von der API erzeugen lassen, greift derselbe Schalter. Mehr dazu steht in der [SRT-Anleitung](https://console.kolwrite.com/de/guides/srt-subtitles-api).

## Bestimmte Textstellen in der Aufnahme finden

Fassen Sie alle Wörter in einer flachen Liste zusammen, um darin zu suchen und den passenden Zeitbereich zurückzugeben. So kann ein Agent die Frage „Wo erwähnt sie die Preise?“ mit der genauen Zeit beantworten oder den Satz direkt als Clip ausschneiden.

find.py

```python
# find.py — where is a phrase said? Returns (start, end) in seconds.
import re


def find_phrase(result, phrase):
    words = [w for segment in result["segments"] for w in segment.get("words", [])]
    clean = lambda text: re.sub(r"[^\w]", "", text.lower())
    target = [clean(p) for p in phrase.split()]
    tokens = [clean(w["word"]) for w in words]
    for i in range(len(tokens) - len(target) + 1):
        if tokens[i:i + len(target)] == target:
            return words[i]["start"], words[i + len(target) - 1]["end"]
    return None


# start, end = find_phrase(result, "welcome to the show")
# ffmpeg -ss <start> -to <end> -i talk.mp4 -c:v libx264 -c:a aac clip.mp4
```

Einen Clip anhand eines Zeitbereichs ausschneiden:

```bash
ffmpeg -ss 41.2 -to 47.8 -i talk.mp4 -c:v libx264 -c:a aac clip.mp4
```

## Pausen kürzen und Jump Cuts erzeugen

Anhand der Wortzeiten erkennen Sie genau, wo Sprechpausen liegen. So behalten Sie zusammenhängende Passagen und schneiden alle Pausen heraus, die länger als ein bestimmter Schwellenwert dauern:

silences.py

```python
# silences.py — keep the speech, drop pauses longer than max_gap seconds
def speech_ranges(words, max_gap=0.7, pad=0.1):
    ranges = []
    for word in words:
        if ranges and word["start"] - ranges[-1][1] <= max_gap:
            ranges[-1][1] = word["end"]
        else:
            ranges.append([word["start"], word["end"]])
    return [[max(0.0, s - pad), e + pad] for s, e in ranges]

# Pass the ranges to cut() from cut.py to build the tightened video.
```

Die verbleibenden Abschnitte fügen Sie dann mit der Funktion `cut()` aus der [Anleitung zum Videoschnitt](https://console.kolwrite.com/de/guides/video-editing-with-ai) wieder zusammen.

## Weitere typische Anwendungen

- Wort-für-Wort-Hervorhebung im Web-Player: Heben Sie beim Abspielen jeweils das Wort hervor, in dessen Zeitfenster `currentTime` gerade liegt.
- Klickbare Transkripte: Hinterlegen Sie jedes Wort mit einem Link auf `?t=<start>`, um im Player direkt an diese Stelle zu springen.
- Kapitelmarken und Highlights: Lassen Sie ein LLM die relevanten Abschnittsnummern auswählen und lesen Sie per Code die zugehörigen Zeiten aus.
- Mediathek-Suche: Speichern Sie die Wörter samt Startzeit im Suchindex, damit Nutzer bei einem Treffer direkt an der richtigen Sekunde landen.
- Sprachkorpora und Annotation: Wandeln Sie die Wortzeiten aus dem JSON einfach in das Format Ihrer jeweiligen Analyse-Tools um.

## Kosten

Wortzeitstempel kosten keinen Aufpreis. Abgerechnet wird immer sekundengenau nach dem Tarif des gewählten Modells. Bei `base` geht es ab 0,48 US$ pro Stunde los, eine Stunde mit `oracle` liegt bei 1,44 US$. Die vollständige Preisliste finden Sie unter [/llms/pricing.md](https://console.kolwrite.com/llms/pricing.md).

## Fragen und Antworten

### Wie bekomme ich Zeitstempel auf Wortebene aus einer Transkriptions-API?

Übergeben Sie beim Aufruf `output_format: "json"` und `word_timestamps: true`. Jeder Abschnitt im Ergebnis enthält dann ein Array `words[]`, in dem für jedes Wort `start`, `end` und `word` (in Sekunden) stehen.

### Welche Modelle unterstützen Wortzeitstempel?

Die Modelle `base`, `oracle`, `oracle_pro` und `oracle_max` stellen sie bereit. Mit `oracle_mini` erhalten Sie Abschnittszeiten, solange kein Sprechermodus eingeschaltet ist. Die reine Textausgabe enthält gar keine Zeitangaben.

### Wie genau sind die Wortzeiten?

KolWrite gibt für die API keine pauschalen Genauigkeitswerte pro Sprache an. Für das Schneiden zwischen Wörtern und für Texthervorhebungen reichen die Zeiten gut aus. Testen Sie am besten ein paar eigene Aufnahmen und planen Sie an den Schnittpunkten einen kleinen Puffer ein.

### Kann ich Zeitstempel für eine Videodatei bekommen?

Ja, die API liest einfach die Audiospur der hochgeladenen Videodatei aus. Ist das Video größer als 100 MiB, extrahieren Sie die Tonspur vorab mit ffmpeg.

### Sind die Zeitstempel in Sekunden oder Millisekunden?

In Sekunden, angegeben als Dezimalzahl mit bis zu drei Nachkommastellen (zum Beispiel `41.236`).

## Verwandte Seiten

- [Videos mit KI-Agenten schneiden](https://console.kolwrite.com/de/guides/video-editing-with-ai)
- [SRT-Untertitel-API](https://console.kolwrite.com/de/guides/srt-subtitles-api)
- [Podcast- und YouTube-Untertitel](https://console.kolwrite.com/de/guides/podcast-youtube-captions)
- [Sprachforschung und Linguistik](https://console.kolwrite.com/de/use-cases/researchers)
- [Entwickler und Produktteams](https://console.kolwrite.com/de/use-cases/developers)
- [API-Dokumentation](https://console.kolwrite.com/de/public_api_docs)

---
API-Schlüssel holen: https://console.kolwrite.com/auth?lang=de · API-Dokumentation: https://console.kolwrite.com/de/public_api_docs · llms.txt: https://console.kolwrite.com/llms.txt
