オーディオブック
関連記事
オーディオブックのメディアは音楽 CD やダウンロードファイルなど、複数のフォーマットが存在します。ハードウェアメディアプレイヤーで聞く場合、特定のフォーマットが必要になります。この記事では、様々なフォーマットのオーディオブックを作成あるいは変換する方法を説明します。
目次
iPod で再生できるフォーマット
このセクションでは iPod で視聴することができるオーディオブックを Linux のツールを使ってデジタルメディアから作成する方法を解説します。
iPod 用のオーディオブックは大体において MPEG-4 の音声ファイルと同じです。音声ストリームとストリームに関する情報 (メタデータ) がファイルに含まれます。違いは収容されるのが専用の MPEG-4 コンテナ (.m4b
) であり、メタデータには章立ての索引も追加されるということです。
基本的な手順は次の通り: まずは音源をデコード・復号化します (後でファイルを結合したり分割するのを簡単にしてメタデータのタグが混ざらないように音声だけのファイルにデコードするのが好ましい)。その後、音声ファイルを AAC フォーマットにエンコードします (MPEG-4 コンテナを使用)。最後に、章立てと音声の情報タグを追加します。
オーディオブックのファイルを作成するツールは複数存在します。
ツール
- m4baker-gitAUR — AAC でエンコードされた音声ファイルを単一の m4b ファイルにまとめて章を振る GUI プログラム。
- m4baker の使い方は簡単で project wiki に詳細があります。このページでは説明しません。
- faac — オープンソースの AAC エンコーダ
- neroaacencAUR[リンク切れ: パッケージが存在しません] — プロプライエタリの AAC エンコーダ
- gpac — MPEG-4 メディアを操作するためのマルチメディアフレームワーク
- lame — MP3 エンコーダ・デコーダ
抽出やデコーディング
音源がディスクメディアの場合、ファイルを抽出する必要があり、エンコードされたファイルならデコードが必要です。
オーディオブックがディスクメディアの場合、様々な音声抽出ユーティリティが利用できます。CD から WAV ファイルに音声を抽出する最も一般的な方法は:
cdparanoia -B
オーディオブックが音声ファイルの場合、様々なプログラムでデコードできます。例えば MP3 の場合:
lame --decode part-01.mp3
(結合や分割が必要ないのであれば、ファイルを直接 AAC の MPEG-4 コンテナに変換できます。)
結合や分割
オーディオブックは基本的に一時間ほどになり、10分ごとに分けられています (音楽 CD の曲単位)。ファイルは必要に応じて結合したり分割できます。
WAV ファイルを結合:
sndfile-concat track-01.wav track-02.wav… disc-1.wav # or more easily sndfile-concat track*.wav disc-1.wav
MPEG-4 互換の音声ファイルを結合 (AAC, AVI, MP3…):
MP4Box -cat track-01.aac -cat track-02.aac… disc-1.aac
WAV ファイルの分割は wavsplitAUR でできます。
MP3 ファイルを10分毎に分割:
mp3splt -f -t 10.0 part-01.mp3 -o @n
章やトラックで MP3 を分割 (音がない箇所をスキャンして分割します。以下は汎用的な設定であり実際に使うときは多少の調整が必要になります):
mp3splt -f -s -p -min=3 part-01.mp3
MPEG 4 互換の音声ファイルを10分毎に分割 (メタデータの復元が必要になります):
MP4Box -split 600 target.mp4
エンコーディング
AAC にエンコードできるプログラムは複数存在します。
オープンソースの FAAC エンコーダで変換するには:
faac -q 80 -o part-01.aac part-01.wav faac -q 80 -o part-01.m4b part-01.wav -w # with a MPEG-4 container(wrapper)
プロプライエタリの Nero エンコーダで変換するには:
neroAacEnc -q 0.7 -of part-01.aac -if part-01.wav
章の索引の結合
音声ファイルにチャプター情報を加えるには、一定間隔でチャプターを分けるのか、特定の時間で分けて名前を付けるのか、使用する索引のタイプを決める必要があります。
MPEG-4 コンテナを音声ファイルに追加:
MP4Box -add disc-1.aac disc-1.m4b
一定間隔
10分毎にチャプターを分けるには:
mp4chaps --every 600 disc-1.m4b
特定間隔
章の索引をテキストファイルに書き出してから音声ファイルに結合します。
章の索引には2つの規格があります。Quicktime の規格と Nero の規格です。最初はどちらでもマージできます。
Quicktime の規格は以下のようになります (.000
と追加することでミリ秒まで指定できます):
00:00:00 Track 01 00:08:40 Track 02 ...
Nero の規格は以下のようになります:
CHAPTER1=00:00:00 CHAPTER1NAME=Track 01 CHAPTER2=00:08:40 CHAPTER2NAME=Track 02 ...
章の索引ファイルをマージするには:
MP4Box -chap disc-1.chapters.txt disc-1.m4b
章の索引ファイルをワンステップで音声ファイルとコンテナにマージするには:
MP4Box -chap disc-1.chapters.txt -add disc-1.aac disc-1.m4b
章の索引は Quicktime 規格に変換する必要があります (インポートするときは MP4Box は両方の規格を認識します)。次のコマンドで変換できます:
mp4chaps --convert --chapter-qt disc-1.m4b
VLC などでチャプターをテストしてください。
タグの追加
タグを設定できるプログラムは複数存在します。基本的なコマンドラインプログラム (おそらく既にインストールされています — mp4tag
, mp4art
, mp4file
, mp4info
…) で様々なタグを設定できます:
mp4tags -album "An Good Audiobook" -artist "John Doe" -disk 2 -disks 10 -genre Nonfiction -albumartist "Ms. Foo Bar" -song "Disc 2" -year 2004 disc1.m4b
カバーアートを追加:
mp4art --add a-good-audiobook.jpg disc-1.m4b
コンテナを最適化:
mp4file --optimize *.m4b
バッチ処理の例
ループを使えば複数の音声ファイルを処理できます:
for m in *.mp3; do lame --decode "$m" faac -q 80 -o "${m%.*}".aac "$m" done
ディスク番号のタグを書き込むには:
for b in *.m4b; do [ "$n" ] && n=$((10#$n + 1)) [ -z "$n" ] && n=1 mp4tags -album "An Good Audiobook"… -disk $(printf "%02u" $n)… "$b" done
Audible フォーマット
Audible ブックフォーマットを変換するのは面倒です — 記事。
こちら のスクリプトを使って Audible のウェブサイトからアクティベーションを取得することで、mpv を使ってファイルを再生することができます:
$ mpv --demuxer-lavf-o=activation_bytes=<your activation bytes> <filename>.aax
もしくは ffmpeg を使って暗号化されていない .mp4 にファイルを書き出すこともできます (ドキュメント):
$ ffmpeg -activation_bytes <your activation bytes> -i <filename>.aax -vn -c:a copy <output>.mp4
作成されるファイルには章の情報がそのまま保存されます。
参照
- Wikipedia:ja:MP4
- ripitAUR —
--book
オプションで DAE を使って章立てを作成できます。