2018/01/03(水)Project Gutenberg と LibriVox のごく簡単な紹介 ~青空文庫にはない特徴を中心に~
2018年になってしまいましたが、こちらは「青空文庫 Advent Calendar 2017」の25日目の記事です。大学院生の頃、英語の勉強も兼ねて、ちょこっとだけ青空文庫の海外版とも言える Project Gutenberg を利用したことがあるので紹介してみたいと思います。
Project Gutenberg
U.S. の著作権法での保護期間を過ぎた作品が大部分の電子本を扱うサイトです。著作権保持者が非商用利用での使用許可を出している作品などもあります。
注意事項としては、Project Gutenberg の作品へのリンクを貼るときはファイルへのリンクを貼ってはならない(Do not link)ということです。リンクを貼る場合は https://www.gutenberg.org/ebooks/11 のようにランディングページへリンクするといいようで、特定の作品のリンクが必要な場合は、作品を自身のサーバにコピーしてそこからリンクさせるよう指示があります。
青空文庫とは違って、物語テキストだけでなく、以下のような著作権法の保護期間の切れた音楽・映像・音読もあります↓
「Ride of the Valkyries by Richard Wagner and American Symphony Orchestra」
日本語訳で知っている作品なら英語の勉強にも易しいかと思います。
LibriVox
LibriVox は Project Gutenberg の The Audio Books Project と提携しているサービスの1つで、パブリックドメインの本の音読・朗読が掲載されています。The Audio Books Project と提携しているサイトの中でおそらく1番作品数の多いサイトだと思われます。
以下によると、こちらにアップロードした音読・朗読作品もまたパブリックドメインになります。
LibriVox volunteers record chapters of books in the public domain, and then we release the audio files back onto the net for free. All our audio is in the public domain, so you may use it for whatever purpose you wish. Please note: Our readers are free to choose the books they wish to record. LibriVox sees itself as a library of audiobooks. Because the books we read are in the public domain, our readers and listeners should be aware that many of them are very old, and may contain language or express notions that are antiquated at best, offending at worst.
https://librivox.org/pages/about-librivox/ より。
日本語の音読もあります。
中原中也の「サーカス」(音読:meronpan さん)
詩集のような作品で、セクション(1つの詩)ごとに複数の人・言語で音読しているものもあるのが興味深いです。
青空文庫が学ばねばならない点があるだろうと思って、パブリックドメインの近しい海外のサービスを紹介してみました。以上で「青空文庫 Advent Calendar 2017」はおしまいです。執筆者の方々に感謝。2018年はどなたが「青空文庫 Advent Calendar」を作ってくださるのか楽しみです😸
2017/12/12(火)「青空朗読」の紹介【音声同期Epub】
こちらは「青空文庫 Advent Calendar 2017」の11日目の記事です。10日目は @null さんの「null」でした。(つまり発表者がいませんでした😭)
Qiitaだと直接はプログラミングに関係のない記事を書くと削除されるおそれがあるので、決して他者に消されぬようにと、このブログを用意していて随分と間が空いてしまいました。
今回は「音声同期Epub」を中心に「青空朗読」を紹介をしたいと思います。
青空朗読とは
「青空文庫」の作品の…
- 朗読を聴ける
- 朗読を投稿できる
Webサイトです。
朗読作品を探す
以下の画像の通り「作品名」「作家名」「朗読担当者名」「ジャンル」「朗読時間」「(あらかじめ用意された)キーワード(タグのようなもの)」で探すことができます。
朗読を聴く
Webサイト上で聴く
大多数の方がこれで充分かと思います。audio
要素で出力されるインターフェースでよしなに聴くのみです。
音声同期Epubファイルで聴く
ファイルの開き方は「Epub(イーパブ)のご利用方法」に書いてあるので省略します。開くと以下のように読み上げ中の部分がハイライトされます。著作権法上、音声までは収録できませんでした。😅
文字が読めない方や子どもの反応が良かった云々という話を「青空文庫20周年記念シンポジウム」で聞いたような気がします。(記憶が曖昧です。)
音声同期Epubファイルの中身を見てみる
EPUBファイルはZIPファイルなのでMac上で拡張子を「zip」に変えてダブルクリック……ではどういうわけか「cpgz」という拡張子の謎のファイルが生成されたので、コマンドラインから「unzip
」を唱えました。
ディレクトリ構造
tree
コマンドでファイル構成を見ると、以下の通り、一般的なEPUBファイルという具合でした。
epub/
├── META-INF
│ └── container.xml
├── item
│ ├── image
│ │ └── cover.jpg
│ ├── js
│ │ ├── p-001.xhtml.smil.js
│ │ └── rb_smil_emulator.js
│ ├── navigation-documents.xhtml
│ ├── standard.opf
│ ├── style
│ │ ├── book-style.css
│ │ ├── image-center.css
│ │ ├── style-advance.css
│ │ ├── style-reset.css
│ │ └── style-standard.css
│ └── xhtml
│ ├── p-001.smil
│ ├── p-001.xhtml
│ ├── p-caution.xhtml
│ ├── p-colophon.xhtml
│ ├── p-cover.xhtml
│ └── rd115.mp3
└── mimetype
6 directories, 18 files
どのように音声同期を実現しているか
「Synchronized Multimedia Integration Language(SMIL)」と「EPUB Media Overlays 3.0」で実現されていました。
前者はWikipediaの記事では以下のように説明されています。
Synchronized Multimedia Integration Languageは、WWW上でマルチメディアコンテンツを表現するためのマークアップ言語の一つである。静止画、動画、音声、文字(テキスト)などの、位置レイアウト、時間軸上でのレイアウトを、Extensible Markup Language (XML) フォーマットで記述することで統合し、再生させることができる。略称はSMILで、スマイルと読む。同期マルチメディア統合言語と日本語訳されることもある。
後者の仕様は日本語版では以下のように説明されてます。
EPUB Media Overlays 3.0 は、EPUB Content Document と同期する音声表現用に、[SMIL](同期マルチメディア統合言語)、Package Document、EPUBR Style Sheet、および EPUB Content Document の使用方法を定義する。
つまり、「EPUB Media Overlays 3.0」の仕様に従って「Synchronized Multimedia Integration Language」でどういうタイミングで同期するかを記述することでEPUBリーダーでよしなに再生できるようになるのでしょう。
rb_smil_emulator.js
EPUBファイルに含まれていたこのJavaScriptファイルは「EPUB Media Overlays」仕様を適切にサポートしていないプラットフォーム上でタップして再生を可能にするライブラリのようです。
This Javascript file enables the tap-to-play function on those platforms that do not properly support the EPUB 3 Media Overlay specification (most notably, Apple iBooks).
SMILファイルでの同期の記述
p-001.smil
ファイルの中身を見ると、朗読ファイルである rd115.mp3
の再生開始位置と再生終了位置がテキストごとに記述されていました。
<?xml version="1.0" encoding="UTF-8"?>
<smil xmlns:epub="http://www.idpf.org/2007/ops" xmlns="http://www.w3.org/ns/SMIL" version="3.0">
<body>
<seq id="s000001" epub:textref="p-001.xhtml">
<par id="p000001">
<text src="p-001.xhtml#S000001"/>
<audio src="rd115.mp3" clipBegin="0.000" clipEnd="2.828"/>
</par>
<par id="p000002">
<text src="p-001.xhtml#f000001"/>
<audio src="rd115.mp3" clipBegin="2.828" clipEnd="6.287"/>
</par>
<par id="p000003">
<text src="p-001.xhtml#f000002"/>
<audio src="rd115.mp3" clipBegin="6.287" clipEnd="11.416"/>
</par>
・・・
</seq>
</body>
</smil>
text
要素のsrc
属性でどのテキストかが指定されていました。p-001.xhtml
を head -n 18
で見ると以下の通りになっています。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns:epub="http://www.idpf.org/2007/ops" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" class="vrtl">
<head>
<meta charset="UTF-8"/>
<title>注文の多い料理店</title>
<link href="../style/book-style.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="../js/rb_smil_emulator.js"></script>
<script type="text/javascript" src="../js/p-001.xhtml.smil.js"></script>
</head>
<body class="p-main">
<div class="main">
<p><span id="S000001"/><span id="f000001">宮沢賢治 作</span></p>
<p><br/></p>
<p><span class="bold" id="f000002">注文の多い料理店</span></p>
<p><br/></p>
<p><br/></p>
<p> <span id="f000003">二人の若い紳士が、</span><span id="f000004">すつかりイギリスの兵隊のかたちをして、</span><span id="f000005">ぴか〳〵する鉄砲をかついで、</span><span id="f000006"><ruby>白熊<rt>しろくま</rt></ruby>のやうな犬を二<ruby>疋<rt>ひき</rt></ruby>つれて、</span><span id="f000007">だいぶ山奥の、</span><span id="f000008">木の葉のかさ〳〵したとこを、</span><span id="f000009">こんなことを<ruby>云<rt>い</rt></ruby>ひながら、</span><span id="f000010">あるいてをりました。</span></p>
このようにしてテキストと音声の同期が行われていることが確認できました。
朗読の投稿
メールで送る形式を取られています。音声ファイルは「宅ふぁいる便」「データ便」などのインターネットのファイル転送サービスを利用するして送付するようです。「掲載の可否は試聴した上での判断」とあるように、品質のチェックはやや厳しそうです。
投稿した朗読ファイルの権利回りの詳細は不明です。今度、お会いする機会があれば訊いてみたいところです。
まだまだ「青空文庫 Advent Calendar 2017」への参加者を大募集中です!