API de transcription pour toutes les vidéos de votre bibliothèque

Envoyez des fichiers vidéo ou des liens YouTube, Google Drive et Vimeo pour obtenir des transcriptions consultables avec identification des locuteurs et repères temporels, en 75 langues et avec détection automatique de la langue. Transcrivez une vidéo ou toute votre bibliothèque, puis traduisez les transcriptions et les sous-titres pour un public international.
Fichiers et liens vidéo
Transcription par lot
REST + SDK Python
link in, transcript out
OAuth 2.0
# 1. send the video as a link - YouTube, Google Drive, Vimeo, S3 or direct URL
curl -X POST https://api.rask.ai/api/library/v1/media/link \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d '{"link": "https://youtu.be/...", "name": "camera review"}'

# 2. create the project - the language of the video is detected automatically
curl -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"es-mx\"}"
GET /v2/projects/{project_id}/transcription
plain text
# The transcript as plain text with timestamps and speakers
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[] | "\(.start) \(.speaker): \(.src.text)"'
Utilisé par des équipes du monde entier
Fonctionnalités

Ce que fait l'API de transcription vidéo

Envoyez des fichiers ou des liens vidéo et obtenez une transcription avec les locuteurs et les repères temporels pour chaque vidéo de votre bibliothèque. Le même projet transforme chaque transcription en traductions, en sous-titres et en version doublée.

Transcrire des vidéos à partir d'un fichier ou d'un lien

Importez des fichiers vidéo ou partagez un lien YouTube, Google Drive, Vimeo, S3 ou direct. L'API récupère la vidéo directement, sans étape de téléchargement de votre côté.

Plusieurs locuteurs, identifiés

Les interviews, tables rondes et webinaires avec différents intervenants affichent une étiquette de locuteur sur chaque segment, pour que vous sachiez toujours qui a dit quoi.

Détection automatique de la langue

Transcrivez des vidéos dans 75 langues sources, dont l'anglais. Laissez la langue source vide et la langue de chaque vidéo sera détectée automatiquement.

Transcriptions consultables

Chaque segment possède un moment de début et de fin, permettant aux utilisateurs de rechercher du texte dans une vidéo et d'accéder directement au moment où une phrase est prononcée.

Transcriptions en plusieurs langues

Chaque segment intègre également sa traduction, parmi plus de 135 langues et options régionales, afin qu'une seule transcription s'adresse à un public international.

Sous-titres aux formats .srt et .vtt

Chaque projet génère également des fichiers de sous-titres dans la langue cible, synchronisés avec les segments, pour les spectateurs malentendants ou ceux qui regardent les vidéos sans le son.

Texte brut ou données structurées

Lisez la transcription sous forme de segments JSON, ou regroupez le texte en texte brut pour les index de recherche, les articles, les descriptions et les notes.

Corriger le jargon technique

Corrigez les noms, les termes produits et le jargon technique dans n'importe quel segment via l'API. Un glossaire garantit la cohérence des termes lors de la traduction de la transcription.

Évoluez sans limites

Aucune limite de débit, aucun quota de concurrence, aucune restriction par clé. Effectuez des transcriptions par lot sur plusieurs vidéos ou sur l'ensemble de votre bibliothèque en parallèle.
Voir en action

D'une seule transcription à cinq versions linguistiques

La transcription de cet extrait a été déclinée en versions anglaise, française, allemande, portugaise et espagnole, chacune avec des sous-titres et l'audio de fond d'origine.
EN flag
En
FR flag
Fr
DE flag
De
PT flag
Pt
ES flag
Es
Flux de travail

Trois étapes, du lien vidéo à la transcription

La création du projet lance la transcription, puis la traduction, les sous-titres et la version doublée en une seule fois. Utilisez l'adresse /generate après avoir corrigé la transcription.
1

Envoyez la vidéo

Téléchargez un fichier vidéo en tant que données de formulaire multipart, ou publiez un lien YouTube, Google Drive, Vimeo, S3 ou direct. Vous obtenez un identifiant de média et les métadonnées de la vidéo avant de dépenser quoi que ce soit.

POST /api/library/v1/media/link
2

Créer le projet

Indiquez l'identifiant du média comme video_id et une langue cible. Laissez la langue source vide pour une détection automatique. La transcription démarre immédiatement.video_id

POST /v2/projects
3

Lire la transcription

Lisez les segments de transcription dès qu'ils sont disponibles, afin de pouvoir commencer à indexer l'enregistrement pendant que le traitement des médias traduits se poursuit. Téléchargez les fichiers de sous-titres et de médias une fois le projet terminé.

GET /v2/projects/{id}/transcription
La transcription fonctionne sur les vidéos enregistrées, pas sur les diffusions en direct. Le temps de traitement varie selon la durée de la vidéo et le nombre d'intervenants : lors d'un test, une vidéo de 3:47 a été traitée en 165 secondes.
Conçu pour vous

Vous avez besoin d'un volume de transcription important ou d'une langue qui ne figure pas dans notre liste ? Contactez notre équipe

Transcription en grand volume, langue source absente de la liste, format de transcription attendu par votre index de recherche ou livraison sur votre propre espace de stockage : notre équipe étudie vos besoins et les options disponibles.

Langues et voix

Besoin d'une langue source qui ne figure pas dans le catalogue public ? Contactez notre équipe pour lui faire part de vos besoins et découvrir les options disponibles.

Livraison et intégration

Webhooks, envoi direct dans votre propre file d'attente, livraison sur votre espace S3, points de terminaison personnalisés. Dites-nous comment alimenter votre système.

Volume et débit

La taille des lots, le nombre de langues cibles par action et la priorité de traitement font l'objet de conditions contractuelles, et non de limites figées dans le produit.

Sécurité et hébergement

La gestion des données, l'authentification unique (SSO et SAML), les règles de conservation et l'aide aux audits de sécurité sont prises en charge lors de l'intégration des grandes entreprises.
Cas d'utilisation

Qui utilise une API de transcription vidéo

Plateformes intégrant de la vidéo

Plateformes de formation et d'apprentissage, plateformes de création et de vidéo, outils de webinaires et d'événements virtuels, hébergement vidéo et SaaS de flux de travail, plateformes d'adoption numérique, shopping en direct. Intégrez des transcriptions et des sous-titres consultables à vos vidéos importées en tant que fonctionnalité de votre produit.

Agences de localisation et de production

Transcrivez les vidéos de vos clients en gros volume, fournissez aux réviseurs la transcription avec les noms des intervenants, et livrez les sous-titres et les traductions à partir des mêmes projets.

Production vidéo continue en interne

Vente au détail et commerce électronique internationaux, franchises mondiales, éditeurs de médias, universités d'entreprise, créateurs de contenu. Rendez chaque vidéo accessible et facile à rechercher, et réutilisez les transcriptions pour vos articles et descriptions.
Témoignages clients

De véritables équipes, des résultats mesurables

Découvrez comment les entreprises localisent leurs vidéos avec Rask, en chiffres.
flèche
flèche
Code

Exemples de code pour l'API de transcription vidéo

Un exemple complet dans chaque langue : envoyez des vidéos sous forme de liens ou de fichiers, patientez, puis enregistrez les transcriptions en texte brut ou effectuez des recherches par horodatage.
# pip install git+ssh://[email protected]/braskai/rask-sdk.git@main
import asyncio
from rask_sdk import clients, enums, schemas

VIDEOS = ["https://youtu.be/aaa", "https://youtu.be/bbb", "https://vimeo.com/123"]

async def transcribe(client, i, link):
    media = await client.create_media_link(data=schemas.MediaCreateLink(link=link))
    while media.status is enums.MediaStatus.PROCESSING:
        await asyncio.sleep(5)
        media = await client.get_media(media_id=media.id)
    job = await client.create_project(data=schemas.ProjectCreate(video_id=media.id, dst_lang="en-us"))
    while job.status is not enums.ProjectStatus.MERGING_DONE:
        await asyncio.sleep(10)
        job = await client.get_project(project_id=job.id)
    t = await client.get_project_transcription(project_id=job.id)
    with open(f"video_{i}.txt", "w") as f:   # plain text, one segment per line
        f.write("\n".join(f"{s.speaker}: {s.src.text}" for s in t.segments))

async def main():
    client = clients.RaskSDKClient(client_id=CLIENT_ID, client_secret=CLIENT_SECRET)
    await asyncio.gather(*(transcribe(client, i, v) for i, v in enumerate(VIDEOS)))   # no rate limits

asyncio.run(main())
github.com/braskai/rask-sdk
bulk, async
import os, time, requests

AUTH = "https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token"
API  = "https://api.rask.ai"

token = requests.post(AUTH, auth=(CLIENT_ID, CLIENT_SECRET),
                      data={"grant_type": "client_credentials"}).json()["access_token"]
h = {"Authorization": f"Bearer {token}"}

media = requests.post(f"{API}/api/library/v1/media/link", headers=h,
                      json={"link": "https://youtu.be/..."}).json()

project = requests.post(f"{API}/v2/projects", headers=h,
                        json={"video_id": media["id"], "dst_lang": "es-mx"}).json()

while project["status"] != "merging_done":
    time.sleep(10)
    project = requests.get(f"{API}/v2/projects/{project['id']}", headers=h).json()

print(project["translated_video"])
requests
no SDK required
// no dependencies, Node 18+ global fetch
const API = 'https://api.rask.ai';
const sleep = (ms) => new Promise((r) => setTimeout(r, ms));
const auth = await fetch('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token', {
  method: 'POST',
  headers: { Authorization: 'Basic ' + btoa(`${CLIENT_ID}:${CLIENT_SECRET}`) },
  body: new URLSearchParams({ grant_type: 'client_credentials' }),
}).then((r) => r.json());
const h = { Authorization: `Bearer ${auth.access_token}`, 'Content-Type': 'application/json' };
const call = (method, path, body) => fetch(API + path, { method, headers: h, body: body && JSON.stringify(body) }).then((r) => r.json());

let media = await call('POST', '/api/library/v1/media/link', { link: 'https://drive.google.com/file/d/...' });
while (media.status === 'processing') { await sleep(5000); media = await call('GET', `/api/library/v1/media/${media.id}`); }

let p = await call('POST', '/v2/projects', { video_id: media.id, dst_lang: 'fr-fr' });
while (p.status !== 'merging_done') { await sleep(10000); p = await call('GET', `/v2/projects/${p.id}`); }

const { segments } = await call('GET', `/v2/projects/${p.id}/transcription`);
const index = segments.map((s) => ({ t: s.start, speaker: s.speaker, text: s.src.text, fr: s.dst.text }));
console.log(JSON.stringify(index, null, 2));   // ready for your search index
fetch, Node 18+
plain HTTP
# 1. token (valid 1 hour - cache and reuse it)
TOKEN=$(curl -s -X POST https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token \
  -u "$CLIENT_ID:$CLIENT_SECRET" -d "grant_type=client_credentials" | jq -r .access_token)

# 2. upload a local video file
VIDEO_ID=$(curl -s -X POST "https://api.rask.ai/api/library/v1/media?kind=video" \
  -H "Authorization: Bearer $TOKEN" -F "[email protected]" | jq -r .id)

# 3. create the project once the media status is ready
ID=$(curl -s -X POST https://api.rask.ai/v2/projects \
  -H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
  -d "{\"video_id\": \"$VIDEO_ID\", \"dst_lang\": \"de-de\", \"num_speakers\": 3}" | jq -r .id)

# 4. when status is merging_done, save the transcript as plain text
curl -s https://api.rask.ai/v2/projects/$ID/transcription -H "Authorization: Bearer $TOKEN" \
  | jq -r '.segments[].src.text' > webinar.txt
local video file
multipart upload
<?php
use GuzzleHttp\Client;

$http = new Client(['base_uri' => 'https://api.rask.ai']);
$json = fn($r) => json_decode($r->getBody(), true);
$auth = $json((new Client)->post('https://rask-prod.auth.us-east-2.amazoncognito.com/oauth2/token',
    ['auth' => [$clientId, $clientSecret], 'form_params' => ['grant_type' => 'client_credentials']]));
$h = ['Authorization' => 'Bearer ' . $auth['access_token']];

$media = $json($http->post('/api/library/v1/media/link', ['headers' => $h, 'json' => [
    'link' => 'https://vimeo.com/123456']]));
while ($media['status'] === 'processing') {
    sleep(5);
    $media = $json($http->get("/api/library/v1/media/{$media['id']}", ['headers' => $h]));
}

$p = $json($http->post('/v2/projects', ['headers' => $h, 'json' => [
    'video_id' => $media['id'], 'dst_lang' => 'pt-br']]));
while ($p['status'] !== 'merging_done') {
    sleep(10);
    $p = $json($http->get("/v2/projects/{$p['id']}", ['headers' => $h]));
}

$t = $json($http->get("/v2/projects/{$p['id']}/transcription", ['headers' => $h]));
file_put_contents('video.txt', implode("\n", array_map(fn($s) => $s['src']['text'], $t['segments'])));
Guzzle 7
plain HTTP
Python est le kit de développement officiel (SDK). Les onglets Node, PHP et cURL proposent des exemples HTTP simples ciblant les mêmes points de terminaison.
Progression

Comment un projet de transcription vidéo indique sa progression

Chaque vidéo devient un projet doté de statuts précis, ce qui vous permet de suivre l'avancement de chaque vidéo lors d'un traitement en lot. Vous n'avez à intervenir que sur trois groupes.

Succès, s'arrêter ici

merging_done
Les fichiers multimédias et de sous-titres finaux sont prêts. Vous pouvez lire et indexer la transcription plus tôt, dès que ses segments sont disponibles.

En cours, continuer d'interroger

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Ainsi que les _done états correspondants. Ceux-ci s'intègrent parfaitement dans une interface de progression par étapes.

Échec, s'arrêter et signaler

failed
upload_failed
transcription_failed
translation_failed
voiceover_failed
merging_failed
no_audio
no_words
forbidden_link
no_audio, no_words and forbidden_link are specific enough to show directly to your own user, for example a video without speech.
Plain text transcript, two speakers
jq -r on /transcription
00:00:00,320  SPEAKER_00  Welcome back. Today we test three cameras in low light.
00:00:06,180  SPEAKER_01  I brought the footage from last week's night shoot.
00:00:10,940  SPEAKER_00  Let's start with the smallest sensor, the hardest case.
00:00:15,500  SPEAKER_01  At ISO 6400 the noise is visible, but the colors hold up.

Ou passez entièrement le système d'interrogation

Indiquez-nous un point de terminaison de webhook et chaque changement d'état arrive sous forme de requête POST, permettant à votre file d'attente de réagir instantanément. La livraison par webhook fait partie de l'offre entreprise.
Lire la documentation
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Résultat

Ce que vous obtenez pour chaque vidéo

Chaque projet terminé propose la transcription sous forme de segments JSON, des fichiers de sous-titres en SRT et VTT dans la langue cible, ainsi que la vidéo et l'audio traduits. Les liens de téléchargement sont pré-signés et valables une heure.
Champ
Format
Description
/transcription
JSON
Nom de l'intervenant, horodatages, texte source et traduction pour chaque segment
translation_srt_path
.srt
Sous-titres dans la langue cible, synchronisés avec les segments
translation_vtt_path
.vtt
Les mêmes sous-titres au format WebVTT, pour les lecteurs web
translated_video
MP4
La vidéo traduite avec la voix off
translated_audio
WAV
Voix traduite mixée avec l'audio d'arrière-plan d'origine
original_video
MP4
Votre vidéo source enregistrée, à titre de référence
Contrôle

Corrigez les noms et le jargon dans la transcription

La transcription automatique gère la majeure partie d'une vidéo. Les noms, les accents et le jargon technique nécessitent parfois une intervention humaine. Corrigez le texte, le minutage ou l'intervenant d'un segment en une seule demande, puis régénérez la version traduite, facturée sur les segments modifiés avec un minimum d'une minute par exécution.

Édition au niveau du segment

Édition au niveau du segment
Chaque projet expose sa transcription sous forme de segments adressables, si bien qu'un nom mal compris se corrige par une simple requête au lieu d'une transcription manuelle.
Récupérer la transcription et ses segments
Modifiez le texte source et nous le traduisons à nouveau
Modifiez directement le texte traduit pour conserver vos propres mots
Ajuster les repères temporels, ajouter des segments, supprimer des segments
Réattribuer la voix associée à un locuteur

Glossaires pour la terminologie

Glossaires pour la terminologie
Associez un glossaire pour que les noms de produits et les termes techniques restent identiques dans chaque transcription traduite, ou conservez-les intentionnellement dans la langue d'origine.

Un glossaire couvre une paire de langues et s'applique à toutes les variantes régionales de cette langue cible, ce qui signifie qu'un seul glossaire en espagnol sert es-mx et es-es de même. Les enregistrements du projet glossary_version, de sorte que les modifications ultérieures ne modifient jamais le travail terminé sans que vous le sachiez.
Entrée

Formats de fichiers pris en charge

Transcrivez des fichiers vidéo dans sept formats et des enregistrements audio dans quatre, ou envoyez un lien provenant d'une grande plateforme telle que YouTube, Google Drive ou Vimeo. Les fichiers non pris en charge sont rejetés avant qu'aucune minute ne soit facturée.

Vidéo

7 formats
.mp4
.mov
.mkv
.avi
.webm
.m4v
.3gp

Audio

4 formats
.mp3
.wav
.flac
.m4a

Métadonnées avant de dépenser

Le point de terminaison multimédia renvoie la durée, la taille du fichier, le codec vidéo, la fréquence d'images, la résolution, le codec audio, la fréquence d'échantillonnage et la disposition des canaux. Validez un fichier et estimez le coût à l'avance, car les projets sont facturés à la minute de vidéo.
Sécurité et conformité

Vos vidéos et transcriptions protégées par des contrôles audités

Brask Inc détient la certification SOC 2 Type II, respecte le RGPD et publie l'état de ses contrôles en direct dans son centre de confiance pour votre équipe de sécurité.

Certifications

SOC 2 Type II
RGPD
Membre de CAI et C2PA

Cryptage

TLS 1.2 en transit
AES-256 au repos
Clés gérées SSE-S3
Rotation des clés au moins tous les 12 mois

Votre contenu

Environnement IA fermé
Jamais utilisé pour entraîner des modèles généraux
Exportation complète, sans exclusivité

Accès

SSO et SAML
Contrôle d'accès par rôle
Identifiants client OAuth 2.0

Entreprise

Options de résidence des données
SLA personnalisés
Gestionnaire de compte dédié

Droits sur les voix

Voix synthétiques avec droits d'utilisation
Clonage vocal basé sur le consentement
Contrôles de sécurité de l'IA, intervention humaine
Comparaison

L'API Rask par rapport à un flux de travail de transcription assemblé à partir de pièces détachées

La transcription d'une vidéo est rarement le résultat final. Les équipes ont également besoin d'identifier les intervenants, de sous-titres et d'autres langues. Voici le même travail, réalisé de deux manières différentes.
Ce dont vous avez besoin
Rask API
Assemblé à partir de pièces
Liens vidéo provenant de YouTube, Drive, Vimeo ou S3
Acceptés directement
Télécharger et convertir d'abord
Identification des différents intervenants
Inclus
Un module complémentaire de diarisation ou un étiquetage manuel
La langue de chaque vidéo
Détectée automatiquement
Définie par fichier ou détectée séparément
Transcriptions dans d'autres langues
Plus de 135 options de langues et de régions
Une API de traduction par langue
Sous-titres aux formats .srt et .vtt
Inclus
Un outil de sous-titrage ou votre propre générateur de fichiers
Correction du jargon technique
Une requête de correction par segment
Modifier des copies dans chaque outil
Une version doublée de la vidéo
Inclus dans le même projet
Un fournisseur de synthèse vocale et votre propre mixage
Limites de débit
Aucun
Selon les règles de chaque fournisseur
Sous-titres en temps réel pour les réunions en direct
Utiliser une API de transcription vocale en flux continu
Intégré chez certains fournisseurs
Une langue non prise en charge
Nous la créons
Non disponible
FAQ

API de transcription vidéo : questions fréquentes

Vous ne trouvez pas ce que vous cherchez ? Contactez le service commercial.

Rask dispose-t-il d'une API de transcription vidéo ?

Puis-je transcrire une vidéo YouTube ou un lien vidéo ?

Puis-je transcrire plusieurs vidéos en même temps ?

Comment gérez-vous les différents interlocuteurs ?

Quelles sont les langues prises en charge ?

Quel est le niveau de précision de la transcription ?

Puis-je obtenir la transcription sous forme de texte brut ?

Générez-vous des résumés par IA, des sujets clés ou une analyse des sentiments ?

Peut-on transcrire des réunions ?

Y a-t-il une taille de fichier maximale ?

Comment la transcription vidéo est-elle facturée ?

Existe-t-il une offre gratuite ?

Comment obtenir un accès à l'API et une clé API ?

Commencez le doublage en un après-midi

Faites votre première requête dès aujourd'hui et contactez-nous si vous avez besoin de tarifs dégressifs pour de grands volumes ou d'une langue rare.