この前のオライリーコレクション祭りで、何冊かePubを買いました。
DRMフリーって、色んなデバイスで読めて素晴らしい。
でも、あんまり読めてなくて積み本になってます。
そこで、Macにsay
で読み上げてもらって耳から強制的に読もう!と思いました。
(iPhoneのiBooksが読み上げてくれたら便利なのに...)
ePubファイルについて
ePub持ってない人は、こちらが無料なのでダウンロードしてみてください。
O'Reilly Japan - EPUB 3とは何か?
「.epub」ファイルは単なるzipファイルなので、unzip
コマンドで解凍できます。
cd ~/Downloads/
unzip oreilly-978-4-87311-552-8e.epub -d epub
「epub」というフォルダの中に解凍しました。
その中の「OEBPS」というフォルダに文章等が保存されてます。
ざっと見で、chで始まるxhtmlがチャプター(章)みたいな感じ。適当。
sayコマンドについて
Macに喋ってもらうには、say
コマンドを使います。
使い方を簡単に紹介します。詳細はman say
を参照。
漢字もけっこうよろしく喋ってくれます。
say 'はろーはろー'
パイプも行けます。
echo 'はろーはろー' | say
ファイルにも保存できます。
say 'はろーはろー' -o hello.m4a
sayコマンドについては別に記事を書きました
Macのsayコマンドの使い方 - Qiita
ePubを読み上げてもらう
少し乱暴ですが、htmlタグは必要無いのでsed
でぜんぶ除去します。
そのままパイプでsay
に渡します。
問題無く喋ってくれたら、「Ctrl + C」で中止しましょう。
sed 's/<[^>]*>//g' epub/OEBPS/ch*.xhtml | say --progress
全ての章を一気に処理してます。
--progress
をつけると経過時間が分かって便利です。
本によってはファイル名とか構造が違って動かないかもしれないので、その場合は適当にパスを修正します。
音声ファイルに保存
デスクトップに「epub.m4a」という名前で保存します。
sed 's/<[^>]*>//g' epub/OEBPS/ch*.xhtml | say -o ~/Desktop/epub.m4a --progress
あとはiTunesに入れてiPhoneで聞き流すだけです。
「入門Sinatra」は3時間49分でした。
ファイルサイズは54MB、変換完了までMacbook Proで40秒。
タイトル自動でつけたり、チャプターごとにトラック分けたりしてくれるスクリプト書きたい。
ていうか、誰か作ってくれないかな...(チラッ
#iPhoneで再生する場合
iTunesでオーディオブックにしておきましょう。
再生速度を変えられますし、どこまで再生したかを記憶してくれるので便利です。
[情報を見る > オプション > メディアの種類]
iPhoneでは以下から再生できます。
[ミュージック > その他 > オーディオブック]
アルバム名を書かないと空白のセルになるので、アルバム名は入れておきましょう。
参考
概説EPUB(構造解説編) - HowManyFilesの日記
EPUB - Wikipedia
はじめてのEPUB:その1 - 達人出版会日記
sedでhtmlのタグを除去する | サラトガIT日記