Aller au contenu principal
SubtitleMatrix

Convertir CSV en ASS

Ou collez le texte d'un sous-titre

Ce que cette conversion change

1 élément perdu ou à décider

  • Précision

    la précision du minutage — l'horloge de la sortie est plus grossière, chaque code temporel est donc arrondi au 10 ms le plus proche

Ce rapport de pertes vient de la matrice de capacités de ces deux formats, pas du fichier particulier que vous avez chargé. Un fichier précis peut perdre davantage s'il utilise des fonctionnalités que le format autorise mais que la matrice ne modélise pas.

Cette page convertit un tableau CSV en script ASS. Elle lit la ligne d’en-tête pour trouver le début, la fin et le texte — ou, sans en-tête, les prend dans l’ordre `start`, `end`, `text` — puis écrit une ligne `Dialogue:` par ligne du tableau.

Le tableau note les heures à la milliseconde, ASS au centième de seconde : chaque borne est arrondie aux 10 ms les plus proches, sans réordonnancement et avec au plus 5 ms d’écart. C’est la seule perte de cette direction, et elle vient des capacités, pas de votre fichier.

Un fichier ou tout un lot : la file les traite dans l’ordre et les résultats descendent dans un ZIP. La conversion se fait dans le navigateur, sans envoi.

Exemples

Un fichier CSV typique, converti en ASS

Entrée

start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,"Jumps over, the lazy dog."
00:00:07.000,00:00:09.000,"Two lines here.
And a second one."

Sortie

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,The quick brown fox.
Dialogue: 0,0:00:04.00,0:00:06.25,Default,,0,0,0,,Jumps over, the lazy dog.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Two lines here.\NAnd a second one.

Dans cette sortie, seule la précision est perdue : les millisecondes du tableau deviennent des centièmes. Le reste correspond ligne pour ligne.

La même conversion sur une entrée abîmée

Entrée

id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.

Sortie

[Script Info]
ScriptType: v4.00+

[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there, friend.
Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,,Second line.
Dialogue: 0,0:00:10.00,0:00:10.01,Default,,0,0,0,,End before start.
Dialogue: 0,0:00:12.00,0:00:14.00,Default,,0,0,0,,Unquoted comma in text, right here.

C’est le genre de dégâts des vrais fichiers : fins de ligne mélangées, espaces parasites, champs vides. Comparez avec l’exemple propre ci-dessus pour voir ce que le lecteur pardonne.

Questions fréquentes

Comment les colonnes d’un CSV sont-elles lues pour produire un script ASS ?

Par leur en-tête : `start`, `end` et `text` sous leurs synonymes habituels, sinon dans l’ordre positionnel. Une ligne dont le début ne peut pas être lu est écartée et comptée dans le rapport, pas devinée.

Pourquoi les heures d’un CSV sont-elles arrondies dans un ASS ?

ASS écrit `0:00:04.13`, au centième, là où le CSV écrit `00:00:04.126`. Chaque borne est arrondie aux 10 ms les plus proches ; aucune ligne ne bouge de plus de 5 ms et l’ordre du tableau est conservé.

À quoi ressemble un CSV converti en ASS ?

Chaque ligne CSV devient une ligne `Dialogue:` dans `[Events]`, avec un champ de calque à la place du numéro. Le script commence par `[Script Info]` et contient une table `[V4+ Styles]` minimale.

Comment une cellule CSV de plusieurs lignes sort-elle dans un ASS ?

Les lignes du texte restent groupées dans le même `Dialogue:` et sont séparées par `\N`. Un lecteur les affiche ensemble, comme un seul sous-titre.

Puis-je revenir d’un ASS vers le CSV d’origine ?

Oui, avec une autre liste : ASS vers CSV perd les styles, la position, le karaoké et le contenu propre au format. Cette liste diffère de celle ci-dessus parce que les deux formats ne gardent pas la même chose.

Outils associés