ひまつぶし雑記帖

紙印刷本から電子書籍から紙印刷本というエコシステム

2016/2/19 [12:12:20] (金) 天気

InDesignからSigil経由のEPUBファイルをInDesignへ。
何を言ってるかわからないと思う。わたしも最初聞いた時は驚いた。

紙で出版されたものが電子書籍として配信されて、今度はその配信されたものを組み直して再び紙印刷本へというお話。
売れっ子グラビアアイドルが、AVに出演した後、温泉街のストリップに流れる、みたいな変遷。逞しい話で、名作(テキスト)は姿形を変えてもしっかり生き残るという良い例だろう(ほんまか)

おそらく元になってるInDesignデータは出せなくて(権利的な話じゃなく、たぶん探すのが面倒、もしくはもうなくなっているので)電子書籍のEPUB3ファイルを元にするしかない。

ということで、そのEPUB3ファイルをバラしてInDesignに流し込みという雇用創出となった。

まだEUPBファイル制作のソフトが出揃ってなかったんだと思う。
ファイルは、一時使われていた縦書きにもできる改造版Sigilで作られているっぽい(EPUBファイルのフォルダ構成やファイルの命名規則がどっかで見たことあるなあと)

でもまあ、青空記法に独自規則のアレンジとかdotBookからのHTMLっぽいデータよりはEPUBファイルの方が扱いやすい。

・組み直しになるので、元のレイアウトにこだわる必要ない。
・小説なので、EPUBファイルから拾い上げるのはルビと圏点、外字程度。

ルビはグループルビのタグがついているし、圏点はsesame(ゴマ)というクラスが指定されている。外字は画像になってるのでそこは「〓」にしておいて校正で対応。

↓InDesignにはタグ付きテキストというのがあって
http://help.adobe.com/ja_JP/indesign/cs/taggedtext/indesign_cs5_taggedtext.pdf
テキストデータにルビや圏点のタグを付けてInDesignに「配置」すればそのままルビも圏点も生かしてくれる。

以下のスクリプトでEPUB3のルビと圏点のタグをInDesignのタグに変換してやれば大丈夫だった。


文字コードでちょっとハマった。
InDesignで「配置」する時、文字コードはShift_JISかUTF16じゃないと文字化けしてしまう。
元にするEPUB3ファイルの文字コードはutf8(BOM無し)。
EPUB3のUTF8をShift_JISにすると文字化けを起こす可能性があるような気がするので、とりあえずutf8のまま上記スクリプトでタグ変換して、エディタで開いて文字コードをUTF16に変換した後、配置した。

Adobeのタグ付きテキストのPDFを見ると、かなり細かく制御できるので、ちゃんと探せばこの手のコンバート系でいろんな強力なツールが出てるはず。
でも、たぶん、そんな継続する案件でもなさそうなので、テキトーな使い捨てスクリプトでやっつけ仕事。
image 
しかし、ほんとニッチな需要もあったもんだ。
ガッテンしていただけたでしょうか。

»電子書籍制作代行についてはこちら

WINDOWSの音声合成Harukaさんは有能だ

2015/10/13 [19:43:35] (火) 天気

音声合成ネタ。
WINDOWSも8から音声合成エンジンがデフォルトで利用可能になったとか(わたしはいまだにwindows7なので伝聞情報)
その日本語音声のHarukaは、ユーザー補助のテキスト読み上げに使われているもので、かなり自然に聞きとれる。macもそうだけど、こういうところは、アメリカさんは、きちんとしっかり対応するんだなあ、と素直に感心してしまった。

マイクロソフトの取り組みとしては

 【Microsoft】日本語音声合成エンジンのご提供について
http://www.microsoft.com/ja-jp/enable/products/7narrator/default.aspx
マイクロソフトでは、障碍 (しょうがい) のある方のパソコン活用に役立てていただくため、日本語音声合成エンジンを無償 (数量限定) でご提供します

という記事が2010年ごろ(?)に上がっていたようだ。

てことで、試したくなったので、検索してみたらば、もう5年以上も前からいろんなブログや掲示板などでノウハウが公開、蓄積されていた…おのれの不勉強に今さらながら呆れてしまう。

無料の音声合成エンジン 「Microsoft Speech Platform 11」
http://mahoro-ba.net/e1541.html
SAPI有効にする方法
http://yarimasu.ankochan.net/d/SAPI%CD%AD%B8%FA%A4%CB%A4%B9%A4%EB%CA%FD%CB%A1
Windows7で音声合成(Text to speech)
http://blog.mogya.com/2012/01/windows7text-to-speech.html
↑こちらのページを参考にWINDOWS7のネットブックにHarukaをインストールした(有用な情報ありがとうございます)

やることは3つ

・Microsoft Speech Platformのインストール
http://www.microsoft.com/download/en/details.aspx?id=27225
x64_SpeechPlatformRuntime.msi(64bit)
x86_SpeechPlatformRuntime.msi(32bit)
↑どっちか。

・TTS音声Harukaのインストール
http://www.microsoft.com/download/en/details.aspx?id=27224
MSSpeech_TTS_ja-JP_Haruka.msi

・レジストリの設定
上記のページを参考に。コマンドプロンプトを管理者モードで立ち上げて

↑をコピペして実行


このユーザー補助に使われる音声、macはコマンドラインでsayコマンドを使えば簡単に利用できたんだけど、WINDOWSがちょっとわからず、結局またperl(Active PerlでWin32)から使うことになってしまった。

読ませたのは『地下生活者の手記』ドストエーフスキイ・米川正夫訳の一節。

「悪人にも、善人にも、卑劣漢にも、正直者にも、英雄にも、虫けらにもなれなかった」

WINDOWSとMacの音声聞き比べ。

「WINDOWS7 SAPI5 Haruka」

「Mac sayコマンド」


WINDOWSもmacも。
OSのデフォルトレベルでここまで聞きとりやすくなってんだなあ。

電子書籍でいうと、これに人名や当て字、ルビを読めれば十分だし、さらに読み上げている箇所のハイライト表示とか、それらの仕込みも実は進んでるんじゃないか。となると、マルチメディアDAISY図書やmedia overlaysによる音声付きEPUB3電子書籍は過渡期の徒花かも。
image【電子書籍と合成音声】
音声付きのEPUB電子書籍 (2014/10/2)
AndroidのTalkbackでkindleを音声読み上げ (2014/11/29)
media overlaysによる音声付き電子書籍の作成 (2015/2/17)
動画で見る音声付き電子書籍の作り方 (2015/2/22)
Windowsで縦書き総ルビの般若心経を読み上げ (2015/2/24)
「眼聴耳視」音声付き電子書籍公開リスト (2015/2/28)
電子書籍につける音声の調教 (2015/3/2)
音声合成聞き比べ (2015/3/13)
WINDOWSの音声合成Harukaさんは有能だ (2015/10/13)
情報のバリアフリー化が進みそうだ (2015/12/7)
MacにOpenJTalkをインストール (2016/6/1)

»電子書籍制作代行についてはこちら

青空文庫のルビや傍点をHTMLタグに変換

2015/9/25 [16:46:57] (金) 天気

小ネタ。
青空文庫形式で書かれたテキストをちょっといじる機会があったんで、例によってperlでごそごそと。

『青空文庫 組版案内』(http://kumihan.aozora.gr.jp)に詳細な資料や、青空記法で書かれたテキストをXHTMLに変換するrubyのスクリプトも提供されている。

青空文庫からXHTMLへはrubyのスクリプトを使わせてもらえばそれで解決なんだけど、用途・前提が青空文庫。当然ながら青空文庫用のcssが埋めこまれる。

電子書籍にするのにそのままでは使えない。
本文で青空記法が使われてるのはルビと傍点、太字程度だったので、その3つをHTMLのタグに変換するスクリプトをでっち上げ。


perlのスクリプト的には、漢字かななどの判定にUnicodeブロックが便利でおすすめ。
無名サブルーチンも便利。


意外なところで青空記法が使われててちょっとびっくりだった。
テキストデータ利用ということで、ボランティアさんが入力するのに青空記法はわかりやすくていいんだろうなあ。


青空EPUBの現バージョン3-1.1.0b45はepubcheckでエラーになる。
原因はnav.xhtmlのlandmark部、「Undefined property:title-page」で、ここを「titlepage」にすれば大丈夫。

image
自転車置き場の新顔…のわりに態度がデカイ。

»電子書籍制作代行についてはこちら

ImageMagickを使わずperlだけで画像サイズを取得

2015/9/18 [23:52:37] (金) 天気

ハイブリッド型EPUB3を生成するスクリプトのフィックスページ部分で画像サイズを取得する必要があった。
「かんたんEPUB3作成ハイブリッド型EPUB3対応版」http://t2aki.doncha.net/easy_epub-hybrid

定番のImageMagickを使えば簡単なんだけど、ImageMagickが簡単じゃなかった。

WINDOWSではImageMagickのインストールが必要で、さらにActivePerlをインストールしたら一緒にインストールされるppmを使ってImageMagickを使うためのperlのモジュールのインストールが必要。ユーザーさんに別途インストールしてもらうにはちょっとハードルが高い。

macはさらに致命的で、macport でインストールしても、パッケージがあったのでそれをインストールしても、ソースからコンパイルしても、肝腎のJPEG、PNGに対応したものを作れなかった(JPEGはどうにかこうにか、まずJPEGのライブラリをインストールしてmakeしなおしたらjpeg対応版ができたけど、PNGがお手上げ)
JPEGにもPNGにも対応したImageMagickを使ってるひとがいるようなので、わたしのスキル、知識不足。だけど、自分でうまく行ってないものをユーザーさんにインストールしてね、というのは無理すぎる。致命的。


「かんたん」を謳う以上、面倒くさいことはひとつでも増えちゃいけない。

てことで、扱うのはJPEGとPNGだけだし、perlだけで画像サイズを取得する方法を探してgoogleさま。

ありがたいことに、そのまま利用できるサブルーチンなどがいくつかアップされていた。
ただ、そのまま=ブラックボックスのまま使わせてもらうと、あとあとメンテの時などに困るのは火を見るより明らか。猿程度の理解は必要だろうと、画像について、その扱いについて調べたので、備忘録。


・PNGは簡単らしい。

16byte4byte4byte
widthheight


16byte目からの4byteに幅、続く4byteに高さのピクセル数が入っているので決め打ち。

幅高さをネットワークバイトオーダーのビッグエンディアン(32bit)で取得するだけでOK。

・JPEGがちょっと面倒。

JPEGというのは複数のセグメントの塊

マーカー2Bytes
セグメントサイズ2Bytes
セグメント本体可変


画像情報を格納しているのはSOFという種類のセグメント。

マーカーというのは16進数の「FF」がセグメントの開始を表していて、これはどういうセグメントですよという内容を意味するのが「FF」に続く1Byteのバイナリ。
SOFセグメントのマーカーで、JPEGのベースラインは「FF」「C0」プログレッシブは「FF」「C2」ということらしい。

ファイルの先頭から見て「FF」が見つかったらそこからセグメントの開始となる(ファイル先頭と最後にはマーカーだけのセグメントがあるので、先頭の2Bytesは読み飛ばす)

必要なのはJPEGの情報が入ったSOFセグメント。

1)
4Bytes読み込む。
2)
unpackでマーカーとセグメントサイズを取得する。

3)
→マーカーの1byteがFFじゃなかったら終了。
→マーカーの1byteがFFでセグメント内容がC0かC2なら続くセグメント本体を読み込む。
→マーカーの1byteがFFでセグメント内容がC0でもC2でもなかったら、セグメントの本体サイズ分読み飛ばして次のマーカーからの4byteを読む

4)
画像サイズはセグメント本体先頭に入っている。

サンプルの精度画像縦サイズ画像横サイズ
1Byte2Byte2Byte


unpackで取得できる。

てことで、easy_epub-hybridに組みこんだサブルーチンが以下。

スクリプトの中からImageMagickを使うシチュエーションのほとんどが画像サイズの取得なので、これは重宝しそうだ。


jpeg画像について、おそらく間違ってるところがあると思うので、きちんとした知識は以下のサイトへどうぞ。

参考にさせていただいたサイト
http://tohoho-web.com/lng/200003/00030402.htm
http://www2c.biglobe.ne.jp/~osakana/vc/pc/jpegsize.html
http://hp.vector.co.jp/authors/VA032610/JPEGFormat/marker/SOF.htm
http://www.setsuki.com/hsp/ext/segment/sof0.htm
情報、丁寧な解説ありがとうございます。


そういえば。Ingress Lv.15になった。なんかAP稼ぎだけで今イチ面白みがなくなってきたなぁ。
image 

»電子書籍制作代行についてはこちら

CotEditorからapplescript経由でperlへ

2015/9/7 [18:53:38] (月) 天気

applescriptというのを初めて触ってみた。
平文でわかりやすいシェルスクリプトて感じ、かな。

WINDWOSのxyzzyでやってるのと同じこと、ほぼ近いことをmacのCotEditorでもやりたい、ということでスクリプトメニューにperlのスクリプトを登録。これは気軽手軽に思ったことができるのでありがたい。外部のスクリプト、perlじゃなくてもrubyやphp、シェルスクリプトが使えるなら万能だ。

ということでやってたんだけど。

外部スクリプトはひとつにして、スクリプト内で処理を振り分けたい。処理単位でスクリプトを作ってスクリプトメニューに登録するとキリがない。それには対話的にユーザー入力をスクリプトで受け取りたい。ユーザーが入力したテキストでも処理を振り分けたい。
→ユーザーの入力を受け取る仕組みが必要。

CotEditorが外部スクリプトの処理した内容を受けとるのは編集中のテキスト上か、あるいは使わないかの2択だけど、外部スクリプトは必ずしもフィルタ的な用途だけじゃない。処理した結果(出力内容じゃなくて、戻り値みたいなもの)を受け取って確認するだけ、とか、選択範囲を処理してその部分をWEBの管理ページにペーストするだけ、とか、できれば元テキストはそのままの状態にしておいて欲しいということもある。
→作業用の新規ドキュメントがあれば助かる。

どちらも、perlやシェルスクリプトなどの外部スクリプトではちょっと難しそう。ていうか、スクリプト側からではアクセスできないこと、かな。

なので、ちょっと調べてみた。
applescriptを使えば、ユーザー入力を取得するdialogを出せる、CotEditorに新規ドキュメントを開くように言うこともできる。

1)テキストに選択範囲があったらば。
dialogを出して、選択範囲のテキストに対してどんな処理をするのか指示を受けとる。
スクリプトに入力されたテキストを引数として渡す。選択範囲のテキストはechoで出力してパイプでスクリプトに流しこむ。
2)選択範囲がなかったら。
ファイル名、パスを見てどんな処理をするのか判断する。
スクリプトにはフルパスのファイル名を引数として渡す。
どちらの場合も出力先は新規ドキュメント「名称未設定」とする。

ごそごそ調べて書いたapplescirpt

↑これを「util-perl.@p.applescript」という名前にして、「~/Library/Application Support/CotEditor/ScriptMenu」フォルダに入れておけばCotEditorで作業していていつでも呼び出せる。

自分環境・自分作業内容に特化したスクリプトで、誰にとっても有用・便利に使えるものではないけど、applescriptにはまったく馴染みがないので、備忘録としてメモしておこう。

明日にはもう忘れているであろう自分のためにもメモが必要なのだ。

[09/07 20:56:44]ちなみに。
applescriptの「do shell script」はスクリプトの標準出力を取得している。
たとえば、perlのスクリプトチェックの「perl -wc」は標準エラー出力。applescriptに出力させるには標準エラー出力(STDERR)を標準出力(STDOUT)に向けてやる必要がある。

perlのスクリプトの中で
open STDERR, ">&", *STDOUT
この1行を該当するサブルーチンに入れておく必要がある。


image 

»電子書籍制作代行についてはこちら

xyzzyとperlの連携でテキスト処理最強環境

2015/9/6 [23:59:56] (日) 天気

こないだからごそごそいじってるxyzzyのマクロとそこから連携するperlのスクリプト。
xyzzyのあまりの便利さ、ラクチンさ、フロントとしての有能さに今さらながら驚いた。もう15年ぐらい使ってるっちゅーのに。

エディタはxyzzy一択だろう(主語:おれ)

自分環境・自分作業内容に特化したマクロなので、誰にとっても有用・便利に使えるものではないけど、備忘録としてメモしておこう。
lispは手強い、というか他とは別モノなので、今回ごそごそ作ってるようなわずか数行のものでもネットで検索しまくり、デフォルトのlispフォルダをgrepしまくってやっと。明日にはもう忘れているであろう自分のためにもメモが必要なのだ。

てことで、先日までのマクロの振り返り。。

1)編集中のバッファの内容をtempファイルに書き出して
2)perlのスクリプトで処理して
3)処理された内容をバッファに読み込む

てところがキモ。

(2)のところ。
今日までは、処理してほしい内容について
(interactive "s[D]elSpace [T]ab4Space [M]akeEPUB [C]heck")
などと、マクロを起動したらperlでどういう処理をして欲しいのか、ユーザー入力を取得してperlに引数として渡すようにしていた。
でも、このユーザー入力のひと手間がけっこう面倒くさい。

面倒くさいものは続かない。そのうち使わなくなるのが目に見えている。
20分ぐらい考えて、macのCotEditorが外部スクリプトの引数に編集中のファイル名(フルパスで)を渡すことを思い出した。この動作をそのままxyzzyのマクロでも使うことにした。

そもそも、マクロを起動したらば。
編集中のファイルの拡張子が.plとか.pmだったらperlのシンタックスチェックをして欲しいし、編集中のファイルがeasy_epubフォルダ以下の.txtファイルだったらeasy_epub.plでEPUB電子書籍を作ってくれ。自分としては、いちいちユーザー入力を待って判定する必要はない。
ファイルと結びつかない新規バッファや*scratch*バッファで作業しているものに関しては、空白の削除やタブを空白4つに変換するなど、その時その場の小ネタ処理で決めうちできないので、ここはユーザー入力で動作を振り分けてもらいたい。

・フルパスのファイル名がわかっているものに関しては、パス・ファイル名を処理・動作の判断にしてくれ。
・ファイル名がわからないものに関しては、指示するからちょっと待てよ。

という自分リクエストを満たしたxyzzyのマクロがこの10行。


やってることは。
01:関数
02:この関数はマクロで呼び出せますよ
03:バッファを書き出すためのtempファイル名の設定
04:編集中のバッファがファイルと結びついてなければどんな処理をするのかユーザー入力待ち
05:tempファイルの削除
06:編集中のバッファをtempファイルに書き出し
07:perlに渡すためのバッチファイル(WINDOWSのダセエところだ)
引数としてフルパスのファイル名と、04の場合の入力された文字。標準入力経由でtemp-file、perlが処理した内容を受けとるところとして「*scratch*」バッファを設定。
08:バッファ全体をマークして
09:バッファをクリップボードにコピー

受けとるperl側は以下。長いのでpackageについては端折るけど。
・フルパスファイル名がわかっているものは、ファイルを読み込んで処理。
・ファイル名がないものは、一行ずつ処理したり、全部読み込んでから処理したり。
(第一引数はファイル名。第二引数がマクロの04で入力した文字)


いやもうほんと滅茶苦茶最強のテキスト処理環境のできあがりだ。
どのぐらい最強かというと、今日まさに立川で観てきた爆音「マッドマックス FR」のお婆ちゃんズぐらい最強だ(実写版ジブリだったなあ)

image 

»電子書籍制作代行についてはこちら

profile

profile

 
doncha.net
名前:
飯田哲章
mail:
t2aki@mrh.biglobe.ne.jp
twitter:
t2akii

WEBサービス制作/電子書籍制作

検索
<<2019/9>>
       
1234567
891011121314
15161718192021
22232425262728
2930

リンク

WINDOWS版サウンドノベル
おかえりください PC WINDOWS版サウンドノベル
『おかえりください』体験版

iPhone電子書籍アプリ
小説同人誌Select iPhone電子書籍アプリ
『小説同人誌Select』

[18 Page]« »
1 2 3 4 5 6 7 8 9 10

TOTAL:2875

2019 (14)
1 (3)
2 (4)
3 (2)
4 (2)
5 (1)
6 (1)
8 (1)
2018 (21)
1 (3)
2 (2)
3 (2)
4 (1)
5 (1)
6 (6)
8 (1)
9 (1)
10 (2)
12 (2)
2017 (32)
1 (2)
2 (1)
4 (2)
5 (1)
6 (6)
7 (3)
8 (5)
9 (3)
10 (2)
11 (2)
12 (5)
2016 (41)
1 (5)
2 (5)
3 (2)
4 (3)
5 (4)
6 (6)
7 (2)
8 (2)
9 (3)
10 (1)
11 (4)
12 (4)
2015 (99)
1 (11)
2 (12)
3 (9)
4 (6)
5 (8)
6 (8)
7 (3)
8 (5)
9 (16)
10 (6)
11 (1)
12 (14)
2014 (112)
1 (16)
2 (5)
3 (6)
4 (12)
5 (16)
6 (19)
7 (9)
8 (6)
9 (4)
10 (8)
11 (6)
12 (5)
2013 (145)
1 (24)
2 (15)
3 (18)
4 (23)
5 (14)
6 (11)
7 (7)
8 (11)
9 (5)
10 (4)
11 (6)
12 (7)
2012 (103)
1 (1)
2 (1)
3 (4)
4 (3)
5 (7)
6 (26)
7 (17)
8 (5)
9 (8)
10 (10)
11 (11)
12 (10)
2011 (54)
1 (4)
3 (7)
4 (4)
5 (14)
6 (6)
7 (3)
8 (3)
9 (1)
10 (4)
11 (2)
12 (6)
2010 (70)
1 (12)
2 (7)
3 (6)
4 (6)
5 (3)
6 (10)
7 (6)
8 (4)
9 (3)
10 (4)
11 (3)
12 (6)
2009 (144)
1 (15)
2 (12)
3 (12)
4 (6)
5 (15)
6 (6)
7 (10)
8 (9)
9 (17)
10 (12)
11 (14)
12 (16)
2008 (148)
1 (10)
2 (6)
3 (10)
4 (11)
5 (13)
6 (10)
7 (13)
8 (19)
9 (18)
10 (12)
11 (13)
12 (13)
2007 (106)
1 (7)
2 (5)
3 (3)
4 (7)
5 (5)
6 (9)
7 (8)
8 (13)
9 (18)
10 (11)
11 (8)
12 (12)
2006 (158)
1 (28)
2 (28)
3 (25)
4 (7)
5 (9)
6 (7)
7 (12)
8 (13)
9 (10)
10 (7)
11 (6)
12 (6)
2005 (350)
1 (31)
2 (26)
3 (26)
4 (27)
5 (29)
6 (30)
7 (32)
8 (30)
9 (30)
10 (32)
11 (29)
12 (28)
2004 (292)
1 (24)
2 (24)
3 (29)
4 (27)
5 (28)
6 (25)
7 (26)
8 (24)
9 (12)
10 (19)
11 (26)
12 (28)
2003 (318)
1 (22)
2 (25)
3 (21)
4 (28)
5 (28)
6 (28)
7 (28)
8 (29)
9 (26)
10 (29)
11 (28)
12 (26)
2002 (317)
1 (29)
2 (26)
3 (26)
4 (25)
5 (28)
6 (30)
7 (27)
8 (21)
9 (25)
10 (27)
11 (28)
12 (25)
2001 (277)
1 (17)
2 (21)
3 (23)
4 (20)
5 (31)
6 (18)
7 (26)
8 (25)
9 (29)
10 (19)
11 (24)
12 (24)
2000 (53)
6 (9)
7 (4)
8 (2)
9 (3)
10 (1)
11 (15)
12 (19)
1999 (3)
7 (1)
10 (2)
1998 (18)
9 (9)
10 (7)
11 (2)