32
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

電子書籍(ePub)をMacで音声ファイルに変換

Last updated at Posted at 2014-04-28

この前のオライリーコレクション祭りで、何冊か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日記

32
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
32
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?