MacのMusicで楽曲が文字化けしたので直した話

こんにちは。

TOEICを久しぶりに受験しようかと思い、勉強のために買った参考書についていた音楽ファイルをDLし、Music経由でiPadに取り込もうとしたら、音楽のタイトル・アーティスト名などが全て 文字化け していたので、直すために色々と調べて、誰でも使える環境でフリーソフトをDLすることなく問題解決 できたので書いていきたいと思います。

MacのMusicでの文字化け

桐谷美玲さんでお馴染みのスタディサプリのTOEIC対策教材を入手したので、教本に記載されているURLから音声ファイルをDLし、Musicに取り込んだところ、楽曲タイトル・アーティスト名・アルバムすべてで文字化けが発生

画像1

原因について調べてみたところ、こういった文字化けの原因の大半は ID3タグのエンコード形式 が原因とのこと。逆を言えば、エンコードさえ正しく実施できれば問題は発生しない。

Google先生に相談 🔍「id3 文字化け」

Google先生に相談したところ、いくつかのテックブログがヒット。

だが、どのブログも投稿日時が古かったり、謎のフリーソフトを導入する方法ばかりである(しかもそのフリーソフトも古くてもうDLできない)

そこで、フリーソフトなしで実行できる方法として、Pythonで実行できないかと思い、

🔍「id3 python 文字化け」

で検索したことろ、以下のブログがヒット

このブログを参考にPythonで実施する方向で決定

Colablatoryを使って環境構築しないで実現

Pythonを使って問題は解決できそうと分かったが、Pythonを実行できる環境をPCに整えるハードルがすごい高い。

だが、こんな時も頼りになるのがGoogle先生

Pythonを使えるweb仮想環境として、Colablatoryと呼ばれるサービスを展開しておりそのサービスを利用することでブラウザ経由でPythonを実行できる

このサービスを利用して、先程のブログに書かれていたコードを自分の持っている音楽に適用できる環境を構築する

ブログの処理ができる環境の準備

上のリンクからColablatoryにアクセスすると説明を兼ねた環境が表示される。このままこの環境で実施しても良いのだが、色々とごちゃごちゃしているので左上のファイルからノートブックを新規作成をクリックし、新しいノートブックで始める。

新しいノートブックを開いたら、最初にColablatoryのデフォルトの環境に足りないモジュールをDLするために以下のコードを実行

%pip install eyed3

これを実行すると以下のような結果が表示され、最後がSuccessになっていればOK(途中のwarningは無視)

Collecting eyed3
 Downloading eyeD3-0.9.6-py3-none-any.whl (245 kB)
    |████████████████████████████████| 245 kB 31.0 MB/s 
Collecting filetype<2.0.0,>=1.0.7
 Downloading filetype-1.0.7-py2.py3-none-any.whl (15 kB)
Collecting deprecation<3.0.0,>=2.1.0
 Downloading deprecation-2.1.0-py2.py3-none-any.whl (11 kB)
Collecting coverage[toml]<6.0.0,>=5.3.1
 Downloading coverage-5.5-cp37-cp37m-manylinux2010_x86_64.whl (242 kB)
    |████████████████████████████████| 242 kB 37.3 MB/s 
Requirement already satisfied: toml in /usr/local/lib/python3.7/dist-packages (from coverage[toml]<6.0.0,>=5.3.1->eyed3) (0.10.2)
Requirement already satisfied: packaging in /usr/local/lib/python3.7/dist-packages (from deprecation<3.0.0,>=2.1.0->eyed3) (21.0)
Requirement already satisfied: pyparsing>=2.0.2 in /usr/local/lib/python3.7/dist-packages (from packaging->deprecation<3.0.0,>=2.1.0->eyed3) (2.4.7)
Installing collected packages: coverage, filetype, deprecation, eyed3
 Attempting uninstall: coverage
   Found existing installation: coverage 3.7.1
   Uninstalling coverage-3.7.1:
     Successfully uninstalled coverage-3.7.1
ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
datascience 0.10.6 requires coverage==3.7.1, but you have coverage 5.5 which is incompatible.
datascience 0.10.6 requires folium==0.2.1, but you have folium 0.8.3 which is incompatible.
coveralls 0.5 requires coverage<3.999,>=3.6, but you have coverage 5.5 which is incompatible.
Successfully installed coverage-5.5 deprecation-2.1.0 eyed3-0.9.6 filetype-1.0.7

そうしたら次は、メモ帳などを利用して、先程のブログに書かれていたコードをコピペして id3conv.py というpythonファイルを作成する。

念の為わからない人用の手順
1. メモ帳を開く
2. ブログから該当のコードをコピー
3. メモ帳に貼り付ける
4. 名前をつけて保存を押し、その名前を「id3conv.py」とする

id3conv.py の作成が完了したら、それをColablatoryにアップロードする。アップロードは、Colablatoryの左側に表示されているフォルダボタンをクリックし、アップロードぽいアイコンをクリック

画像3

そうするとポップアップが表示されるので画面指示に従って id3conv.py をアップロード

画像3

id3conv.py が表示され、これでブログに書かれていた処理ができる環境が構築できた

音楽ファイルを用意する

お次は文字化けを直したい音楽ファイルをアップロードする必要がある。

音楽ファイルが1つの場合は、同じ手法でアップロードすればOKだが、もし複数のファイルが存在する場合は、 Googleドライブ を利用する方法が楽だった

Googleドライブを開いて、新しいフォルダを「music_temp」などと名前をつけて作成し、そこに変換したい音楽ファイル(MP3とか)をアップロードする

Googleドライブでのファイルのアップロードが完了したら、今度はColablatoryとGoogleドライブを連携する。以下のボタンをクリックすれば連携完了です。

画像4

連携が完了されると drive というフォルダが追加され、
MyDrive > music_temp
といった感じに該当の音楽が配置されているフォルダがあれば準備は完了です

画像5

文字化けを直す

いよいよ文字化けを直す時がきました。Colablatoryの +コード から新しいコードを記述できるセクションを作成し、以下のコードを実行しましょう

%run id3conv.py /content/drive/MyDrive/music_temp/*

無事に処理が走ったら、OKです。完了を待ちましょう。
もしエラーが発生した場合、%pipの項目から再度実行してみてください。
おそらくそれで問題は解決するはずです。

文字化けが治った音楽ファイルは、Googleドライブに上書き保存されているので、Googleドライブから取得してください。

ちなみに、私の環境では次のような感じに治りました。いい感じ。

画像6

最後に

素晴らしいブログのおかげで、今後フリーソフトに頼る必要なく音楽の文字化けを直せる環境が構築できました。 yukirii さん、ありがとうございました。

また古いブログばっかりだったので、似たような問題に直面した方は試してみてください。(難しそうで難しくないので)

この記事が気に入ったらサポートをしてみませんか?