7 min de lecture

API de transcription audio et vidéo

Article traduit depuis la version anglaise.

Transcrivez les médias locaux, privés ou envoyés par vos utilisateurs grâce au processus d’import direct de Fast Transcriber. Votre application prépare une cible d’import, envoie les octets directement dans le stockage d’objets, puis met en file d’attente la référence de l’objet renvoyée afin de lancer la transcription.

Pourquoi les fichiers sont-ils envoyés directement dans le stockage d’objets ?

Les fichiers multimédias volumineux ne doivent pas transiter dans le corps d’une requête du framework. Fast Transcriber renvoie une cible d’import pré-signée, en une seule partie ou en plusieurs parties, afin que votre service dorsal puisse transférer directement les octets. Il suffit ensuite d’envoyer une petite référence JSON au point de terminaison de transcription.

Étape 1 : préparer la cible d’import

Envoyez le nom de fichier, le type de contenu et la taille exacte en octets. La réponse indique le fournisseur de stockage, la clé de l’objet et les instructions d’import propres au compte authentifié.

curl --request POST https://fast-transcriber.com/api/v1/uploads \
  --header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "filename": "entretien.mp3",
    "content_type": "audio/mpeg",
    "size": 1234567
  }'

Pour un import en une seule partie, la réponse contient l’URL pré-signée data.upload.url, les en-têtes de requête requis, ainsi que les valeurs data.storage et data.key nécessaires à l’étape 3.

{
  "data": {
    "content_type": "audio/mpeg",
    "key": "transcriptions/account-id/upload-id/entretien.mp3",
    "storage": "r2",
    "upload": {
      "headers": { "Content-Type": "audio/mpeg" },
      "method": "PUT",
      "type": "single",
      "url": "https://stockage-presigne.example/..."
    }
  }
}

Étape 2 : envoyer les octets du média

Pour une cible single, envoyez les octets du fichier à l’URL renvoyée avec les en-têtes fournis. L’URL ci-dessous remplace data.upload.url à titre d’exemple. N’envoyez pas votre clé Bearer Fast Transcriber à l’URL de stockage.

UPLOAD_URL="COLLER_DATA_UPLOAD_URL"
curl --request PUT "$UPLOAD_URL" \
  --header "Content-Type: audio/mpeg" \
  --upload-file "./entretien.mp3"

Pour une cible multipart, envoyez chaque plage d’octets à l’URL data.upload.parts[].url correspondante, relevez chaque ETag de réponse, puis terminez l’import avant de le mettre en file d’attente :

curl --request POST https://fast-transcriber.com/api/v1/uploads/multipart \
  --header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "storage": "RETURNED_STORAGE_PROVIDER",
    "key": "RETURNED_STORAGE_KEY",
    "upload_id": "RETURNED_UPLOAD_ID",
    "parts": [
      { "part_number": 1, "etag": "RETURNED_ETAG" }
    ]
  }'

Conservez sans les modifier les valeurs storage et key renvoyées. Si le transfert d’une partie échoue, relancez cette partie ou abandonnez l’import multipart au lieu de mettre en file d’attente un objet incomplet.

Étape 3 : mettre l’objet importé en file d’attente

Remplacez les valeurs en majuscules ci-dessous par data.storage et data.key provenant de la réponse d’import, au lieu d’inscrire un fournisseur en dur. Le nom de fichier, le type de contenu et la taille doivent décrire l’objet stocké.

curl --request POST https://fast-transcriber.com/api/v1/transcriptions \
  --header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "upload": {
      "storage": "RETURNED_STORAGE_PROVIDER",
      "key": "RETURNED_STORAGE_KEY",
      "filename": "entretien.mp3",
      "content_type": "audio/mpeg",
      "size": 1234567
    },
    "speaker_diarization": false
  }'

Une mise en file d’attente réussie renvoie 202 Accepted et un en-tête Location. Affectez ce chemin à LOCATION_PATH, puis interrogez-le avec n’importe quelle clé Bearer active du même compte jusqu’à la réussite ou l’échec de la tâche.

LOCATION_PATH="/api/v1/transcriptions/95c3fdd8-..."
curl --request GET "https://fast-transcriber.com$LOCATION_PATH" \
  --header "Authorization: Bearer $FAST_TRANSCRIBER_API_TOKEN"

Prêt à envoyer cette requête ? Créez une clé d’API ou consultez tous les points de terminaison dans la documentation de l’API.

Propriété et validation du média

Avant la mise en file d’attente, le serveur vérifie que l’objet appartient au compte authentifié, ainsi que sa taille stockée et son type de média. Une clé d’import émise pour un autre compte est refusée. Les références d’import restent ainsi limitées au compte qui les a créées.

Imports en une seule partie ou en plusieurs parties

Les fichiers plus petits peuvent utiliser la cible d’import unique renvoyée. Les fichiers plus volumineux peuvent recevoir des instructions multipart afin qu’un transfert interrompu puisse reprendre partie par partie. Terminez toutes les parties requises et conservez les ETags renvoyés avant d’appeler le point de terminaison d’achèvement multipart.

Exploiter la transcription terminée

Les tâches terminées contiennent le texte de la transcription, sa durée et les segments horodatés disponibles selon les limites de l’offre du compte. Utilisez le résultat pour des archives consultables, des processus de sous-titrage, l’analyse d’entretiens, des comptes rendus de réunion ou un traitement d’IA en aval autorisé.

{
  "data": {
    "id": "95c3fdd8-...",
    "filename": "video-source.mp4",
    "status": "completed",
    "duration_seconds": 84,
    "text": "Texte intégral de la transcription...",
    "segments": [
      { "start": 0, "end": 3.8, "text": "Premier segment..." }
    ]
  }
}

Quand importer un fichier plutôt qu’envoyer une URL ?

  • Le média est local, envoyé par un utilisateur ou généré dans votre application.
  • La source est privée, mais votre application est autorisée à la récupérer et à la traiter.
  • Vous préférez un transfert d’objet stable à la dépendance envers un lien public tiers.
  • L’URL d’origine nécessite une session, un cookie ou un jeton d’accès qui ne doit jamais être envoyé à Fast Transcriber.

Questions fréquentes

Le média transite-t-il dans le corps d’une requête Next.js ?

Non. L’import est envoyé directement au stockage d’objets à l’aide de la cible renvoyée par le point de terminaison des imports.

Que valide le serveur avant la mise en file d’attente ?

Il valide la propriété de l’objet, sa taille stockée et son type de média. Les références appartenant à un autre compte sont refusées.

Les enregistrements importés peuvent-ils utiliser la diarisation des intervenants ?

Oui. Définissez speaker_diarization sur true. La diarisation nécessite l’offre Pro.

Quelles limites s’appliquent aux imports par API ?

Les tâches de l’API utilisent les limites normales de l’offre du compte authentifié, notamment celles relatives à la taille des fichiers et à l’utilisation quotidienne.

Articles connexes sur l’API

Prêt à transcrire ?

Essayez Fast Transcriber gratuitement, sans créer de compte.

Commencer à transcrire