← Escribelo

Quickstart

Tu primera transcripción en menos de 5 minutos. Sin auth todavía (cambiará a Bearer token cuando se active el rate limit pago).

curl (cualquier terminal)

# Transcripción JSON con timestamps
curl -X POST https://escribelo.4l3.org/v1/transcribe \
  -F "file=@episodio_podcast.mp3" \
  -F "tier=standard" \
  -F "language=es" \
  -F "output=json"

# Subtítulos SRT para YouTube
curl -X POST https://escribelo.4l3.org/v1/transcribe \
  -F "[email protected]" \
  -F "tier=accuracy" \
  -F "output=srt" \
  -o subtitulos.srt

Python (requests)

import requests

with open("audio.mp3", "rb") as f:
    r = requests.post(
        "https://escribelo.4l3.org/v1/transcribe",
        files={"file": f},
        data={"tier": "standard", "language": "es", "output": "json"},
        timeout=120,
    )
    data = r.json()
    print(data["text"])
    for seg in data["segments"]:
        print(f"[{seg['start']:.1f}-{seg['end']:.1f}] {seg['text']}")

Node.js (fetch + FormData)

import fs from "node:fs";
import { FormData, File } from "node:buffer";

const buffer = fs.readFileSync("audio.mp3");
const form = new FormData();
form.append("file", new File([buffer], "audio.mp3", { type: "audio/mpeg" }));
form.append("tier", "standard");
form.append("output", "json");

const r = await fetch("https://escribelo.4l3.org/v1/transcribe", {
  method: "POST",
  body: form,
});
const data = await r.json();
console.log(data.text);

PHP (cURL)

<?php
$ch = curl_init("https://escribelo.4l3.org/v1/transcribe");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
    "file" => new CURLFile("audio.mp3"),
    "tier" => "standard",
    "output" => "json",
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data["text"];

Próximos pasos