DLS(Dynamic Labeling System) Encoderを作った。

リンク

GitHub

https://github.com/kkryama/dls-encoder

概要

  • 目的: 音楽ライブラリやデータベースのメタデータ管理を簡素化する
  • できること: HTMLファイルから自動抽出したメタデータをID3タグとして設定したMP3ファイルの作成
  • 技術スタック: Go 1.24.0+, FFmpeg v4.2+
  • 特徴:
    • WAV/MP3からMP3への高音質変換(320kbps、48kHz)
    • HTMLファイルからのメタデータ自動抽出とID3タグ設定
    • 対話型HTMLファイル生成機能(事前に用意されたHTMLファイルが存在しない場合)
    • メイン画像の自動埋め込み(コンフィグで変更可能)

開発の背景

CDをMP3に変換する際は、CDDBサーバから取得したデータでメタデータを自動設定できる。しかし、その他の音声ファイルをMP3に変換する場合は手動でのメタデータ設定が必要となり、これが煩雑で時間がかかる問題があった。

この課題を解決するため、MP3変換とメタデータ設定を同時に効率よく実施できるツールを開発した。

動作の仕組み

  1. 変換元ディレクトリ名と同名のHTMLファイルからメタデータを自動抽出
  2. 抽出した情報を使用してID3タグを設定
  3. 高音質(320kbps、48kHz)でMP3に変換

これにより、大量の音楽ファイルを一括で整理できるようになる。 また、HTMLファイルが存在しない場合は対話型で自動生成する機能も搭載している。 詳細は DLS(Dynamic Labeling System) EncoderREADME.md を参照のこと。


という仰々しいことを書いていますが、実際のところとしては DLsite で購入した同人音声ファイルから効率的にMP3ファイルを作成するために作成しました。

たとえば、

【あおぎり高校ASMR】癒せればなんでもあり!? あおぎり流マッサージご堪能あれ♪(耳マッサージ・心音・オイル・泡)

https://www.dlsite.com/maniax/work/=/product_id/RJ01098541.html (*) リンク先R18注意

を DLSite で買うじゃないですか。買うと RJ01098541.zip というファイルがダウンロードできて、展開すると

Contents of extracted RJ01098541.zip file

というような内容になっています。

これをこのまま残しておいてもよいのですが、

  • WAVだとファイルサイズが大きくてストレージを圧迫してしまうのでできればMP3にしたい
  • MP3ファイルはID3タグ(メタデータ)としてアーティスト情報やアルバム情報などを設定できるので、ダウンロードした同人音声ファイルもID3タグを設定したい
  • しかしこのようなWAVからMP3にするときは手動で設定する必要がある
  • サークルによってはWAVファイルだけでなくMP3も同梱されていることがあるが、ID3タグが設定されていないことが多い

というところからDLsiteの情報を利用してID3タグを設定したMP3ファイルを作成したいという発想のもと作成。

DLsiteで購入した同人音声ファイルのMP3変換

  • DLsiteで購入する作品のページを開き「名前をつけて保存」でhtmlファイルを保存、保存時にはURL末尾の作品番号を利用する
    • 上記の例だと RJ01098541.html
  • DLsiteで該当作品を購入しzipファイルをダウンロード
    • 上記の例だと RJ01098541.zip
  • ダウンロードしたファイルを展開、フォルダ名はzipファイル名から.zipを抜いたものにする
    • 上記の例だと RJ01098541 というフォルダ名にする
  • 保存したHTMLファイルと展開したあとのフォルダを設定ファイルで指定した場所に保存
  • プログラムを実行するとID3タグを設定したMP3ファイルを作成

というように、DLsiteのHTMLファイルを利用してID3タグを設定したMP3ファイルを作成してくれるよう作成しました。 DLsiteのHTMLファイルには作品名,サークル名,声優が設定されている(同人音声によっては声優名が設定されていないものもある)ので、これを利用して下記のようにID3タグを設定しています。

  • 作品名: アルバムタイトル
  • サークル名: アルバムアーティスト
  • 声優名: アーティスト

また、設定ファイルの項目set_main_imageでID3タグに画像を追加することも可能となっており、(適切な名前を設定し適切な場所に置けば)MP3ファイルに任意の画像を設定することが可能となっています。

ID3タグに画像を設定するようにしてMP3ファイルを作成し、作成後のMP3ファイルをiPhoneに転送したあとミュージックで表示したときのスクリーンショットがこちら。

[iPhone上で取得したミュージックのスクリーンショット]

MP3ファイルに画像とアルバムタイトル、アルバムアーティスト、アーティストが設定されていることで、iPhone上で選択するときもとてもわかりやすく、またID3タグが設定されていることでとても管理しやすくなりました!わーい!