LRC 파일 만드는 법 — 3가지 방법과 파일 형식

LRC 파일은 가사 한 줄 한 줄이 타임스탬프로 시작하는 일반 텍스트 파일이에요. 오디오 파일과 같은 이름으로 같은 폴더에 저장하면, LRC를 지원하는 플레이어가 노래 진행에 맞춰 해당 줄을 하이라이트해요.
만드는 방법은 세 가지예요. 텍스트 편집기에서 타임스탬프를 직접 입력하거나, 브라우저 도구에서 노래에 맞춰 키를 누르거나, 소프트웨어가 가사를 오디오에 자동으로 정렬하게 하는 방법이에요. 어떤 방법을 쓸지는 가지고 있는 재료에 따라 달라져요. 가사가 있고 줄 단위 타이밍이 목표라면 탭 싱크 도구로 노래를 한 번 따라가면 돼요. 단어 단위 타이밍이 필요하거나 가사 텍스트가 없다면 자동 정렬이 현실적인 방법이에요. 저희 테스트에서 자동 정렬의 단어 시작 시점 오차 중앙값은 36~69 ms였어요. 어떤 방법을 쓰든 플레이어가 파일을 찾을 수 있어야 가사가 표시되는데, 이 내용은 마지막 두 섹션에서 다뤄요.
LRC 파일 형식: LRC 파일에 들어가는 내용
가장 간단한 파일은 이렇게 생겼어요.
[ti:Paper Boats]
[ar:Example Artist]
[00:12.00]Paper boats on a morning tide
[00:15.30]Carry what I could not say
[00:19.84]
[00:41.20][01:32.60]Let it go, let it go
파일에는 네 종류의 줄이 있어요.
- 시간 태그. 표준 형태는
[mm:ss.xx]로, 분, 초, 100분의 1초를 뜻해요. 태그는 그 줄이 시작하는 시점을 표시해요. LRC에는 종료 시간이 없어서, 한 줄은 다음 줄이 시작할 때까지 화면에 남아요. - ID 태그. 파일 맨 위에 넣는 선택 사항인 메타데이터로,
[type:value]형태로 써요. 자주 쓰는 태그는ti(제목),ar(아티스트),al(앨범),by(LRC 파일을 만든 사람),offset이에요. 플레이어는 보통 이 태그를 메타데이터로 읽거나 무시하기 때문에 가사 줄로 표시되지 않아요. - 반복되는 줄. 후렴처럼 여러 번 부르는 줄에는 위 예시의 마지막 줄처럼 시간 태그를 여러 개 붙일 수 있어요.
- 빈 줄. 텍스트 없이 시간 태그만 있는 줄은 화면의 가사를 지워요. 간주 구간에 쓰기 좋아요.
실제 파서는 이 정의보다 너그러워요. FFmpeg의 LRC 리더는 소수점 자릿수를 가리지 않고 받아들이기 때문에 세 자리 밀리초도 대개 동작해요. 그래도 LRC를 쓰는 도구들은 기본값으로 두 자리를 쓰고, 이쪽이 안전한 선택이에요.
LRC에는 공식 사양이 없고 정해진 인코딩도 없어요. 영어가 아닌 가사에는 UTF-8이 현실적인 선택이고, Sony Walkman 도움말은 UTF-8을 명시적으로 요구해요.
이미 만들어진 LRC 파일을 구하는 곳
발매된 곡이라면 직접 만들지 않고 완성된 LRC 파일을 내려받을 수 있는 경우가 많아요. LRCLIB는 사용자들이 함께 채워 가는 무료 싱크 가사 라이브러리이고, 데스크톱 클라이언트인 LRCGET은 음악 폴더를 스캔해 각 트랙 옆에 맞는 .lrc 파일을 저장해요.
가사가 맞는지는 정확히 어떤 녹음인지에 달려 있어요. LRCLIB의 API 문서에 따르면 클라이언트가 제목, 아티스트, 재생 시간으로 트랙을 조회할 때 재생 시간이 저장된 기록과 ±2초 이내일 때만 가사가 반환돼요. Apple도 가사 전달 가이드라인에서 레이블에 같은 점을 경고해요. "같은 곡이라도 버전이 다르면 타임 싱크가 달라집니다."
직접 쓰거나 생성한 곡, 커버곡, 라이브 테이크, 리믹스, 인트로가 앨범 버전과 다른 편집본은 파일을 직접 만들어야 해요.
LRC 파일을 만드는 세 가지 방법
| 방법 | 필요한 것 | 드는 품 | 단어 단위 타이밍 |
|---|---|---|---|
| 텍스트 편집기 | 가사와 100분의 1초까지 표시하는 플레이어 | 줄마다 일시정지하고 입력 | 가능하지만 느림 |
| 브라우저의 탭 싱크 도구 | 텍스트로 된 가사 | 노래를 실시간으로 한 번 따라간 뒤 수정 | 도구에 따라 다름 |
| 자동 정렬 | 오디오 파일, 가사는 선택 | 업로드한 뒤 검토 | 가능 |
방법 1: 텍스트 편집기에서 타임스탬프 직접 쓰기
아무 일반 텍스트 편집기에나 가사를 한 줄에 한 소절씩 붙여넣으세요. 1초 미만 단위까지 표시하는 플레이어로 노래를 재생하고, 각 줄이 시작하는 지점에서 일시정지한 뒤 그 줄 앞에 시간을 입력해요. 파일은 .lrc 확장자와 UTF-8 인코딩으로 저장하세요.
추가 도구가 필요 없지만, 줄마다 노래를 멈춰야 해서 세 가지 방법 중 가장 느려요.
방법 2: 브라우저 도구에서 노래에 맞춰 키 누르기
탭 싱크 도구는 노래를 재생하면서 키를 누를 때마다 타임스탬프를 기록해요. Akari's LRC Maker는 브라우저에서 동작하는 오픈 소스 도구예요. 오디오 파일을 페이지에 끌어다 놓고, 화살표 키로 줄을 선택한 다음 Space를 눌러 시간을 찍으면 돼요. lrcgenerator.com도 "Next Line / Next Word" 버튼으로 같은 방식으로 동작하고, 단어별 모드가 있어요.
시작하기 전에 텍스트로 된 가사가 있어야 하고, 타이밍의 정확도는 누르는 사람의 반응 속도에 달려 있어요. 줄 단위 싱크는 노래를 한 번 따라가면 끝나요. 탭으로 단어 단위 싱크를 맞추려면 원래 속도로 재생되는 노래에서 단어마다 키를 한 번씩 눌러야 해요.
방법 3: 가사를 오디오에 자동으로 정렬하기
자동 도구는 녹음을 듣고 타임스탬프를 계산해요. Lacuna LRC 제너레이터는 두 가지 방식으로 동작해요.
- 가사를 붙여넣기(텍스트를 LRC로 변환). 가사가 이미 일반 텍스트로 있다면 이 방식으로 LRC로 변환할 수 있어요. 도구는 텍스트와 줄바꿈을 그대로 유지하고 타이밍만 계산해요. 가사가 있다면 항상 이 방식을 쓰세요.
- 가사 입력란을 비워 두기. 도구가 먼저 보컬을 받아쓴 다음, 받아쓴 텍스트를 정렬해요.
두 방식 모두 정렬하기 전에 보컬을 반주에서 분리하고, 모든 단어에 각각 시작 시간을 붙여요. 업로드할 수 있는 형식은 MP3, WAV, FLAC, M4A, OGG이고, 최대 10 MB, 10분까지예요. 지원하는 언어는 영어, 중국어, 일본어, 한국어, 스페인어, 포르투갈어, 프랑스어, 독일어, 이탈리아어, 러시아어의 열 가지예요.

에디터에서는 한 줄을 0.1초씩 앞당기거나 늦추고, 재생 위치에 스냅하고, 단어 하나를 50 ms씩 옮기고, 줄을 나누거나 합치고, 잘못 들린 단어를 고칠 수 있어요. 내보내기 형식은 LRC, 단어별 LRC, SRT, VTT, 일반 텍스트예요.
이 도구는 로그인이 필요하고, 현재 곡당 50크레딧이 들어요. 보기, 재생, 편집은 모든 플랜에서 쓸 수 있고, 완성된 파일의 다운로드와 복사는 유료 플랜에 포함돼요. 현재 세부 내용은 페이지에서 확인할 수 있어요.
자동 정렬은 얼마나 정확한가
정렬 파이프라인을 고를 때 저희는 8개 언어의 노래 10곡으로 테스트하고, 각 곡에 딸려 있던 기준 타이밍과 타임스탬프를 비교했어요. 타이밍을 채점할 수 있었던 곡은 아홉 곡이에요. 빠른 영어 랩 한 곡은 기준 타이밍이 곡의 일부만 다루고 있었어요.
단어 단위 기준 타이밍이 있는 네 곡은 영어, 포르투갈어, 프랑스어, 독일어 곡이었어요. 받아쓰기 수치는 원래 가사에 있는 단어 중 놓치거나 잘못 들은 것을 단어 단위로 센 값이고, 중국어, 일본어, 한국어는 글자 단위로 셌어요. 10곡 중 4곡은 이런 오류 없이 받아썼어요. 추가로 받아쓴 단어는 세지 않았어요. 녹음에는 원래 가사에 없는 후렴 반복과 애드리브가 들어 있었기 때문이에요.
이 수치에는 한계가 있어요. 테스트한 곡은 모두 AI로 생성한 곡이고, 기준 타이밍 자체도 기계가 만든 것이며, 언어마다 한두 곡뿐이었어요. 상업적으로 발매된, 사람이 부른 녹음으로는 아직 같은 테스트를 하지 않았어요.
가장 큰 오차는 길게 끄는 음이 많은 느린 일본어 발라드에서 나왔어요. 줄 시작 시점 오차 중앙값이 210 ms였고, 이 값은 단어가 아니라 줄 단위로 측정한 거예요. 한 단어가 여러 음에 걸쳐 늘어지는 곳에서 정렬이 어긋나기 쉽고, 에디터에서 확인해야 할 줄도 그런 줄이에요. 200 ms의 오차는 줄 단위 표시에서는 알아채기 어렵지만 단어 단위 하이라이트에서는 쉽게 눈에 띄어요.
표준 LRC와 확장 LRC(단어별)의 차이
확장 LRC는 표준 LRC에서 각 단어 앞에 꺾쇠괄호로 감싼 시간 태그를 하나씩 더한 형식으로, 플레이어가 가사를 단어 단위로 하이라이트할 수 있게 해요.
[00:12.00]<00:12.00>Paper <00:12.41>boats <00:12.90>on <00:13.05>a <00:13.20>morning <00:13.78>tide <00:14.60>
이 변형에도 공식 사양이 없고, 공개된 예시들은 띄어쓰기 같은 세부 사항에서 서로 달라요. 위의 줄은 Lacuna의 내보내기 기능이 쓰는 형태예요.
플레이어 지원은 표준 LRC보다 좁아요. kid3 핸드북은 MP3 태그에 임베드하는 싱크 가사를 설명하면서 "대부분의 플레이어는 줄이나 문장 단위까지만 지원한다"고 적고 있고, LRC 파일에도 같은 말이 적용돼요. 저희가 확인한 플레이어 중 Symfonium에는 노래방 모드가 있고 Rockbox는 단어 태그를 파싱하지만, foobar2000의 OpenLyrics에서 단어별 표시는 아직 처리되지 않은 기능 요청이에요. 쓰는 플레이어가 단어 태그를 어떻게 처리하는지 확실하지 않다면 표준 파일도 함께 내보내세요.
어디에 쓸지에 따라 형식이 정해져요.
| 원하는 것 | 내보낼 형식 |
|---|---|
| 음악 플레이어나 미디어 서버에서 줄 단위 가사 | 표준 LRC |
| 지원하는 플레이어에서 단어 단위 하이라이트 | 확장(단어별) LRC |
| 영상 편집 프로그램이나 YouTube의 자막 | SRT |
| 웹 영상 또는 오디오 플레이어의 자막 | VTT |
음악 플레이어에서 LRC 파일 여는 법
LRC 파일은 일반 텍스트라서 아무 텍스트 편집기로나 열어 읽거나 고칠 수 있어요. 가사가 음악에 맞춰 스크롤되는 것을 보려면 LRC를 지원하는 플레이어에서 노래를 재생하세요. 그런 플레이어 거의 대부분에서 .lrc 파일은 오디오와 같은 폴더에 있어야 하고, 확장자를 뺀 이름이 같아야 해요. Paper Boats.mp3에는 Paper Boats.lrc가 필요해요.
| 플레이어 | 같은 이름의 .lrc 파일 읽기 | 참고 |
|---|---|---|
| Plex | 예 | 태그에 임베드된 가사는 지원하지 않음 |
| Jellyfin | 예 | .elrc와 .txt도 받아들임 |
| Navidrome | 예 | 임베드된 가사도 읽음 |
| MusicBee, AIMP | 예 | MusicBee는 기본적으로 가사를 오디오 파일 안에 저장하고, 가사를 외부 파일로 설정하면 같은 이름의 .lrc를 사용함. AIMP는 가사를 표시하는 스킨이 필요함 |
| foobar2000 | 컴포넌트 설치와 설정 변경 필요 | OpenLyrics는 기본적으로 foobar2000의 설정 폴더에서 Artist - Title.lrc를 찾음. 로컬 파일 위치를 "Same directory as the track"으로, 파일 이름 형식을 트랙의 파일 이름으로 설정해야 함 |
| Kodi | 애드온 필요 | CU LRC Lyrics |
| Poweramp, Musicolet, Symfonium | 예 | 세 가지 모두 임베드된 가사도 읽음 |
| Retro Music | 규칙이 다름 | 자체 가사 폴더에 song - artist.lrc가 있어야 함 |
| Sony Walkman, FiiO, Rockbox | 예 | Sony는 UTF-8과 512 KB 이하의 파일을 요구함. Rockbox에서는 UTF-8 파일의 이름이 .lrc8이거나 Encoding 설정이 일치해야 함 |
| VLC 3.x | 아니요 | .lrc는 VLC가 불러오는 자막 형식에 포함되지 않음 |
| Apple Music | 아니요 | 문서에 나와 있는 유일한 방법은 Custom Lyrics에 텍스트를 입력하거나 붙여넣는 것 |
| Spotify | 아니요 | 싱크 가사는 Musixmatch를 통해 공급됨 |
스트리밍 서비스는 청취자에게서 LRC를 받지 않아요. Apple은 유통사로부터 타임 싱크 가사를 XML 기반 타임드 텍스트 형식인 TTML 파일로 받고, Spotify의 싱크 가사는 Musixmatch가 제공하며 인증된 아티스트는 그곳에서 자기 곡의 싱크를 직접 맞출 수 있어요.
MP3에 LRC 파일 넣는 법(가사 임베드)
MP3에 LRC 파일을 넣는 방법은 두 가지예요. 간단한 쪽은 앞에서 설명한 별도 파일로, 같은 폴더에 같은 이름으로 두는 방식이에요. 다른 하나는 가사를 MP3의 태그에 임베드하는 방식이에요. 파일 이름을 바꿨다가 가사가 사라지는 위험은 없지만, 지원 상황이 제각각이에요.
MP3 파일은 메타데이터를 ID3 태그에 저장하고, ID3에는 프레임이라고 부르는 가사 필드가 두 가지 정의되어 있어요. USLT는 싱크되지 않은 일반 텍스트를, SYLT는 타임스탬프가 있는 텍스트를 담아요. FLAC 파일은 관례적으로 LYRICS 태그에 LRC 텍스트를 넣어요. Mp3tag는 UNSYNCEDLYRICS 필드를 USLT에 쓰고 SYLT는 지원하지 않는데, 개발자가 밝힌 바에 따르면 이는 의도한 결정이에요.
따라서 가사 태그에 LRC 텍스트를 붙여넣는 방법은 태그 텍스트를 LRC로 파싱하는 플레이어에서만 통해요. Poweramp는 모든 가사 태그에 대해 이렇게 처리하고, Symfonium은 LYRICS 태그를 읽으며, foobar2000은 OpenLyrics 같은 가사 컴포넌트를 통해 처리해요. Plex는 임베드된 가사를 아예 읽지 않아요. 실제 SYLT 프레임이 필요하다면 kid3로 LRC 파일을 바로 가져올 수 있어요. 여러 기기에서의 호환성이 목표라면 오디오 옆에 별도의 .lrc 파일을 두는 편이 더 안전해요.
가사가 안 나오거나, 싱크가 밀리거나, 글자가 깨질 때 해결법
가사가 표시되지 않아요. 확장자를 포함해 파일 이름을 한 글자씩 확인하세요. 텍스트 편집기가 파일을 song.lrc.txt로 저장하고도 그렇게 표시하지 않을 수 있어요. 그다음 위의 표에서 플레이어에 플러그인이나 다른 폴더가 필요한지 확인하세요.
모든 줄이 같은 간격만큼 빠르거나 늦어요. 파일이 녹음의 다른 버전에 맞춰 만들어졌을 가능성이 커요. offset 태그가 이럴 때 쓰는 거예요. Wikipedia의 정의와 FFmpeg, OpenLyrics 파서에서는 양수 값이 가사를 더 일찍 표시해요. 모든 플레이어가 이 규칙을 따른다고 문서화되어 있지는 않으므로, 에디터에서 타임스탬프 자체를 옮기는 편이 더 확실해요.
악센트가 붙은 글자나 라틴 문자가 아닌 글자가 깨져요. 파일을 UTF-8로 다시 저장하세요. 표에서 언급한 Rockbox는 예외예요.
꺾쇠괄호 태그가 텍스트로 보여요. 플레이어가 확장 LRC를 이해하지 못하는 거예요. 표준 형식으로 내보내세요.
한 구간만 어긋나고 나머지는 괜찮아요. 길게 끄는 음이나 가사가 빽빽한 구간을 자동 정렬한 뒤에 흔히 생기는 현상이에요. 곡 전체를 다시 돌리지 말고 해당 줄만 귀로 들으며 고치세요.
가사가 텍스트로 있다면 오디오와 함께 Lacuna LRC 제너레이터에 붙여넣고, 내보내기 전에 결과를 노래와 대조해 확인하세요. 쓸 곳이 플레이어가 아니라 영상이라면 같은 타이밍을 가사 영상 메이커로 그대로 가져갈 수 있어요.