0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【MID2BAR-Player】音程バー付きカラオケ字幕動画の作成が一つで完結するソフトウェアを作りました

0
Posted at

カラオケ採点のような音程バー画面を作成するアプリケーション「MID2BAR」を開発している者です。

しかし、他のソフトウェアでカラオケ字幕の生成、音程バーのオブジェクトをAviUtlでの読み込み、書き出し、・・・といった形で動画作成までの手順が多かったため、以下のデータさえ準備できれば字幕生成~動画の書き出しまで一気通貫して行えるソフトウェアを今回作ってみました。
(せっかくPythonで書いたので、マイク入力を拾って簡易的に採点を行う機能まで付けました・・参考程度でお願いします)

  • 事前に準備するファイル
    • ルビ拡張規格のLRC歌詞ファイル(「RhythmicaLyrics」等で作成できます。規格には準拠していますが、改行を入れて歌詞をブロック分けするなど一部制約があります)
    • メロディーラインのMIDIファイル(マーカーを音程バーのページ区切りと認識します。マーカーエディタも作成しました)
      • 従来のMID2BARはソフトウェア上で操作する独自規格だったため、MIDIファイルのまま生成ができるよう今回変更しました。
    • 音源データ(WAV、MP3などMIDIファイルと同期させた音楽ファイル)
    • MP4形式の背景動画(オプション)

リポジトリはこちらですので、ぜひご活用ください。

image.png

注意:本リポジトリのプログラム(改変含む)またはビルド済みパッケージを利用して作成した動画を動画投稿サイトにアップロードすることが可能です。その際は、使用したソフトウェアとして「MID2BAR-Player」と表記をお願いいたします。また、作成した動画のアップロードによって生じた問題についてはいかなる責任を負いかねますのでご注意ください。


🚀 ソフトウェア概要

MID2BAR-Player はメロディーラインのMIDIファイルとルビ付き LRC 歌詞ファイルを読み込み、以下のように 音程バー + 歌詞付きのカラオケ画面を表示・録画できる ソフトウェアです。

アプリケーションの名前にある通り、MIDI・歌詞を同期させて表示可能なプレイヤーとして動作します。

image.png

  • 🎶 メロディー MIDI の音程バー表示
  • 📝 LRC 歌詞(ルビ対応)との同期
  • 📹 バックグラウンド動画と重ねた再生
  • 📼 プレイバック中の動画録画(ffmpeg 利用)
  • 🎤 マイク入力によるリアルタイム採点(音程の一致度のみを算出します。カラオケで一般的に採点可能なビブラートやしゃくりなどの歌唱テクニックは採点できません)

対応プラットフォーム:Windows / macOS / Linux

  • Windows向けにはビルド済みパッケージを公開しています。
  • macOS、Linuxでの動作には、Pythonソースコードを仮想環境で実行してください。

🧰 主な搭載機能

設定を変えることで柔軟に画面をカスタマイズすることが可能ですが、設定ファイルは項目が多くわかりにくい箇所がある可能性があります。ご了承の上ご活用ください。

🎼 再生・表示

  • MIDI 表示

    • 音程バーを マーカーで区切ったページごとに 見やすく表示可能
    • バーの色・表示範囲・視覚効果の設定が細かく可能
  • LRC 歌詞同期

    • 拡張ルビ規格(ふりがな)形式に対応
    • 改行を区切りとした1~4行までの表示パターンをサポート

🎥 ビジュアル・録画

  • スクリーン録画(MP4)

    • ffmpeg を利用して、プレイヤーの画面をそのまま動画として出力可能です

🎤 リアルタイム採点(参考程度の機能)

マイク入力によるリアルタイム採点(音程の一致度のみを算出します。カラオケで一般的に採点可能なビブラートやしゃくりなどの歌唱テクニックは採点できません)

image.png

📌 サンプル曲を使ったチュートリアル

ここでは、リポジトリに付属する sample を使って基本的な流れを説明します。

1. プロジェクトを開く

  1. Windows版の場合、リリースパッケージのEXEを起動するか、Python環境で以下を実行します:

    MID2BAR-Player.exe
    
    python gui_main.py
    
  2. メニューから
    ファイル>プロジェクトを開く... を選択

  3. sample/sample_project.json を読み込むと、以下の様々な設定が反映されます。

    • MIDI(メロディ)
    • 音声(WAV/MP3)
    • LRC(ルビ歌詞)
    • 背景動画(任意)

image.png


2. 再生準備

  1. この設定を反映して再生する」をクリック

    • 必要なデータ処理(初回は字幕生成のため数秒~十数秒程度時間がかかります)が実行されます。

image.png


3. 再生(または録画)

  • Space キーで再生開始
  • 録画設定が有効なら、 プレイヤーの画面がそのまま MP4 として書き出されます(ffmpegの導入が必要です)
    • 録画を行う場合、フレームを書き出す処理を行うため音楽は再生されません。プレイヤーが閉じるまでそのまま待機してください。

image.png


4. 自分の手元の楽曲データで再生(&録画)する手順

LRC 歌詞ファイル作成

  • 拡張ルビ形式の歌詞ファイルを用意する
  • RhythmicaLyrics などのエディターを利用してください。
  • 空白行を歌詞の間に入れることにより、自動的にカラオケ字幕が1~4段になります。

MIDI の準備

  • メロディーラインの MIDI ファイルを用意

    • バーの区切りの設定には、以下のWindows向けexeかPythonスクリプトを利用してください。
    MIDI Marker Editor.exe
    
    midi_marker_editor.py
    

image.png

  1. メニュー「File>Open MIDI...」を押して表示させたいメロディラインのMIDIデータを読み込みます。誤動作を避けるため、主旋律のMIDIチャンネルは0(初めのチャンネルです。1始まりの場合1)に設定したMIDIファイルを読み込んでください。
  2. 同期した音源データを「File>Set reference audio...」メニューから選択し、再生ボタンを押すと音源が再生され、現在位置が動くことを確認します。
  3. 音程バーを表示する両端の区切りを挿入したい箇所でダブルクリックすると、マーカーが挿入されます。
  4. 「File>Save MIDI with markers...」メニューを押して、マーカーが挿入されたメロディーラインのMIDIファイルを保存します。
  5. MID2BAR-Player本体で書き出したMIDIファイルを指定します。

(オプション)各種画像データ、設定ファイルの準備

その他、プレイヤーに表示する画像や詳細な設定を変更できます。
詳しくはGitHubのリポジトリに記載しています。

  • スプラッシュ画像:再生冒頭、プレイヤー全体に表示する画像
  • タイトルロゴ画像:再生冒頭、プレイヤーの中心に表示する画像(曲名を想定)
  • 音源:MP3など、プレイヤーで再生する音楽ファイル
  • カラオケ字幕生成の設定:字幕生成の詳細設定(デフォルトはlyrics_settings/settings_default.json
  • プレイヤー全般設定:MID2BAR-Playerの表示にかかわる全般の設定(デフォルトはapp_settings/settings.json
  • 画像素材設定:MID2BAR-Playerで使用する画像素材の設定(デフォルトはapp_settings/assets.json

💡 さいごに

音程バー付きのカラオケ字幕動画の制作を手軽に実現するツールを作成してみました。

カラオケ字幕動画を気軽に作成してみたい方のご参考となれば幸いです!


🧾 リポジトリ

https://github.com/keisuke-okb/mid2bar-player

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?