- 個人の音楽ファイルをカラオケ形式に変換するオープンソースアプリケーションで、音声分離・歌詞同期・リアルタイム採点機能を提供
- UVR Karaoke モデルまたはDemucsを使ってボーカルと伴奏を分離し、WhisperXで単語単位の歌詞を自動書き起こし
- マイク入力ベースのピッチ採点と星評価・曲別記録機能により、ゲームのように歌唱力を測定
- 複数のユーザープロフィール、動画ファイルの背景再生、GPUシェーダーによる動的背景、ゲームパッド操作など多様なインタラクションをサポート
- Linux, macOS, Windowsで動作し、インストール不要の単一実行ファイルで動く自己完結型構成を備える
主な機能
- **ボーカル分離(Stem separation)**機能は、UVR Karaoke モデルまたは Demucs を使って音声と伴奏を分離
- **単語単位の歌詞(Word-level lyrics)**機能は、WhisperX により音声に合わせて各単語を整列
- LRCLIB に既存の歌詞がある場合はそれを優先して使用
- **ピッチ採点(Pitch scoring)**機能は、マイクで歌うとリアルタイムでスコアを計算
ユーザーとインターフェース
- **プレイヤープロフィール(Player profiles)**機能により、複数ユーザーがそれぞれのスコア記録を維持
- **動画ファイル対応(Video file support)**機能では、.mp4 や .mkv ファイルを読み込むと元の映像を背景として再生
- **動的背景(Dynamic backgrounds)**機能は、GPUシェーダー効果(プラズマ、オーロラ、星雲など)、Pixabay の動画ループ、または元の動画を背景として使用
- **ゲームパッド(Gamepad)**対応により、メニュー操作、曲選択、再生制御をコントローラーで実行
動作の仕組み
- Separate 段階では、UVR Karaoke または Demucs がトラックをボーカルと伴奏に分離
- Transcribe 段階では、LRCLIB から同期済み歌詞を検索し、ない場合は WhisperX で単語単位の書き起こしを実行
- Play 段階では、伴奏を再生しながら、ハイライト表示された歌詞、ピッチ採点、動的背景、ゲームパッド入力をあわせて表示
プラットフォームと配布
- Linux(x86_64, aarch64)、macOS(ARM, Intel)、**Windows(x86_64)**で実行可能
- CUDAまたはMetalによるGPUアクセラレーションをサポートし、非対応環境ではCPUで動作
- ffmpeg, Python, PyTorch, ML モデルは初回起動時に自動でブートストラップされ、別途インストール不要な単一バイナリ構成
更新通知
- 新規リリースやアップデート情報をメールで受け取ることができ、不要であればいつでも購読解除可能
1件のコメント
Hacker Newsのコメント
さっきソースを取得してビルドして実行してみたが、初回起動した途端にインターネットからバイナリのダウンロードを始めて驚いた
すでに FFMpeg と Python はインストールされているのに、新たにインストールしようとしていた
アプリがインストール済みの Python を
libフォルダ内で探していたせいで実行に失敗した。こういう基本的な不具合がリリースコードに含まれているのは驚きださらに tarball のビルドスクリプトを実行したらDocker コンテナをインストールしようとして戸惑った。デスクトップアプリをビルドするのに Docker とは、理解できない
Krita はビルド時にはシステム Python を使うが、成果物には独自の Python を含めている
ただ、このアプリはダウンロードするよりバンドルしたほうがよかった気がする
セキュリティ上の問題は npm や pip にも似たようなリスクがあるので、完全な例外ではない
だから、開発者がアプリの依存先として頼れる単一の環境を作りたかった気持ちは理解できる
つい最近も Python アプリを実行したら Node/NPM をインストールしようとしてきて、かなり驚いた
自分のコンピュータは自分の作業空間なのだから、アプリが勝手にインストールするのはサプライチェーン攻撃のリスクでもあり、ユーザーに対して失礼な行為だと思う
私が作ったNightingaleは、音楽フォルダを指定すると楽曲を自動でカラオケトラックに変換してくれるアプリだ
ボーカル分離、歌詞同期、ピッチ採点、ゲームパッド対応、GPU アクセラレーションなどを備えている
すべての処理はローカルで行われ、アカウントやサブスクリプション、テレメトリもない
初回起動時に必要なML モデルと Python 環境を自動で設定する
Rust と Bevy エンジンで書かれており、完全なオープンソースプロジェクトだ
今はDemucsのようなニューラルネットを使って解決しているのを見て興味深かった
純粋に数学的なアプローチでも競争できるのか気になる
再生中に前後へスキップする機能が必要だし、句読点の処理や結果の編集機能があるとよいと思う
それでも FOSS として公開してくれてありがとう
CUDA の最低要件と、AMD/Intel の iGPU アクセラレーション対応予定があるのか気になる
家族に使ってもらうのを楽しみにしている
コードでは
line_text.split()で単語を分割しているが、日本語には空白がないので動かないfugashi のような形態素解析器を使う必要がありそうだ
昔の Firefox ベースのNightingale メディアプレーヤーを思い出した
iTunes/Winamp の代替として開発されていたが、もう 10 年以上活動がない
getnightingale.com で当時の痕跡が見られる
過去に似たようなピッチトラッキングのプロジェクトを作ったことがある
現在のアプリのピッチラインが次の音高を表示する機能なのか気になる
良い機能提案として受け取っておく
ローカル実行、オープンソース、情熱主導のプロジェクトで、本当に感動的だ
こういうニュースは人類愛を取り戻させてくれる
コミット履歴を見ると開発速度が非常に速い
おそらくAI 支援開発を活用したのだろう
「AI が開発者を置き換える」という話とは逆に、AI が小規模プロジェクトの実現可能性を高めてくれたのだと思う
アプリが正確に何をするのかわからず、歌詞を消すのだと思っていた
いくつかの曲を試したが、ボーカルがそのまま聞こえる。どうやってボーカル除去を調整するのかわからない
コントロール説明書 を参照
本当に素晴らしいプロジェクトだ。
1 台のデバイスで楽曲を処理し、別のデバイスで再生できるのか、あるいはサーバー/クライアントモードで動作できるのか気になる
音楽家として、バンド演奏中に歌詞を追いかけて表示してくれるアプリがあるとよいと思っている
今はスマホをマイクスタンドに固定しているが、すぐに位置を見失ってしまう