オーディオブック

提供: ArchWiki
2018年2月6日 (火) 23:43時点におけるKusakata.bot (トーク | 投稿記録)による版 (文字列「http://ffmpeg.org/」を「https://ffmpeg.org/」に置換)
ナビゲーションに移動 検索に移動

関連記事

オーディオブックのメディアは音楽 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
ノート: オーディオブック CD からエンコードする場合 FAAC の量子化品質は 55 (~64kbps) が推奨です。既にエンコードされているファイルの音源向けの設定になります。特定の不可逆フォーマットから別の不可逆フォーマットに変換すると、常に情報の一部が消失します。
警告: ffmpeg は MP3 を AAC にワンステップで変換できますが (ffmpeg -i track1.mp3 -acodec aac -strict -2 track1.aac)、AAC のサポートは実験的です。

章の索引の結合

音声ファイルにチャプター情報を加えるには、一定間隔でチャプターを分けるのか、特定の時間で分けて名前を付けるのか、使用する索引のタイプを決める必要があります。

MPEG-4 コンテナを音声ファイルに追加:

MP4Box -add disc-1.aac disc-1.m4b

一定間隔

10分毎にチャプターを分けるには:

mp4chaps --every 600 disc-1.m4b

特定間隔

章の索引をテキストファイルに書き出してから音声ファイルに結合します。

ノート: mp4chaps will complain about not seeing a video stream when attempting to merge the chapter index with the --import option (a bug should probably be filed). An alternate method is to use MP4Box. Though MP4Box is typically seen used for video files it has the ability to add chapters while not introducing a video stream. Because of this the resulting media will be able to play on iPods and iTunes as expected.

章の索引には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 を使って章立てを作成できます。