본문으로 바로 가기
SubtitleMatrix

ASS를 SMI로 변환

형식 변환Advanced SubStation Alpha (ASS)
또는 자막 텍스트를 붙여넣으세요

이 변환에서 달라지는 것

3가지가 버려지거나 결정이 필요합니다

  • 스타일

    굵게와 기울임을 뺀 모든 스타일(색, 외곽선, 그림자, 여백)

  • 가라오케

    가라오케 타이밍(음절 단위 강조)

  • 형식 고유 내용

    원본 형식이 자막 블록 밖에 두는 내용(자막 블록이 아닌 구획, 머리말 텍스트, 자막 블록별 설정, 주석 처리된 이벤트) — 대상 형식에는 들어갈 자리가 없습니다

이 목록은 불러온 특정 파일이 아니라 두 형식의 기능 행렬에서 나옵니다. 어떤 파일은 형식이 허용하지만 행렬이 모델링하지 않는 기능을 쓰고 있다면 더 많이 잃을 수 있습니다.

이 페이지는 ASS 스크립트를 SMI(SAMI)로 바꿉니다. SMI는 <SYNC Start=밀리초>와 <P> 텍스트로 화면을 갱신하는 HTML 계열 자막 형식입니다. 시간축과 글자는 유지되고, 인라인 강조는 HTML 태그로 남습니다.

ASS의 0:00:08.50은 Start=8500이 됩니다. {\i1}·{\b1}·{\u1}·색은 <i>·<b>·<u>·<font color> 태그가 되고, 두 줄짜리 큐는 <br>로 이어집니다. 각 큐의 SYNC 뒤에는 끝 시각에 화면을 비우는 <SYNC Start=끝><P>&nbsp; 블록이 따라붙습니다.

사라지는 것은 스타일 표(글꼴·크기·외곽선·그림자·여백), 카라오케 타이밍, cue 모델 밖의 구성([Script Info], [Fonts]·[Graphics], Comment: 줄)입니다. 위치는 이 방향의 손실 목록에 없습니다. SMI는 SYNC와 P, 그리고 페이지의 CSS로 배치를 다루기 때문입니다.

여러 파일을 한 번에 넣어도 순서대로 처리되고, 중간에 취소할 수 있으며 결과는 ZIP 하나입니다. 변환은 브라우저 안에서 실행됩니다.

예시

전형적인 ASS 파일을 SMI로 변환

입력

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

결과물

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P><i>Italic</i> and <b>bold</b> text.
<SYNC Start=8500>
<P>&nbsp;
<SYNC Start=9000>
<P>Positioned
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P><c>ka</c><c>ra</c><c>o</c><c>ke</c>
<SYNC Start=16000>
<P>&nbsp;
<SYNC Start=17000>
<P>Line one<br>Line two
<SYNC Start=20000>
<P>&nbsp;
<SYNC Start=21000>
<P>Top left
<SYNC Start=24000>
<P>&nbsp;
</BODY>
</SAMI>

이 출력에서 빠진 것: 스타일, 카라오케, 형식 고유 구성. 나머지는 줄 단위로 일치합니다.

같은 변환을 지저분한 입력으로

입력

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

결과물

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello, world
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P>{\fad(300,300)}Unmodelled override
<SYNC Start=8000>
<P>&nbsp;
<SYNC Start=9000>
<P>Both, wrong order
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P>One decimal centisecond
<SYNC Start=16500>
<P>&nbsp;
<SYNC Start=17000>
<P>Soft<br>break
<SYNC Start=20000>
<P>&nbsp;
</BODY>
</SAMI>

실제 파일에 흔한 손상입니다. 줄 바꿈이 섞이고, 공백이 남고, 필드가 비어 있습니다. 위의 깔끔한 예와 비교해 해석기가 무엇을 용서하는지 보세요.

자주 묻는 질문

ASS를 SMI로 바꾸면 어떤 스타일이 남나요?

본문에 붙은 강조가 <b>·<i>·<u>·<font color> 태그로 남습니다. 반면 ASS의 스타일 표(글꼴·크기·외곽선·그림자·여백)는 사라지고, 자막을 넣는 페이지의 CSS가 모양을 정합니다.

ASS의 카라오케 타이밍은 SMI에서 어떻게 되나요?

타이밍은 사라지고 음절 글자만 남습니다. \k·\kf·\ko가 각 음절의 점등 시점을 정했지만 SMI에는 줄 안의 시점을 기록할 자리가 없어, 음절은 일반 텍스트로 들어갑니다.

ASS의 위치 지정은 SMI로 넘어가나요?

이 방향의 손실 목록에는 위치가 없습니다. SMI는 SYNC 블록과 P 요소, 그리고 그것을 감싸는 페이지의 CSS로 배치를 다루므로, ASS의 좌표가 그대로 복사되지는 않지만 위치라는 개념 자체가 사라지지는 않습니다.

SMI 출력은 어떤 모양인가요?

큐마다 <SYNC Start=밀리초> 태그와 그 아래 <P>텍스트가 오고, SYNC가 화면을 교체하므로 큐가 끝나는 시점에 <SYNC Start=끝><P>&nbsp; 블록이 와서 화면을 비웁니다. 큐 번호나 시간 코드 줄은 없습니다.

ASS의 시간은 SMI에서 정확한가요?

네, 밀리초까지 정확합니다. ASS의 0:00:08.50은 Start=8500이 되고, 2.9초짜리 큐는 그대로 2.9초입니다. 두 형식 사이에 반올림이나 이동은 없습니다.

두 줄짜리 ASS 큐는 SMI에서 어떻게 나오나요?

두 줄 사이에 <br>이 들어갑니다. SAMI가 강제 줄 바꿈을 적는 방식이며, 두 줄은 여전히 하나의 자막으로 묶여 함께 표시됩니다.

[Script Info]와 내장 글꼴은 SMI에 들어가나요?

아니요. Dialogue: 줄만 자막이 됩니다. [Script Info](제목 포함), 스타일 표, Comment: 줄, [Fonts]·[Graphics]는 모두 사라집니다. 손으로 스타일을 적은 ASS라면 이 손실이 가장 크게 보입니다.

SMI를 다시 ASS로 바꿀 수 있나요?

가능하지만 SMI→ASS는 정밀도와 cue 모델 밖 구성을 보고합니다. SMI의 밀리초를 ASS의 1/100초로 반올림하고, 이 페이지에서 버린 스타일 표와 카라오케는 기록이 없어 돌아오지 않습니다.

ASS 큐의 순서는 SMI에서 유지되나요?

네. 시작 시간이 빠른 순으로 정렬되고, 원본이 순서를 벗어나 있었다면 출력에서 바로잡힙니다. 내용이 아니라 구조의 변경이며 의도된 동작입니다.

관련 도구