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 horodatages, dans 75 langues et avec détection automatique. Transcrivez une vidéo ou toute votre bibliothèque, puis traduisez les transcriptions et les sous-titres pour un public mondial.
Fichiers et liens vidéo
Transcription par lot
REST + Kit de développement Python (SDK)
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 horodatages pour chaque vidéo de votre bibliothèque. Un 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

Téléchargez des fichiers vidéo ou ajoutez un lien direct, YouTube, Google Drive, Vimeo ou S3. L'API récupère la vidéo elle-même, 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 le nom du 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, ce qui permet aux utilisateurs de faire des recherches dans le texte d'une vidéo et d'aller directement au moment où une phrase est prononcée.

Transcriptions en plusieurs langues

Chaque segment comporte également sa traduction dans plus de 135 langues et options régionales, de sorte qu'une seule transcription s'adresse à un public international.

Sous-titres au format .srt et .vtt

Chaque projet fournit également des fichiers de sous-titres dans la langue cible, synchronisés avec les segments, pour les spectateurs malentendants ou 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 pour alimenter des moteurs de recherche, des articles, des descriptions d'émissions et des notes.

Corrigez 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

Pas de limite de débit, pas de quota de concurrence, pas de restriction par clé. Lancez des transcriptions en 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é convertie 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 le point de terminaison /generate après avoir corrigé la transcription.
1

Envoyez la vidéo

Téléchargez un fichier vidéo sous forme de données de formulaire multipart, ou publiez un lien YouTube, Google Drive, Vimeo, S3 ou un lien direct. Vous obtenez un identifiant de média et les métadonnées de la vidéo avant de dépenser le moindre centime.

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

Créer le projet

Transmettez l'identifiant du média en tant que video_id ainsi qu'une langue cible. Laissez la langue source vide pour une détection automatique de la langue. La transcription commence immédiatement.video_id

POST /v2/projects
3

Lire la transcription

Lisez les segments de transcription dès qu'ils sont disponibles, ce qui vous permet de commencer à indexer l'enregistrement pendant que le traitement du média traduit 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 et non sur les flux en direct. Le temps de traitement varie en fonction de la longueur de la vidéo et du nombre d'intervenants : lors d'un test observé, une vidéo de 3 minutes 47 a été traitée en 165 secondes.
Conçu pour vous

Vous avez besoin d'une transcription à grand volume ou dans une langue que nous ne proposons pas ? Contactez notre équipe

Transcription à grand volume, langue source absente de la liste, format de transcription attendu par votre moteur de recherche ou livraison sur votre propre 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 ? Parlez-en à notre équipe pour lui faire part de vos besoins et découvrir les options disponibles.

Diffusion et intégration

Webhooks, envoi vers votre propre file d'attente, livraison directe sur votre S3, endpoints personnalisés. Dites-nous comment votre système souhaite être alimenté.

Volume et débit

La taille des lots, les langues cibles par action et la priorité de traitement sont des conditions contractuelles, et non des limites de produit fixes.

Sécurité et hébergement

La résidence des données, le SSO et SAML, les règles de conservation et le support pour l'examen de la sécurité sont pris 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 LMS et de formation client, plateformes de création et de vidéo, outils de webinaires et d'événements virtuels, solutions SaaS d'hébergement vidéo et de flux de travail, plateformes d'adoption numérique, achats en direct. Ajoutez des transcriptions et des sous-titres recherchables aux vidéos téléchargées en tant que fonctionnalité de votre produit.

Agences de localisation et de production

Transcrivez les vidéos de vos clients en masse, fournissez aux réviseurs la transcription avec les noms des intervenants, et livrez sous-titres et 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 consultable et accessible, et réutilisez les transcriptions pour des articles et des descriptions.
Témoignages clients

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

Découvrez comment les entreprises localisent leurs vidéos avec Rask, chiffres à l'appui.
flèche
flèche
Code

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

Un exemple complet par langue : envoyez des vidéos sous forme de liens ou de fichiers, patientez, puis enregistrez des 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. Les onglets Node, PHP et cURL montrent des exemples HTTP simples utilisant 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 documentés, ce qui vous permet de suivre l'avancement de chaque vidéo lors d'un traitement en masse. Vous n'avez à intervenir que sur trois groupes.

Succès, arrêtez-vous ici

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

En cours, continuez à vérifier

created
uploading
transcription_started
separate_background_started
determine_speakers_started
translation_started
voiceover_started
merging_started
Ainsi que la correspondance _done états. Ceux-ci correspondent parfaitement à une interface de progression par étapes.

Échec, arrêt et rapport

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 ignorez complètement le sondage

Indiquez-nous un point de terminaison webhook et chaque changement d'état est envoyé sous forme de POST, permettant à votre file d'attente de réagir instantanément à chaque modification. L'envoi de webhooks fait partie de l'intégration pour les entreprises.
Lire la documentation
preserveAspectRatio="xMidYMid meet" aria-hidden="true" role="img">
Sortie

Ce que vous obtenez pour chaque vidéo

Chaque projet terminé présente 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 pendant une heure.
Champ
Format
Ce que c'est
/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 voix off
translated_audio
WAV
Discours traduit mixé 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 l'intervention d'une personne. 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 des segments

Édition au niveau des segments
Chaque projet expose sa transcription sous forme de segments adressables, de sorte qu'un nom mal compris se corrige par une simple demande de mise à jour plutôt que par une transcription manuelle.
Récupérer la transcription et ses segments
Modifier le texte source pour lancer une nouvelle traduction
Modifier directement le texte traduit pour conserver vos propres formulations
Ajuster les repères temporels, ajouter ou supprimer des segments
Réassigner 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. Ainsi, un seul glossaire en espagnol sert es-mx et es-es de la même manière. L'historique du projet glossary_version, de sorte que les modifications ultérieures ne modifient jamais discrètement le travail déjà terminé.
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

L'API 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, fonctionne conformément au 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
GDPR
Membre 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 d'IA fermé
Jamais utilisé pour entraîner des modèles généraux
Exportation complète, sans dépendance vis-à-vis d'un fournisseur

Accès

SSO et SAML
Contrôle d'accès basé sur les rôles
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 de voix basé sur le consentement
Contrôles de sécurité de l'IA, intervention humaine
Comparaison

Rask API par rapport à un flux de travail de transcription assemblé à partir de composants

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échargement et conversion préalables
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 langues et options régionales
Une API de traduction par langue
Sous-titres au format .srt et .vtt
Inclus
Un outil de sous-titrage ou votre propre outil de création de fichiers
Correction du jargon technique
Une demande de mise à jour par segment
Modification 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 taux
Aucun
Selon les règles imposées par chaque fournisseur
Sous-titres en temps réel pour les réunions en direct
Utilisez une API de transcription en flux continu
Intégré à certains fournisseurs
Une langue qu'aucun autre ne prend encore 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 à la fois ?

Comment le système gère-t-il les différents intervenants ?

Quelles langues sont 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ère-t-il des résumés par IA, des sujets clés ou une analyse des sentiments ?

Peut-il 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 à doubler en un après-midi

Faites votre première demande dès aujourd'hui et contactez-nous si vous avez besoin de tarifs de gros ou d'une langue introuvable ailleurs.