À propos du projet
## Ce que c'est
ChatGPT Subtitle Translator est un utilitaire de traduction construit autour de l'API ChatGPT d'OpenAI (ou tout endpoint de complétion compatible OpenAI, y compris une instance locale Ollama). Son objectif est la traduction ligne par ligne, en particulier pour les sous-titres SRT, où préserver la correspondance entre les lignes d'entrée et de sortie est essentiel pour maintenir le timing des sous-titres.
## Comment ça fonctionne
Les index et horodatages SRT sont supprimés ou simplifiés avant d'être envoyés au modèle pour réduire l'utilisation de tokens. Les lignes sont groupées en lots dans un seul prompt, éliminant les frais généraux répétés par entrée et permettant de traduire des fichiers arbitrairement longs sans consommation excessive de tokens. L'instruction système par défaut est un minimal `Traduire vers <langue>`.
Cinq modes structurés sont sélectionnables via `--structured` :
- `array` (défaut) : les lignes sont envoyées comme un tableau JSON et le modèle retourne un tableau correspondant.
- `object` : les lignes sources deviennent des clés dans le schéma de réponse, donc aucun message utilisateur explicite n'est envoyé.
- `timestamp` : les horodatages sont préservés avec le texte en utilisant un format Toon compact avec décalage de lot plus décalage/longueur par entrée en millisecondes ; le modèle peut fusionner des entrées adjacentes. Les nouvelles tentatives n'ont lieu que lorsque les limites de plage temporelle de sortie ne correspondent pas à l'entrée.
- `agent` : alias pour la sous-commande agent avec options par défaut.
- `none` : mode hérité sans sortie structurée.
## Fonctionnalités
- Interface web (hébergée sur GitHub Pages) et CLI
- Prise en charge de la sortie structurée, activée par défaut dans les deux interfaces
- Prise en charge du cache de prompt, contrôlé avec `-c, --context` (CLI uniquement)
- Fonctionne avec tout fournisseur compatible API OpenAI, par exemple Ollama local
- Regroupement par lots avec dimensionnement automatique dérivé du budget de tokens de contexte
- Vérification optionnelle de modération OpenAI (`--use-moderator`, CLI uniquement) pour éviter de gaspiller des tokens sur des refus probables
- Sortie de processus en streaming
- Limitation de débit en requêtes par minute
- Reprise de progression (CLI uniquement)
- Détection de boucle de répétition pendant le streaming (`--guard-repetition`)
## Mode agent
La sous-commande `agent` effectue plusieurs passes avant de traduire : une passe d'aperçu échantillonne le fichier pour identifier le contenu, la durée, le genre/ton et les noms de personnages, et pour détecter la langue source ; une passe de planification scanne le fichier en fenêtres limitées par tokens, produisant des résumés de lots consolidés en une instruction de traduction affinée ; la passe de traduction utilise ensuite cette instruction enrichie et vérifie la langue cible après le premier lot. Les options incluent `--no-refine`, `--no-fitting` et `--context-summary`.
## Configuration et utilisation
Node.js >= 20 est requis. Après le clonage, exécutez `npm install`, rendez `cli/translator.mjs` exécutable, copiez `.env.example` vers `.env` et ajoutez une clé API. Les invocations typiques incluent `cli/translator.mjs --input subtitles.srt --from Japanese --to English`, une entrée en texte brut via `--plain-text`, et des instructions personnalisées via `--system-instruction`. Le modèle, la température, top_p, les pénalités et le biais de logit peuvent être configurés via les paramètres standard OpenAI.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.