同期歌詞

提供: きまぐれ手記 Kimagurenote
LRCファイルから転送)
移動先: 案内検索

パソコンスマートフォン音楽再生専用機などで、再生中の音楽に合わせて歌詞を表示する機能を提供する音楽再生ソフトウェア(アプリ)、およびそのために歌詞データに時間情報を持たせたファイルについて。

LRCファイル

曲の進行に合わせて歌詞の一部分を抜粋または強調表示できるように、歌詞の行単位で時間情報を埋め込んだテキストファイル

本稿では LRC形式 のファイルのみを扱うが、他にも .kar(MIDIカラオケ)や .srt(字幕)などが使われることがある。

LRC形式のファイルは、歌詞のテキストファイルで、行頭に時間情報が付加されている。例↓

[00:20.30]ひとつの旅が終わって
[00:23.50]僕等は別れるけど
[00:26.75]夢 追い続けていよう
[00:29.80]もう一度 会うため
 ~~ ~~ ~~
 分 秒 1/100秒  ※1/100秒の区切り文字には、: を使う場合と . を使う場合がある。

このように、音楽の再生にあわせて歌詞の該当行のみを表示(または該当行のみを強調表示)できるようにした歌詞データを同期歌詞と呼ぶ。

なお、1/100秒(10ms)単位で指定できるようになっているが、そこまでの精度を見分ける目が無いので(そもそも歌詞同期のために重たい音楽プレイヤーを作られても困るが)、筆者は通常は1/10秒(100ms)、特に早い楽曲では1/20秒(50ms)単位でタグ付けしている。

ID3タグへの埋め込み

MP3ファイルには曲名やアーティスト名などの情報を書き込むためのID3タグ英語の公式情報)を埋め込むことができるが、このうち ID3v2 には歌詞を埋め込むことができる(文字コードはUTF-16、ただしバージョン4からはUTF-8にも対応したらしい)。

ただしID3v2タグの埋め込み・編集に対応するソフト自体が少なく、非同期歌詞(TEXT/USLT)同期歌詞(SYLT)形式に対応するソフトはさらに少ないのが難か。

手頃なところでは iTunesMusicoletMi Music が、ID3タグへの歌詞(TEXT/USLT)埋め込みに対応している。

時間タグの互換性

前述のとおり、1/100秒の区切り文字には、: を使う場合と . を使う場合がある。

日本では [mm:ss:xx] が主流だった(と思う)が、海外では [mm:ss.xx] が主流なのかもしれない。海外製のプレーヤーに後者しか認識しないものがあるので、後者(1/100秒の区切りは .)で作っておく方が後々汎用性が高そう。

日本製の古いアプリだと前者(区切り :)しか認識しないものがあるかもしれないが、本稿に掲載したアプリは両方とも対応していた。また、近頃の SONY Walkmanはどちらでも動作するようだ。

#プチリリメーカー for PC などで作ったLRCファイルは [mm:ss:xx] 形式になるので、作成(タグ付け)後、正規表現に対応しているテキストエディタなどを使って書き換えてやると良いだろう。

しかし今まで作った歌詞ファイルがたくさんあると頭が痛い(^^;。 筆者もずっと : で作っていたが、MusicoletMi Music が . にしか対応していなかったので、手持ちのLRCファイルのタグを全て書き換えるためのお手軽perlスクリプトを書き、手持ちのLRCファイルを全て書き換えて対応した。

ここに置いておくので、使いたい人は自己責任でどうぞ。

無保証なので、データが壊れたりしても知りません:)。必ずバックアップを取ってから使いましょう。
#!/usr/bin/perl

# LRC(同期歌詞)ファイルの時刻書式を書き換える
# (c) 2021 Kimagurenote
# see: https://kimagurenote.net/kn/%E5%90%8C%E6%9C%9F%E6%AD%8C%E8%A9%9E
#
# Xiaomi (MIUI) Mi Music の同期歌詞表示に対応するために、
# 時間タグを [mm:ss:xx] → [mm:ss.xx] に書き換える。
# タイムスタンプは維持する。元のファイルは .lrc.bak に改名する。
# すでに .lrc.bak ファイルが存在する場合は上書きされる。
# 名前変更に失敗した場合はバックアップが作成されず、元ファイルが破棄される。
# 外部ライブラリを使わず、BOMは UTF-8 (EF BB BF) だけ無理やり対応した。
#
# Usage:
#	lrc_time.pl filename(s)

use strict;
use warnings;

my($filename);
foreach $filename (@ARGV) {
	next	unless($filename =~ /.+\.lrc/i);
	my(@lrcstat) = stat $filename;
	next	unless(open(FILE, "< $filename"));
	my(@lrcfile);
	my($bom);
	my($c) = 0;
	while(<FILE>) {
		if($_ =~ /^(\xef\xbb\xbf)/) {
			$bom = $1;
			$_ = $';
		}
		if($_ =~ /^\[(\d\d\:\d\d)\:(\d\d)\](.*)$/) {
			push(@lrcfile, "[$1.$2]$3");
			$c++;
		} else {
			push(@lrcfile, $_);
		}
	}
	close(FILE);
	next	unless($c);

	rename "$filename", "$filename.bak";
	next	unless(open(FILE, "> $filename"));
	if($bom) {
		print FILE "$bom";
	}
	my($l);
	foreach $l (@lrcfile) {
		print FILE "$l\n";
	}
	close(FILE);
	utime $lrcstat[8], $lrcstat[9], $filename;
	print STDERR "$filename processed, $c line(s) changed.\n";
}

print STDERR "complete.\n";
exit;

LRCファイルの作成

テキストエディタなどを使って手書き

文字コードUTF-8に対応した任意のテキストエディタWindowsに付いてくる「メモ帳」でも可)で歌詞を打ち込み、各行の先頭に時間情報を追加する。正確な同期は難しいが、特殊なソフトを使わなくても作れる。例 → [1][2]

文字コードUTF-8 で保存することを推奨(ただし日本国内向けの古いソフトでは Shift-JIS にしか対応しないことがある)

プチリリメーカー for PC

プチリリメーカー for PC での作成例

前項のテキストエディタ等での手書きでは、時間情報の追加が難しいので、時間情報の追加に特化したエディタがいくつか提供されている。

これは後述の#プチリリ運営会社に歌詞データを投稿するためのソフト(デスクトップアプリ)だが、自ら作成した歌詞データはLRC形式(文字コードはUTF-8)で保存できる。

筆者が試した中では、時間タグの編集がしやすいので、よく使わせてもらっている(先ずテキストエディタで歌詞を打ち込み、プチリリメーカーは時間タグの付加にのみ使用)。

なお、音楽再生用に QuickTime for Windows が必須だが、Appleのサポートが打ち切られているので、セキュリティ問題などが発生するおそれがある。

MediaGo

SONY社製WALKMANを使うためのWindows用ソフトウェア。歌詞(同期テキスト)の作成にも対応している。

他のフリーソフト等

lrcファイル作成支援ソフトK5 Lyrics Editor(配布終了?)などの公開されているフリーソフトを使う。Windows用が多いが、Android用にも Lyrics Editor for LRC などがある。

MiniLyrics (Windows)

Winamp + MiniLyrics で Windowsデスクトップ上に歌詞表示している例 星空コネクション (starry mix)/Daisy×Daisy

Windows用の歌詞表示用プラグイン。楽曲ファイルと同じディレクトリに、同じファイル名(拡張子のみ異なる)の歌詞ファイルを置いておくと、再生と同期して表示してくれる。

また、ID3タグに埋め込んだ同期歌詞にも対応している。

音楽プレーヤーと併用するプラグインとして動作し、iTunes, Windows Media Player, Winamp, VLC, Media Player Class (MPC-HC) など多くのプレーヤーに対応している。

詳細な設定ができ、表示行数やフォントはもちろん、タスクバーアイコンの消去、背景の透過、マウス操作の透過なども備えており、右図のようにデスクトップやウィンドウに被せて表示することもできる。

表示できる歌詞データ形式は .lrc(同期歌詞)と .srt(字幕)とテキスト(時間タグ無し)。文字コードは基本 UTF-8 だが、Shift-JIS も表示できる。

歌詞データが無い場合は勝手にダウンロードして表示する機能も備えているが、無効にすることもできる(筆者は無効にしているので、ダウンロード対応楽曲の多少は不明)。

Musicolet (Android)

アートワークをタップすると歌詞が表示され、.LRCファイルは同期表示される

Google playで配信されている、フリーの音楽プレーヤー。完全無料で使える(広告も出ない)。

2017年11月よりLRCファイルに仮対応しており、同期表示もできるようになっている。

ID3タグに歌詞が埋め込まれている、または楽曲ファイルと同名のLRCファイルが同じディレクトリにあると読み込まれて、アートワークをタップすると歌詞が表示され、同期歌詞は同期表示される。

ただし、時刻情報タグが [mm:ss:xx] 形式だと認識されない(タグごと表示されてしまう)。[mm:ss.xx] 形式にするとタグが認識されて同期表示されるようになる。

また、規定ではID3タグの埋込歌詞が優先されるが、TEXT/USLT形式で埋め込まれている歌詞のタグは認識されないので、LRCファイルを優先する設定にしよう。 【Musicoletを起動 > 右上の > 設定 > 楽曲ライブラリとタグ > 優先して表示する歌詞 > .LRCファイル】

なお、MusicoletでID3タグを編集でき、非同期歌詞を埋め込むこともできる。 【曲 > 右側の > 楽曲情報 > タグを編集する > 埋め込み歌詞を編集する】

ASUS Music (Android)

右上の赤〇印のアイコンタップで歌詞表示を切り替えられる Lucky Monster/Kicco (Precious Gift)

ASUSTeK Computer社Androidスマートフォンタブレットに標準搭載されている音楽プレーヤーアプリ。現在、標準で同期歌詞の表示に対応している数少ないアプリ。

同社の「ZenUI」の一部として提供されており、以前は Google play でも提供されていたが、現在は非公開になっているよう。つまり今はASUS製端末専用なので、Zenfone や Zenpad を使っている人は試してみてほしい。

初期状態では歌詞は表示されないが、曲再生画面の右上の「♪」アイコン(右図)をタップして、歌詞表示を切り替えることができる。歌詞はアートワークの上に表示され、同期表示に対応している。

#LRCファイルを曲データと同じ場所・同じファイル名(拡張子は.lrc)で置いておけば自動認識される。ID3タグに埋め込んだ歌詞は表示のみで、残念ながら同期表示には対応していないよう(時間タグも表示されてしまう)。

願わくば、埋込歌詞にも対応するとともに、アートワークがもっと大きく表示されて、歌詞も大きく表示できると良かったと思う。また、同期歌詞表示のタイミング調整ができず若干ずれて表示される、空行(時間タグのみの行)の表示ができないなど、少々詰めが甘い点も見られる。

Android用の音楽プレーヤーは全般にプレイリストの編集がしづらく、使いにくい物が多い中で、ASUS Music はプレイリストの編集が比較的しやすいよう工夫されている。ただし画面遷移が少々独特というか、戻るボタンで前画面に戻らずホーム画面に戻ってしまうことがあるなど、少々癖がある。

Mi Music (Android)

Mi Music での歌詞表示

Xiaomiシャオミ社製スマートフォンに標準搭載されている音楽プレーヤー「Mi Music」は、LRCファイルの表示に対応している。

音楽再生中に、アートワークを右にスワイプすると歌詞表示に切り替わる。

ID3タグに埋め込まれた歌詞と、曲と同じ場所に置いた同じファイル名.lrc ファイルの歌詞表示に対応しているようだ。歌詞が無い曲には、テキストデータを貼り付けることもできる。

上下にスクロールすると左側に時間情報が表示される(右図)。

ただし、LRCファイルの時刻情報タグが [mm:ss:xx] 形式だと誤認識される[mm:ss.xx] 形式にすると同期表示されるようになる。

また、同期タイミングの調整はできず、ずれて表示されがち。タイミング調整ができるようになると良いのだが。

「Mi Music」は、他にもプレイリストはもちろん、再生中の曲から一部を切り出して着信メロディを作る機能もあって多機能だが、Xiaomiなので広告が出る。設定で広告OFFにできるが、完全に出なくなるかは不明(筆者の手元では今のところ出ていない)。

また、「Mi Music」自体はダークモードに対応しているのだが、なぜかシステムのダークモード設定を無視するので、個別に設定する必要がある。

Google play で配信されているが、他社製スマートフォンへはインストールできない。

Onkyo HF Player (Android)

Onkyo HF Player は埋込歌詞の表示にも対応しているが、同期表示には対応しておらず、時間タグも表示されてしまう。#LRCファイルは全く表示できない。

音質にこだわりのある音楽プレーヤー。初回起動時にヘッドホンの選択画面が出てくるが、ヘッドホンによりイコライザのプリセットが変わるのだろうか。

#プチリリ同様の同期歌詞表示に対応している。表示対応はプチリリに登録された歌詞と、ID3v2タグに埋め込まれた歌詞データの表示に対応しているが、埋込歌詞は同期表示に未対応(タグも表示されてしまう)で、#LRCファイルには全く対応していないのが残念。 また、歌詞データの選択不可(不適切な歌詞が選択されてしまった時に変更できない)、同期タイミング調整不可など、歌詞表示機能に関してはプチリリの劣化コピーになっている。

音楽プレーヤーとしてはプチリリよりも多機能だが、ファイル選択画面が表示されてディレクトリ(フォルダ)やファイルの管理感覚で選曲するUIなど、少々癖がある。

Walkman Lyrics Extension (Android)

Walkman Lyrics Extension の表示例。同期表示には対応しないが、#LRCファイルにも対応しており、タグを抜いて表示してくれる。自動スクロール機能を使えば、曲の進行に応じてある程度追従表示する

SONY Xperia に搭載されているMusicアプリや、他の著名音楽再生アプリに対応する、歌詞表示アプリ。

Walkman という固有名詞が付いているので紛らわしいが、SONY以外の音楽アプリ(Powerampなど)にも対応している。

音楽再生アプリの通知を参照して再生中の曲を自動認識し、歌詞を表示する。歌詞データはローカルの#LRCファイルにも対応しているし、外部データベースにも対応しているよう。

音楽アプリと直接連携しているわけではないので、再生位置の取得まではできず、同期機能は無いが、代わりに自動スクロール機能が付いている。ある程度画面が広ければ、自動スクロールでも概ね追尾できそう。なかなかうまく出来ている。

完全な同期歌詞を期待すると期待外れになるが、ちょっと歌詞を見たい程度の用途には良い。好きな音楽プレーヤー(一部のみだが)と組み合わせて使えるのも良い。

WALKMAN

SONYウォークマン(音楽再生専用機)の一部機種でも同期表示に対応している。 →ウォークマン | 同期テキスト(lrc形式ファイル)の作成・転送・表示方法

プチリリ

Onkyo HF Player でのプチリリ歌詞表示例。見た目は良いが、同期タイミングの設定や、出来の悪い歌詞データが選択された場合などの変更ができず、非同期歌詞が選択されてしまうこともしばしば。

運営会社のサーバに登録された歌詞データを曲に合わせて表示するアプリが、Android, iOS, Windows 向けに提供されている。音楽プレーヤーとしては基本的な機能を備え、歌詞表示はタイミング調整などの機能も備えている。ただし運営会社のサーバに登録された歌詞データの表示専用で、残念ながら手元に置いたLRCファイルや埋込歌詞を表示することはできない

アプリの利用は無料(アプリ内課金も無し)で、広告が表示されるが、さほど目障りではない。しかし最近のバージョンでは位置情報など必要性のない権限を多く要求してくる(実際に走査してくる)ので薄気味悪さもある。

国内メジャーレーベルからCDで発売されるような楽曲は多く登録されており、邦楽ならば多くの歌詞が表示されると思う。歌詞データを自分で作る手間要らずで、運営会社が作成した同期歌詞データは比較的精度が良いので、邦楽のヒットチャートに載るような楽曲のみを聞いている人には良いサービスだと思う。

また、歌詞データは運営会社が作成したもののほか、一般利用者が作成・投稿することもできるようになっているので、TVアニメ放映作品のキャラソンのようなマイナーな曲もよく登録されている。

しかし、普段聞いている曲の半分くらいがゲーム音楽の筆者にとっては、表示されない曲が多くて寂しいことになる。

自作の楽曲は登録不可。さらにインディーズレーベルやゲーム関係などはあまり登録されていない。これは、JASRAC等に管理委託していない楽曲は投稿しても運営会社に削除されるため。権利関係が明確になっている楽曲であっても復活掲載されることはまず無く、運営会社自らで権利処理することには消極的のようだ。

例えば2009年より「ファルコム音楽フリー宣言」を表明している日本ファルコムの楽曲も、コメント欄などにその旨を表記していても消される。こうした運営姿勢は、JASRAC等への委託をしない音楽出版社(者)への嫌がらせにも見えてしまう。

iOS・iPadOS

iPhone(iOS)の音楽アプリでの歌詞表示例

iPhone/iPadiOS/iPadOS 13以降)の音楽アプリは、左下の【”】吹き出しアイコン(右図の)をタップすると、埋込歌詞を表示する。

しかし、同期歌詞を埋め込んでも同期表示されず、タグごと表示されてしまう(右図)。

iPhone/iPad/Macでは、Apple Music 配信版の曲に限って同期歌詞 (time-synced lyrics) を表示できるようだ。Appleらしいというか何というか…

とはいえ、iTunesで埋め込んだ歌詞はID3タグ内に保存され、前述の通りMiniLyricsやAndroidアプリなどで表示できるので、無意味ではない。

参考リンク

関連記事