用語集

カラオケとは何ですか?

カラオケとは、画面に表示される歌詞を読みながら、録音された音楽に合わせて生で歌うことです。メディアファイルでは、カラオケはストリームをカラオケ音声として示すフラグを指します。

karaoke

カラオケは、人気のある楽曲の伴奏だけを再生する音楽システムです。演奏者は通常、ビデオ画面に表示される歌詞に合わせて、歌を生で歌います。この言葉は、その演奏そのものを指すこともあります。

日本語の「カラオケ」という言葉は、「空」を意味する「カラ」と、「オーケストラ」を短くした語が結び付いたものです。つまり、カラオケは文字どおり「空のオーケストラ」という意味です。

メタデータレポートでは、「Karaoke」はより狭い意味を持つフィールド名です。この名前は、FFmpegプロジェクトのファイルリーダーである ffprobe に由来します。

FFmpeg はファイルの各部分を個別のストリームとして扱います。各ストリームには、Karaoke やAttached Pic などのディスポジションと呼ばれるフラグのセットが付きます。FFmpeg のドキュメントでは、このフラグを「そのストリームにはカラオケ音声が含まれる」と簡潔に定義しています。

値の見え方

ffprobe リーダーの -show_streams オプションは、音楽が含まれていないファイルでも、すべてのストリームについてこのフラグを出力します。この出力でフラグが取る値は 2 つです。

  • 0: フラグはオフです
  • 1: フラグはオンで、そのストリームがカラオケ音声としてマークされています

具体的な表記はレポート形式によって異なります。JSON レポートでは "karaoke": 0 のように表示され、プレーンテキストレポートでは DISPOSITION:karaoke=0 のように表示されます。

どのファイルがそれを持っているか

FFmpeg はこのフラグを読み書きできる形式と、そうでない形式があります。次の例がその一部です。

  • NUT: ストリームは Disposition というタグに karaoke という語を保存できます
  • MKV: Matroska 仕様には、default、forced、commentary といったフラグはありますが、karaoke フラグはありません
  • MP4: FFmpeg の MP4 トラックロール一覧には、karaoke エントリはありません
  • AC-3 および E-AC-3 音声: 音声データにサービス種別があり、その値の 1 つがカラオケを意味します

FFmpeg は、音声が 2 チャンネル以上ある場合、そのカラオケのサービス種別をフラグに変換します。これは MKV や MP4 ファイルでも同様です。それ以外の音声形式では、MKV や MP4 ファイル内のストリームは、曲がカラオケバージョンであっても通常は 0 を報告します。

一部のカラオケ楽曲は、独自のファイル形式を使用しています。米国議会図書館は、カラオケ MIDI ファイル用の拡張子として kar を挙げています。

曲の歌詞がどこに保存されているか

Karaoke フラグには、0 または 1 という数値だけが入り、歌詞テキストは含まれません。FFmpeg には、歌詞を含むストリーム用に別の Lyrics フラグがあります。歌詞のテキスト自体は、形式ごとに異なる場所に保存されます。

  • MP3: ID3v2 フレーム USLT はタイミング情報なしの歌詞を保持し、SYLT フレームは各音節またはテキスト単位にタイムスタンプを保存します
  • MKV: タイミングが不明な場合や、字幕トラックのコピーとして、LYRICS タグに歌詞テキストが保存されます

値の由来

FFmpeg は各ストリームを作成する際、または後からストリームを解析する際にフラグを設定します。NUT ファイルでは、FFmpeg は Disposition タグからフラグを読み取ります。AC-3 音声では、音声データからサービス種別を読み取ります。

FFmpeg の -disposition オプションを使うと、このフラグを自分で設定できます。デフォルトでは、FFmpeg は入力ストリームのフラグを出力ストリームにコピーします。

コンテナ側でのみ保持されているフラグは、新しい形式がそのフラグを保存できる場合に限り、新しいファイルに引き継がれます。MKV 用の FFmpeg ライターには、このフラグ向けのコードがありません。

それが重要な理由

1 つのファイルに複数の音声ストリームを含めることができ、このフラグによって特定のストリームをカラオケ音声としてマークできます。FFmpeg コマンドでは、ストリームセレクター disp:karaoke を使うと、このフラグを持つストリームだけを選択できます。

このフラグはラベルにすぎないため、実際に聞こえる内容を保証するものではありません。値が 0 であっても、その曲にカラオケバージョンや歌詞が存在しないと証明するものではありません。

メタキー