はじめに
昔ウォークマンを使っていた際に,x-アプリというソフトでCDから音楽データをダウンロードしていたのですが,データがすべて**".3gp"形式**で記録されていました.
最近になって,音楽データをGoogle Play Musicに移そうとした際に,3gpではダメだと発覚!
これはいけない!
なんとか無料で変換したい!
と思って色々試したので,書きます.
(いや,ストリーミングに移行しろよ!という話ですねw)
手法1 フリーソフトを使う
フリーソフトとしては,
・オンラインで変換してくれるもの
・ソフトをDLして使うもの
の2つの分けられます.
ただ,前者に関しては,ファイル1つ1つのアップロードが必要な場合が多いので,後者を今回は選びます.
ご紹介するのは,real playerというソフトを使です.(詳細:https://jp.real.com/)
高級な変換をしないのであればこちらで十分です.
ただし,エラーが起きて変換できない場合もあります.
検証していないのでなんともいえませんが,登録されている歌手などの情報に,ウムラウトやアクセント付きのアルファベットが入っているとエラーがでる可能性があります.
手法2 MATLAB/Python3
やること自体は簡単です.元ファイルを読み込んで配列データを取得→形式を定めて配列データを保存という流れです.
例えばmatlabだとこのように書けます.
load_name = "aaa.3gp"
save_name = "aaa.mp4"
[y,Fs] = audioread(load_name); %読み込み
audiowrite(save_name,y,Fs); %書き出し
たったこれだけ!簡単ですね.注意すべきは,Matlabのaudiowrite
はmp3には変換できません.
(そもそも有料ソフトのMatlabをこんなことに利用するのはクレイジーですね)
Pythonを使う場合も,環境構築をした上で,同様のプロセスを踏めばOKのはずです.
ただ,3gpを読み込めるかどうか,私は未調査です.
手法3 ffmpeg
ffmpegはコマンドラインから動画等の編集ができるフリーソフトです.
Ubuntuなどでは,sudo apt install ffmpeg
でインストールできます.
(こちらを参照 https://www.komee.org/entry/2018/10/30/120000)
変換方法はいたってシンプル.
ffmpeg -i in.3gp -c:a libmp3lame output.mp3
(こちらを参照 https://superuser.com/questions/230538/how-to-convert-3gp-audio-file-to-mp3)
これを実行するために,下記のようなshell scriptを作りました.
ディレクトリ構成としては,
[アーティスト名ディレクトリ]
- [アルバム名ディレクトリ1]
- [アルバム名ディレクトリ2]
…
という構成です.
IFS_BACK="$IFS"
IFS=$'\n'#空白区切りではなく,改行区切りにする
dirpath="/mnt/c/Users/user_name/Music/Music Center/artist_name/"
dirs=`find "$dirpath" -maxdepth 1 -type d`
for dir in ${dirs}#アルバム名のディレクトリのパスを取得
do
cd $dir
for file in *.3gp #3gpのファイルのみに適用する
do
name=${file%.*}
output="$name.mp3"
ffmpeg -i "$file" -c:a libmp3lame "$output"
#echo "$file"
#echo "$name"
#echo "$output"
done
done
((注))音楽ファイルはたまに変な文字列が使われています.場合によっては上記プログラムで処理しきれない場合があります.ご注意下さい.少なくとも,私はこれで変換できました.