カラオケでキーをいくつ変更したらいいか分かるプログラム

歌いやすいキーに音声ファイルを変換してカラオケの練習ができる
created by cooyou.org

概要

.mp3の拡張子の音声ファイルまたは.mp4の拡張子の映像ファイルからボーカル音声を抽出して、自分の音域に合わせたキー変更後の音声ファイルを作成できます。
カラオケでのキー変更は一般的に-6から+6までですので、適切なキーが分かります。また、グラフで音域とボーカル音声の比較が確認できます。

インストール

プログラミング言語pythonの実行環境が必要です。Windowsパソコンで動きます。未経験の方でもCharGPTなどで調べていただくとなんとか出来ると思います。
Pythonをインストールするには、Python公式サイト(python.org)からインストーラーをダウンロードし、実行します。
インストールするPythonバージョンは3.10.11でお願いします。
Python 3.10.11 - April 5, 2023
Note that Python 3.10.11 cannot be used on Windows 7 or earlier.
Download Windows installer (64-bit)
というところからダウンロードして実行してください。
インストーラ実行画面の「Add Python to PATH」にチェックを入れ、インストール後にコマンドプロンプトでpython --versionと入力してバージョンが表示されれば完了です。

pythonの本プログラムのソースファイルはこちらです。ontei.txtリンクを右クリックしてメニューから保存してください。
.py拡張子としてダウンロードするのはサーバーやブラウザのセキュリティ上できないようです。とりあえず.txtとしてます。
ダウンロード後にontei.txtをontei.pyへリネームしてご利用ください。

python実行環境のインストール後にpipコマンドでライブラリのインストールが必要です。
pipはpythonをインストールすると使えるようになっているはずです。
ライブラリをインストールするために必要なrequirements.txtはこちらですので、リンクを右クリックしてメニューから保存してください。
pip install -r requirements.txt
でライブラリが一括でインストールされます。(環境によってはもしかするとpipではなくpip3かもしれません。)
一番ファイルサイズの大きいのはtensorflowで444MBほどありますからネット混雑時は通信が切れてエラーになる場合があります。その場合は時間帯を変更して実行しましょう。

FFmpegのインストールを行ってください。
FFmpegをダウンロード:
FFmpegの公式ダウンロードページ(https://www.ffmpeg.org/download.html)にアクセスします。
Windowsアイコンをクリックし、gyan2などの提供元からffmpeg-release-essentials.zipをダウンロードします。
ファイルを展開:
ダウンロードしたZIPファイルを、C:\などの分かりやすい場所に展開します。(例: C:\ffmpeg)
システムパスに追加:
Windowsのスタートメニューで「環境変数」と検索し、「システム環境変数の編集」を開きます。
「環境変数」ボタンをクリックします。
システム環境変数のリストからPathを選択して「編集」をクリックします。
「新規」をクリックし、展開したフォルダ内のbinフォルダのパス(例: C:\ffmpeg\bin)を追加します。
確認:
コマンドプロンプトでffmpeg -versionと実行して、バージョン情報が表示されれば成功です。

カラオケのキー変更の仕組み

曲の予約時にキー設定ができると思うのですが、普通は-6から+6まで設定可能です。歌っている最中にも変更できると思いますが、ここでは予約時の話に限定します。
歌うキーが合うというのは、1オクターブ上がっても下がっても合う仕組みなってます。2オクターブでも同じです。
なぜかというのは音楽理論の波長の長さとか倍音とかそういう難しい話になりますので、ここでは省略します。
1オクターブというのは12キーのことですから、-12または+12のキー変更をした場合、なにもキー変更しないのと同じと考えていいのです。
ところが、カラオケでは-6から+6までしか設定できませんから、自分の音域と歌の音域が離れている場合は、ぴったりの設定が難しいですね。
例えば、男性が女性の曲を歌う場合に、キーを下げようとします。しかし、歌によっては逆に上げるほうが合う場合があるのです。
本来-8したい場合は、-12してから+4するという感じにします。-12+4=-8ですから-8のキー変更と同じ意味です。
つまりこの場合はカラオケでは+4のキー変更すればいいのです。
男性が女性の歌を歌う時にキーを上げるという発想はなかなか出来ないものですが、しかし、実際はそれで合う場合も多いのです。
同様に女性が男性の歌を歌う場合にキーを下げて合う場合も多いのです。
ちなみにJoySoundは、自動的に自分のキーに合わせてくれる機能があるようです。会員登録して3曲歌うと自動的に決まるそうですが、その機能を使ったことないのでよく知りません。

本プラグラムで出力されるもの

作成されるファイルは以下です。
・入力がmp3ファイルの場合はそのコピーされたoriginal.mp3ファイル。入力がmp4の場合は音声のoriginal.mp3ファイル。
・original.mp3からボーカルのみを抽出したファイルvocals.mp3
・original.mp3から以外を抽出したファイルaccoumpaniment.mp3
・vocals.mp3の音域をグラフ化した画像ファイルgraph_original.jpg
・original.mp3をキー変更した音声ファイルshift数字.mp3
・shift数字.mp3からボーカルのみを抽出したファイルvocals_shift数字.mp3
・shift数字.mp3から以外を抽出したファイルaccoumpaniment_shift数字.mp3
・shift数字.mp3の音域をグラフ化した画像ファイルgraph_shift数字.jpg
※(注意) 歌の著作権侵害にはご注意ください。
本プログラムで生成された音声も歌の著作権の対象となります。自分だけで使用するぶんには構いませんが、自分以外に音声ファイルは配布しないように注意してください。
動画等で流すような公開もしないようにご注意ください。
元の音声ファイルはご自分所有のものをご利用ください。

ここで、ファイルに付属する”数字”というのが-6から+6までの数字となってまして、それがカラオケのキー変更の値です。
また、グラフタイトルには何オクターブ変更(気にしなくてもいいです)と、キーの数字も記載されてます。
グラフはヒストグラフになってまして、ボーカルがどのキーでどのくらいの時間歌っていたかというのが分かります。
そして自分の音域とどの程度ずれているかがわかります。
あくまで、自動的にフィルタリングしたボーカル音声を元に分析しますから、分離が完全でない場合はボーカルだけの音で分析されるわけではないです。
シフトするキーの値についてですが、指定した自分の音域からプログラムで自動的に最適な数字が決まります。
ただし、ボーカルが複数人だった場合はうまくいかないことがありえます。デュエットソングはうまく解析できないかもしれません。

実行方法

まず、本プログラムを任意のフォルダに配置してontei.pyを配置してください。
そのフォルダの下にさらに任意のサブフォルダを作成して歌のmp3またはmp4ファイルを1つだけ配置してください。
複数のファイルを実行したい場合は、別のサブフォルダをその都度作成して実行してください。
次に、コマンドプロンプトを開いてください。コマンドプロンプトが何かというのをご存じない方はChatGPTなどに聞いてください。
配置したドライブに移動してください。おそらく初期値はCドライブ上だと思います。
例えばDドライブのフォルダに配置した場合は
D:
としてDドライブへ移動します。
次にontei.pyの置いたフォルダに移動してください。
例えばD:/karaoke/keyに配置していたら、cdコマンドでフォルダへ移動します。
cd /karaoke/key
はい、これで準備は整いました。
実行する前に、以下を参考にして自分の音域を"低音:高音"の:記号で区切る形式で決めておきましょう。
・バス(低声男性) E2:E4
・テノール(高声男性) C3:C5
・アルト(低声女性) F3:F5
・ソプラノ(高声女性) C4:C6
画像の数字でも結構です。
よく分からない人は、歌いやすい歌を試しに分析してみて、それを自分の音域の目安にするといいと思います。



では、実行してみましょう。サブフォルダの名前が"5"だったとして自分の音域を例えばG1:D3の例を示します。
python ontei.py 5 G1:D3

のようにサブフォルダ名と音域を指定して実行できます。
pythonの指定でなにも実行されない場合、実行環境によってはpython3とする必要があるかもしれません。
python --helpまたはpython3 --helpと実行してみて、ヘルプが表示されるかをご確認ください。

実行が始まりますと、あとは終了するまで待ちます。tensorflowの警告やcudart64_110.dllに関するエラーが表示されるかもしれませんが気にしなくていいです。
5分くらいで終了すると思います。そうしましたら、サブフォルダに複数のファイルが出来てます。
shift数字.mp3ファイルを再生していただくと、キー変更された歌になってます。もしもキーの数字が0であれば入力音声と同じで変更なしです。
ついでにボーカル抜き音声ファイルも作成されますから、カラオケ練習用にご利用ください。
グラフはこんな感じですね。
こちらが元の歌との比較で自分の音域とずれてます。中央から右のほうのグラフの山はボーカル以外の音が少し入っているのだろうと思います。気にしないでください。


こちらがキー変更してシフトしたグラフです。自分の音域と合ってます。

オクターブシフトが-1となってますから1オクターブ低くしていて、キーシフトが+4ですから実際は-12+4=-8にしている意味になります。
グラフ自体が左に8つずれていることが確認できると思います。
つまり歌を低くなるようにキーシフトする必要があるのですが、カラオケでは-6から+6までしか指定できませんから、
カラオケに指定する数字は+4と高くするほうが合うということです。
信じられないかもしれませんが、やってみてください。本当に合うのです。
カラオケではオクターブシフトは無視して、あくまでキーシフトだけの数字を指定してください。

個人的には以前からキーが合わなくて歌いにくいなあと思っていた曲を本プログラムの分析を試してその通り設定したらぴったり合いました。
それでは、みなさんのカラオケライフを応援してます。きっと以前よりも気持ちよく歌えるようになるはずです。

参考リンク
MP3音声ファイルのノイズリダクションができるプログラム

cooyou.org