ディスカッション (11件)
Nightingaleは、PC内に保存されているあらゆる楽曲からボーカルを抽出・除去し、カラオケ音源として楽しめるオープンソースのアプリケーションです。お気に入りの曲を使って、自分だけのカラオケ環境を手軽に構築したい方にはぴったりのツールです。
「Nightingale」っていうカラオケアプリを作ってるんだ。音楽フォルダを指定するだけで、曲をカラオケ仕様に変えてくれる。ボーカルと伴奏を分離して、歌詞を単語単位で同期生成して、ハイライト表示や音程の採点までできるよ。動画ファイルにも対応してる。
処理は全部ローカルで完結するから、外部へのアップロードは一切なし。アカウント作成もサブスクもトラッキングも不要だよ。
Linux、macOS、Windows向けに単一バイナリで配布してる。初回起動時に専用のPython環境を構築して必要なMLモデルをダウンロードするから、依存関係を手動でインストールする必要もない。
これを作った最大の理由は2つある:
- ニッチな曲や前衛的、あるいはローカルな楽曲のカラオケ音源が少ないこと。
- 川が流れてたり街並みが映ったりする、昔ながらのダサいカラオケ背景へのノスタルジー。
主な機能:
- UVR Karaokeモデル(バックコーラスも残る)やDemucsを使ったステム分離
- WhisperXによる自動歌詞文字起こし、または利用可能な場合はLRCLIBから取得
- プレイヤーごとのプロファイルとスコアボード機能付きの採点機能
- パーティ用UIとしてゲームパッド対応とTV向けUIスケーリング
- NVIDIA (CUDA) やApple Silicon (CoreML/MPS) でのGPUアクセラレーション
- RustとBevyエンジンで構築
スタック全体がオープンソースだよ。プレミアムプランも「オープンコア」もない、純粋なアプリそのもの。フィードバックやコントリビューションは大歓迎!
オープンソースで、ローカル動作で、情熱に溢れてる。こういうニュースを見ると、人間もまだ捨てたもんじゃないって思えるよ。ありがとう、週末に試すのが待ちきれない!
すごく良さそうだけど、何をするものなのかよく分からない。勝手に「ボーカルを消す」ものだと思ってたんだけど、Cry Cry Cry、Indigo Girls、Suzanne Vegaの曲で試しても、オリジナルと何も変わらないんだよね。画面には完璧なタイミングで歌詞が出るけど、歌声が全く消えない。歌声を消すにはどうすればいいの?
いいプロジェクトだね、試すのが楽しみ!
一つのデバイスで曲を処理して、その結果を別のデバイスや複数のデバイスで使うことはできるのかな? あるいはサーバーとクライアントを分けて実行できたりする?
TVに繋いでるデバイスがあんまり性能良くないから、どこか別の場所で前処理ができたら嬉しいなと思って。
いいね!
僕も昔、同じような目的のトイプロジェクトを作ったことがあるよ[1]。君のほど完成度は高くないし、判断ミスもあったけど。
音程トラッキングについて質問なんだけど、採点のために音程を追跡してるよね? 画面上部にそれらしい線があるんだけど、使い方がよく分からないんだ。僕の用途だと、カラオケアプリにおいて「次の音がどれくらいの高さであるべきか」を表示する、あるいは何らかのヒントがあるのは重要な機能なんだけど、君のアプリには実装されてるのかな? それとも見つけられてないだけ? それとも機能追加のリクエストになるかな?
ソースをダウンロードしてビルドしてみた。実行した瞬間にインターネットからバイナリをダウンロードし始めてびっくりしたよ。FFMpegをリモートサーバーから取ってこようとしてたけど、FFMpegならもうインストール済みだよ。その後、独自のPythonインタプリタをインストールしようとして失敗してたけど、それもシステムにもうあるし。
既存のインストール状況を確認せずに、実行バイナリを含めたベンダー依存の依存関係を勝手にインストールしようとするのはどうなの? セキュリティやパフォーマンスの観点から問題があると思う。
追記:Pythonのダウンロード自体は失敗してないみたいだけど、アプリケーション側がダウンロード完了後に実行ファイルを探す場所をbinじゃなくてlibにしてるみたいだ。Gitリポジトリからリリース用のtarballをビルドしたけど、こんな初歩的なエラーがリリースコードに入り込んでるなんて驚きだよ。
さらなる追記:tarball内のビルドスクリプトを使ってみたら、Dockerコンテナまでインストールしようとしてきた! デスクトップアプリをビルドするのにDockerって、一体全体どうなってるの?
いい仕事だね!もし機能強化のアイデアを探してるなら、最近考えていたことを一つ。自分はミュージシャンなんだけど、歌詞を知らない曲を演奏することがよくあるんだ。バンドが演奏している間に、カラオケみたいに歌詞を追えるアプリがあったらいいなとずっと思ってる。今はスマホをマイクスタンドにクリップしてるけど、1〜2行歌うとどこを歌ってるか見失っちゃうんだよね。バンドやボーカルによって音の構成がバラバラだから実現するのはすごく難しいだろうけど、ちょっとしたアイデアとして伝えたかった。
Firefoxベースのメディアプレイヤー、「Nightingale」を思い出したよ。iTunesやWinampのより強力な代替を目指していたFirefoxのフォークだね。Firefoxベースだから、オールインワンのメディアプレイヤー兼ウェブブラウザとしても使えたんだ。
公式サイトはまだ残ってるけど、ブログやWikiみたいなページはもうなくなっちゃったみたい。もう10年以上アクティブじゃないね。
コミット履歴を見ると、かなり素早く形にしたね。AI支援があったと仮定すると(確実なことは言えないけど)、これは「AIが開発者に取って代わる」という言説とは対極にある良い例だね。
AIのおかげで、これまで技術的には可能でも、ニッチなユーザー層のために手間をかけるコストが合わなかったようなプロジェクトが現実的になってきている。素晴らしいプロジェクトをありがとう!(今試してるところだよ)
日本語の曲で試してみたけど、うまくいかなかった。歌詞の取得はできたみたいだけど、うまく同期できないのか歌詞が何も表示されないんだ。
[analyzer] [nightingale:LOG] Lyrics loaded: 46 lines
[analyzer] [nightingale:LOG] Vocals audio loaded: 4043558 samples (252.7s)
[analyzer] [nightingale:LOG] Final alignment: 418 words aligned
[analyzer] [nightingale:LOG] Lyrics alignment: 0 lines preserved, 0 words
[analyzer] [nightingale:PROGRESS:90] Alignment complete: 0 segments, lang=ja
英語なら単語単位で分割してマッチングを試みてるんだろうけど、日本語だとスペースがないから機能してないのかも。https://github.com/polm/fugashi とかを使ってトークナイズしないといけないんじゃないかな。