media overlaysによる音声付き電子書籍の作成

とりあえず、音声付きの電子書籍を自力でもなんとか作りたいなあと思ったのでごそごそやってみた。
最大のハードルは音声ファイル。
いや、音声合成のアプリを購入すればそれで済むんだけど、落ち目甲斐性無しの初老フリーターにそんな余裕はなくて(お仕事お待ちしております!)この時点で諦めてた。
ところが検索したら、macのsayコマンドで読み上げさせる・音声ファイル(mp4やm4a)として書き出しまできるというのを見つけて俄然やる気になった。
サンプルは青空文庫『キリストのヨルカに召された少年』(何度もくどいけど、こいつは大傑作の掌編なので読むべし)
手順その1
音声合成するためのEPUB3ファイルの作成。
でんでんコンバーターを参考に、ウチのeasy_epubに、とりあえず本文を句読点ごとにspanタグでくるんでepubファイルの作成ができるオプションを追加。spanタグに通しのidも振るようにした。

これで本文の仕込みは完了。
手順その2
spanタグで区切られた単位の文章一行ずつのファイルを作る。

このファイルを読みこんでsayコマンドに渡して読み上げ用音声ファイル.m4aを作る。
mac スゲー!ていうかunixはスゲーです。

perlは便利…だけど、たぶんautomaterとかシェルスクリプトでもできる、ような気がする。お好みのツールで。
手順その3
音声同期ファイル(.smilファイル)を作る。

・本文に仕込んだspanタグのidをここの text srcに指定する
・音声ファイルと、その再生時間を記述する
・おのおののidはテキトーで良さそう(ほんまかの結果オーライ)
今回は「ひと区切りごとにひとつの音声ファイル」としたので「ClipBeginは0でClipEndは音声ファイルの再生時間」だけどひとつの音声ファイルでまかなう場合はClipBeginとClipEndの指定をしっかり計算する必要がある。
(でも、ここもmp4の情報を取得して足し算して、というだけ。perlなどのスクリプト言語で一括処理できるところなので、あまり難しく考えることもないかな。…あ、うそ。これだといちいちフレーズが何秒か調べなきゃいけないのでとても無理っぽい)
手順その4
音声ファイルと.smilファイルを、OEBPSフォルダの下、たとえば「multimedia」というフォルダを作って放り込む。

手順その5
EPUBのパッケージファイル、content.opfを編集する。

・metadata部
durationに再生時間を記述
読み上げと同期してハイライトさせるためのcssのクラス名を記述(cssには「-epub-media-overlay-active」というクラスを作っておく)
・manifest部
この本文にこの.smilファイルを適用します、というのを記述
.smilファイルや音声ファイルの定義、設定を記述
以上で完成。
media overlaysに対応した(Readiumなどの)リーディングシステムで読み上げできる。
昨日の雑記にも書いたように、読み上げを耳で聞きながら、ハイライト部分を目で追いながら。視覚・聴覚から入ってくる読書体験は刺激的だ。
macのユーザー補助の読み上げ音声を使ってるのでVoiceOverと同じじゃん、ということなんだけど。
手順その2で文章をひとつずつsayコマンドに渡して作るので「明らかな読み間違いはここで校正できる」のがmedia overlaysのポイントかな。
やっぱ、読み間違いは校正・修正したいのが人情ってやつだ。
てことで、校正もしていないそのままのepubファイルはこちら
ttp://t2aki.doncha.net/tmp/20150217_voice.epub
(↑ tmpフォルダは直リンクできないので、こちらからどうぞ)
[02/19 08:11:03] 追記
すみません。macの音声を入れて作ったEPUBファイルを公開するのは、使用許諾契約書を見ると「Appleソフトウェアが起動中である場合」に引っ掛かりそうなので取り下げておきます…。
F. ボイス 本契約の契約条件に従って、お客様は、Appleソフトウェアに含まれるシステムボイス(以下「システムボ イス」といいます)を、(i)Appleソフトウェアが起動中である場合、かつ(ii)お客様自身のオリジナルのコンテンツおよ びプロジェクトをお客様の個人的で、商用的でない利用のために作る場合に使用できます。
↓作成手順を動画にして、作成に使ったスクリプトを公開
↓実際に作った音声付き電子書籍一覧
音声を用いた読書

日本電子出版協会(JEPA)の今朝のメルマガが「「音声を用いた読書」についてのアンケートのお願い」というものだった。
前にも書いたことの繰り返しになるけど。
障害者差別解消法施行に向けて内閣府や総務省などなど「お上」が動きだしている模様。
法律となって義務づけられると、いままでのボランティアベースとはまた違って企業・商売ベースで音声合成付き電子書籍が広がる。
アクセスログを眺めてたら
『AndroidのTalkbackでkindleを音声読み上げ』
↑ここんとこ地味に検索からのアクセスが増えていて(とはいえ500pvを超えたぐらいだけど)電子書籍に音声をつけるのが話題になってるのかなぁ、と思ってたところに今朝のメルマガで驚いた次第だ。
kindle のスピーカーのついたFire端末で、コンテンツが「テキスト読み上げ機能」に対応していれば読み上げるはず(Fire実機を持ってないので未検証)

また、kindle アプリの読み上げ、というか AndroidのTalkback、iOSのVoiceOverを使えばkindleのリフローコンテンツを読み上げてくれる。
Android Talk back
http://www.amazoen.co.jp/gp/help/customer/display.html?nodeId=201454230
iOS VoiceOver
http://www.amazon.co.jp/gp/help/customer/display.html?nodeId=201244940
これらは、ユーザー補助機能=画面に表示するものすべて読み上げる機能で、音声付き電子書籍のための機能ではない。でも、どちらも、意外にもそれなりに人の声っぽく聞きとれる音声で読み上げてくれるのでちょっと驚いた。
ユーザー補助機能ではなくて、電子書籍に音声が埋め込まれている場合。
音声合成付き電子書籍を読み上げると(chromeのReadiumなど)「読み上げている部分」が「画面上でハイライト表示される」
これはちょっと面白い読書体験で「目で追って」「耳で聞く」という視覚と聴覚、2つから流れこんでくる読書。
自分でも作れると面白いなあ、と思ったんだけど、音声ファイルを用意するのがまず厳しいし、同期ファイル(SMIL)や本文にタグの埋め込みも面倒くさい。
…とか検索してたら一昨年2013年の時点で
『でんでんコンバーターに朗読付きEPUB作成支援機能が追加』
でんでんコンバーターは音声付きの電子書籍作成にも対応していた。すげー。
健康促進


内科の先生が結果を眺めて悪い数値がまったくないですよ!薬を変えましょう、と。
高脂血症、悪玉コレステロールは生活習慣病だ。
生活習慣を変えたわけじゃないのになあ、と言ったら
「毎日なにかに憑かれたように歩いてるじゃん」
とヨメに笑われてしまった。
Ingress様様、google様様かもしれん。
出先で仕事はポータル密集地なのでひと駅手前で降りて歩いてるし、表に出た時も直進最短ルートではなくてポータルを巡りつつ右往左往。
出先の時は1万5000歩ほど歩いてるし、ウチでごろごろしてるつもりでも5000歩程度は歩いてんなあ。
これが健康目的のウォーキングやジョギングだったら続いてない。
何の保障もない無職初老のフリーターだ。健康だけは気をつけにゃいかんのでこれは助かる。
ひとは間違いを犯すのだ
「絶対」なんてことはありえないんだけど、世の中これだけは「絶対」と副詞をつけても正しいのが「人間は絶対に間違いを犯す」
いや、別に倫理的とか哲学的なとかメタな話じゃなくて、単純なミスの話。だ。
人間のやることだ、ミスは必ず起こる・起こす。
ミスを起こさないための方法を100通り考えるヒマがあったら、ミスが起こった後にフォロー・リカバリする方法を10通り用意する方がよっぽど効率的で健全な判断だろう。
その方法はシステム的なことかも知れないし、担当者を温泉に連れこむような人的力技かも知れない。
わたしは自分の仕事を信用してないのでミスがあることを前提に、仕事の後のチェックやミスの早期発見の方法をまず考える(自分でやるのか、他人にまかせるのかはおいといて)
てことで、やっと今日の雑記の小ネタ本文はここから。無駄な前振りが長いのは年寄りなので勘弁してもらおう。
データベースへの登録作業。
登録したデータはサイトに表示されて…ネタは商品ページにありがちなスペック表みたいなシロモノ。
リンゴのページにはリンゴの表となって表示される。
| 名前 | リンゴ |
|---|---|
| 値段 | 300円 |
| 産地 | 余市 |
ミカンのページにはミカンの表となって表示される。
| 名前 | ミカン |
|---|---|
| 値段 | 200円 |
| 産地 | 愛媛 |
データベースを直接覗けるならSQL文一発で入力項目のチェックができるんだけど、いかんせん、管理画面でしか使えない。
入力したものを確認するにはリンゴのページを開いて確認し、ミカンのページを開いて確認し、とページの数だけ開いて確認する必要がある。
これはいくらなんでも面倒くさい。ミスを放置しろといわんばかりだ。
なもんで、あちこちのページにあるHTMLの単純なTableを一覧したい。ということで例によってperlの出番。
まとめてこんな表にすれば、いちいちページを開く必要がなく確認がらくちんだ。
| 名前 | 値段 | 産地 |
|---|---|---|
| リンゴ | 300円 | 余市 |
| ミカン | 200円 | 愛媛 |
当然perl には HTMLを解析するモジュールが用意されていて
HTML::TreeBuilder
HTML::TagParser
Web::Scraper
ちょっと調べた限りではこの3つが定評もあって使いやすそう。
ただ、今回はTableの項目を引っ張りだしてひとつのTableにするだけ、タテのものをヨコにするだけなので現物合わせ「オレオレscript」で作った。
lwpで各ページのHTMLを取得してその中から必要なtableを探してバラしてhashに収納して一覧表にして表示する。
今日の雑記はここ。tableをバラして収納するところ、ていうかこれだけ。
my $r;
1 while $html =~ s!<th[^>]*>([^<]*)</th><td[^>]*>([^<]*)</td>!$r->{$1}=$2!e;
perlの正規表現のeオプションは強力でいろんな状況で使える。てか、式に使えるんだからなんでもありだよなあ。
hashに入れてしまえば後はどうにでも加工できる。
…にしても、本当にperlはすげー。
私立文系まっしぐらでプログラムなんて全然知らない・経験や訓練もないわたしでもそれなりに使えてしまう。日々の仕事でなんでこんなこと、てな単純な繰り返しや、ちょっとした条件分岐を入れればすむだけ、というような場合にperlはスイス万能ナイフ的に使える。
人間が1000回コピペすると3回ぐらいはミスをするけど、perlでスクリプトにしてしまえば間違いは犯さない。
これから何かひとつプログラム言語でも、というかたにはperlをオススメ。
ぶっちゃけ、perlがあるおかげで仕事でも趣味でもいろいろ本当に助かっている。
競馬の、馬券のデータ集計のために使うようになったAWKからperlに辿りついたわけで、競馬に感謝するしかあるまい。

図書館が静かに熱いのだ

地元下町の図書館を重宝させてもらっている。
蔵書数や詳細は図書館のページを見てもらうのが早い。
https://www.lib.city.katsushika.lg.jp/chuou_guide.html
情報バリアフリーというか、対面朗読室があったり、大きな活字の本(22ptぐらい)が豊富に揃ってたり。かと思えば堀晃やディレーニイ、ディッシュ、ジョナサン・キャロルなんかがさらっと並んでたり。今日あらためてうろうろしてみて妙な感心のしかたを。これは飽きない。
わたしにとってありがたいのが。
・平日は朝9時から夜10時までやっている。
・個人閲覧席という簡単なパーティションで区切られたひとり用のスペースがある
(電気スタンド、コンセント付き)
・グループ研究室という2〜6人で使えるスペースがある
(会議室とは違って中の声が外に聞こえるので大声は禁止)
https://www.lib.city.katsushika.lg.jp/chuou_guide_shisetsu.html
本と本棚に囲まれた空間は、やっぱりちょっと黴くさいようで、ちょっと湿気を帯びてるようで、音が紙にページに吸い込まれてんじゃないかと思う静かさ。
コンセントはあっても個人閲覧席にネット環境はなくて(ビジネスITコーナーは完備)ネット徘徊して時間を取られることもなく作業が捗る。
…といいつつ、管理画面を使わなきゃいけない作業もあるので、その時はmineoのスマホでテザリングするか。
大昔、小学生の頃に「自動車文庫」というのがあって、地元の図書館が月に2回、車に本を積んで児童公園を回っていた。
近くに本屋もなく、また、ウチはビンボだったので小遣いも限られていたので、この「自動車文庫」の日が楽しみだった。
その時に、ジュール・ベルヌや、ホームズ、南洋一郎のルパンを借りまくって読みまくって、今のわたしの基礎工事の出来上がりだ。
行政、役人というとなにかと攻撃の対象になるみたいだけど、図書館には感謝しかないかなあ。
ちなみに。
地元出身ということで、栗本薫さんの生原稿の展示があったり半村良特集があったりも。


