본문으로 바로 가기
SubtitleMatrix

LRC를 SMI로 변환

형식 변환가사 (LRC)
또는 자막 텍스트를 붙여넣으세요

옵션

원본에 종료 시간이 없을 때(일반 텍스트, LRC) 사용합니다. 결과물의 시간축은 변환되는 것이 아니라 여기서 새로 만들어지므로, 이 숫자가 그대로 결과가 됩니다.

이 변환에서 달라지는 것

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

  • 타이밍

    자막 블록 종료 시간 — 원본이 기록하지 않아 결과물의 종료 시간은 변환된 것이 아니라 새로 만들어집니다

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

LRC를 SAMI(SMI)로 바꾸는 페이지입니다. SAMI는 시작 시각만 적고 다음 SYNC가 화면을 교체하므로, LRC의 줄 시작을 SYNC로 옮기면 시간 구조가 자연스럽게 맞습니다. 다만 각 자막이 끝나는 순간 화면을 비우는 `<P>&nbsp;` 블록을 따로 붙여야 합니다.

LRC는 `[00:04.12]`, SAMI는 `Start=4120`을 씁니다. LRC의 100분의 1초 값은 밀리초로 그대로 옮겨지고 반올림이 없습니다. 마지막 줄 뒤에는 다음 SYNC가 없으므로 기본 2초 뒤에 화면 비우기 블록을 둡니다.

같은 타임스탬프의 LRC 줄은 한 `<P>` 안에서 `<br>`로 이어집니다. 타임스탬프만 있는 줄은 텍스트가 빈 블록이 됩니다. `[ti:]`, `[ar:]`, `[length:]`, `[offset:+250]`은 읽히지만 SAMI의 cue 모델에 들어가지 않고 offset도 적용하지 않습니다.

파일은 업로드되지 않고 브라우저 안에서 처리됩니다. 여러 파일을 한 번에 넣으면 순서대로 변환되어 ZIP 하나로 받습니다. ZIP은 파일별 하위 폴더 없이 풀립니다.

예시

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

입력

[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.

결과물

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=12000>
<P>First line of the song.
<SYNC Start=15300>
<P>&nbsp;
<SYNC Start=15300>
<P>Second line.<br>Second line, translated.
<SYNC Start=18000>
<P>&nbsp;
<SYNC Start=18000>
<P>
<SYNC Start=21500>
<P>&nbsp;
<SYNC Start=21500>
<P>Final line.
<SYNC Start=23500>
<P>&nbsp;
</BODY>
</SAMI>

이 출력에서 버려지는 것은 타이밍입니다. 각 줄의 시작과 글자는 왼쪽과 일치하고, 끝은 다음 줄에서 생성됩니다.

지저분한 LRC를 SMI로 바꿀 때

입력

[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]

결과물

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=3000>
<P>Out of order.
<SYNC Start=5500>
<P>&nbsp;
<SYNC Start=5500>
<P>Leading zero omitted, one decimal.
<SYNC Start=7000>
<P>&nbsp;
<SYNC Start=7000>
<P>Second with no centiseconds.<br>Repeated chorus line.
<SYNC Start=9000>
<P>&nbsp;
<SYNC Start=9000>
<P>Repeated chorus line.
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=12000>
<P>
<SYNC Start=14000>
<P>&nbsp;
</BODY>
</SAMI>

실제 파일에 흔한 손상입니다. BOM, 윈도우 줄바꿈, 한 자리 소수, 순서가 뒤섞인 줄이 있어도 읽을 수 있는 가사는 모두 SYNC가 됩니다.

자주 묻는 질문

LRC를 SMI로 바꾸면 각 줄의 끝은 어떻게 표현되나요?

다음 SYNC의 시작이 앞 자막을 끝내고, 그 직전에 `<P>&nbsp;` 화면 비우기 블록이 들어갑니다. 마지막 줄은 다음 SYNC가 없어 기본 2초 뒤에 비우기 블록이 붙습니다.

LRC를 SMI로 바꾸면 결과 파일은 어떤 모습인가요?

`<SAMI>`와 `<BODY>` 안에 `<SYNC Start=4120>`과 `<P>` 블록이 이어집니다. 자막마다 시작 SYNC와 화면 비우기 블록이 한 쌍을 이루고, 마지막에 `</BODY></SAMI>`가 옵니다.

같은 타임스탬프의 LRC 줄은 SMI에서 어떻게 표시되나요?

한 `<P>` 안에서 `<br>`로 이어집니다. 같은 시각의 두 줄이 한 자막으로 유지되고, 플레이어는 두 줄을 함께 표시합니다.

LRC의 빈 타임스탬프는 SMI에서 어떻게 되나요?

텍스트가 빈 `<P>` 블록이 됩니다. 시작 SYNC는 있지만 표시할 글자가 없고, 뒤이어 화면 비우기 블록이 붙습니다. 빈 자막을 없애려면 변환 뒤 QC 도구로 걸러야 합니다.

LRC의 offset 머리말은 SMI 변환에 적용되나요?

적용되지 않습니다. offset은 읽어서 보관하지만 시작 시각을 밀지 않습니다. SAMI에는 머리말 메타데이터를 담는 표준 자리가 없어 출력에도 남지 않습니다.

SMI를 다시 LRC로 바꾸면 무엇이 사라지나요?

SMI의 끝 시각, 스타일, 화면 위치, 정밀도, 형식 고유 구성이 LRC에 자리가 없어 사라집니다. 지금 방향인 LRC→SMI에서는 타이밍만 잃습니다.

LRC를 SMI로 저장하면 인코딩은 무엇인가요?

출력은 UTF-8, 유닉스 줄바꿈, BOM 없음입니다. 원본 LRC가 UTF-16이거나 윈도우 단일 바이트 인코딩이면 읽는 단계에서 해독되고, 결과 패널이 그 사실을 알려 줍니다.

관련 도구