フォーマット・ファイル・DRM

Android で EPUB3 Media Overlays を再生する

Media Overlay は、EPUB3 のテキストと、人の声の録音、SMIL のタイミングデータを組み合わせ、読書アプリがいま読まれている箇所をハイライトできるようにします。Lectern はこれを自動的に検出します。本を開いて「聴く」をタップすると、そのエディションに使える Overlay が含まれていれば、Lectern は音声を生成する代わりに録音された音声を再生します。

短い説明:Media Overlay とは、SMIL タイミングファイルによってテキストと同期された、本物の録音のことです。音声合成ではなく、出版社や Storyteller のようなツールが制作した場合にのみ存在します。Lectern は SMIL データを自動的に読み取り、見つかれば音声を生成する代わりに、その録音を現在のテキストをハイライトしながら再生します。

Media Overlay とは実際には何か

EPUB3 の Media Overlays は、EPUB 内部に同梱された SMIL ファイルです。各 <par> 要素は、本の XHTML の一部(text 参照。たいてい出版社が id を付けた段落や文)と、音声ファイルのクリップ(clipBegin と clipEnd を持つ audio 参照)を組み合わせます。そのクリップを再生すれば、それがテキストのどの部分にあたるかが正確にわかります。この組み合わせを数百個積み重ねると、プロのナレーターが読み上げるあいだ、読書アプリが文単位、あるいは段落単位でハイライトできる本まるごとになります。

これは本当に任意の要素です。EPUB3 の仕様上、必須のものは何もなく、制作には実際のスタジオ収録時間か、既存のオーディオブックに対するフォーストアライメント処理が必要になります。そのため、最近のものも含めて、ほとんどの EPUB3 ファイルにはこれが含まれていません。

Lectern の音声読み上げとの違い

Lectern はもともと、端末内の音声(Piper と Kokoro のニューラル音声、それにシステム音声)で読み上げている文をハイライトしています。この側面については同期ハイライトが読書をどう変えるかを参照してください。Media Overlay は同じ発想を別の音源で実現したもので、1 回の再生セッション内でこの 2 つを切り替えて使うことはできません。

 Media Overlay のナレーションLectern の音声読み上げ
音声出版社やナレーターによる実際の録音合成音声(システム、Piper、Kokoro)
専用エディションが必要必要。EPUB に音声と SMIL が埋め込まれている必要がある不要。Lectern が読めるどの本でも動作
音声・言語の選択録音されたものに固定ダウンロード済みの音声と言語から自由に選択
ハイライトの粒度SMIL が参照する断片次第。たいてい段落か文で、それ以上は細分化されない段落内で文単位
速度調整可能。音声読み上げと同じ速度設定を使用可能
オフライン動作可能。ファイルが端末にあれば動作可能。完全に端末内で処理

Lectern が Media Overlay を再生する仕組み

オンにする専用モードはありません。音声読み上げやリンクしたオーディオブックを開始するのと同じ「聴く」操作が、まず本の中身を確認します。Media Overlay が埋め込まれていれば、Lectern は音声を生成する代わりにそちらを再生します。

  1. 本を開いて「聴く」をタップします。Lectern はインポートとスキャンの時点で本に埋め込まれた SMIL データを読み取っているので、ナレーションが内蔵されているかどうかはすでに把握しています。
  2. 内蔵ナレーションが再生され、現在のテキストが光ります。リーダー設定シートの「オーディオ」タブでは、「再生方法」の項目に、音声読み上げやリンク済みのオーディオブックファイルと並んで「内蔵ナレーション」として表示されるため、どの音源が使われているか確認できます。
  3. 文をタップするとそこへ移動します。テキストをタップすると、TTS 再生のときと同じように、対応するクリップまで録音がシークします。
  4. ロック画面、通知、Bluetooth の操作もいつもどおり使えます。Media Overlay の再生も、Lectern の他のナレーションと同じフォアグラウンドのメディアセッションを通ります。ロック画面やヘッドセットのボタンでの再生・一時停止、本のタイトルが表示される通知に対応します。
  5. 再生中は画面が点いたままになります。その読書設定を有効にしている場合、音声読み上げの再生時とまったく同じ挙動です。

音声が録音そのものに固定されているため、通常の音声・言語の選択メニューはここでは使えません。合成音声のほうを聴きたい場合や、ある章の録音が欠けている場合は、オーディオタブに「代わりに音声読み上げを使用」という切り替えがあり、元に戻すための「読み合わせナレーションを使用」という逆方向の切り替えも同じ場所にあります。

章や本全体に Overlay がない場合

ナレーション付きエディションでも、すべての章に音声があるとは限りません。前付けや付録が未収録のままになっていることもあります。ナレーションのないセクションで再生をタップすると、Lectern は「ここにはナレーションがありません」という短い通知を表示し、読んでいた位置を保ったまま、その部分を音声読み上げで読み上げることを提案します。

Media Overlay がまったくない本の場合は、特に気づくことすらありません。「聴く」操作は、ライブラリの他の本と同じように、そのまま音声読み上げを開始するだけです。

固定レイアウトの EPUB3

固定レイアウトの EPUB3、つまりリフロー可能なテキストではなくページ全体の画像でできているものは、通常はリフローリーダーではなく Lectern のコミックビューアーで開きます。ただし Media Overlay 付きの本は例外です。Lectern はそうした本を通常のリーダーのまま開くため、ナレーション付きの絵本でも内蔵ナレーションとハイライトがそのまま機能します。その代わり、テキストがリフローされて表示されるため、元のページデザインは再現されません。

Storyteller の EPUB3 を Lectern に取り込む

Storyteller は、DRM フリーの電子書籍と対応するオーディオブックを同期させ、Media Overlay 付きの標準準拠 EPUB3 として書き出す、セルフホスト型のサーバーです。すでに持っている本の、本物のナレーション付きエディションを手に入れる、比較的現実的な方法のひとつです。導入するかどうか迷っている場合は、Calibre-Web と Storyteller の比較を参照してください。

  1. Storyteller をセットアップします。セルフホスト OPDS ガイドで Docker Compose での構築方法を説明しています。DRM フリーの電子書籍と対応するオーディオブックを追加し、アライメント処理が終わるのを待ちます。全体の中でもっとも計算負荷が高い工程なので、しばらく時間がかかることがあります。
  2. Storyteller を Lectern のカタログとして追加します。空のライブラリでも既存のライブラリでも、本の追加フローを開き、一般的な OPDS フィードの項目ではなく、セルフホストカタログの中から Storyteller のオプションを選びます。サーバーのアドレスと Storyteller のユーザー名・パスワードを入力して接続します。
  3. ヘッドフォンのバッジを探します。カタログ内で、本の表紙に小さなヘッドフォンのアイコンが付いていれば、Lectern がその項目で使える読み合わせ用の取得先を認識したという意味です。バッジがないからといって必ずしもナレーションがないとは限りません。フィード側が Lectern に確実に伝わる形で対応を示している必要があるためです。迷ったら、ダウンロード後に本を開いて確認してください。
  4. 本をダウンロードします。他のインポートと同じように、通常のオフラインライブラリに加わります。それ以降、Lectern は Storyteller サーバーへ接続する必要がなくなります。音声と SMIL のタイミング情報は EPUB ファイル自体に含まれています。

他の場所からすでに Media Overlay 付きの EPUB3 ファイルを入手していて、ファイルマネージャーでコピーしたりフォルダ同期で持ち込んだりした場合は、通常どおりインポートするだけで十分です。Lectern はインポートとスキャンの際に埋め込まれた SMIL を解析するので、切り替えるべき個別の設定はありません。

トラブルシューティング

  • 「聴く」で合成音声しか選べず、ナレーションを期待していた場合。そのファイルは Media Overlay をまったく含まない普通の EPUB3 かもしれません。この機能は任意のもので、ほとんどの本には含まれていません。ファイルに音声と SMIL が埋め込まれているはずなのに Lectern が見逃したと思われる場合は、一度その本を開いてみてください。開くと Lectern が内容を読み直し、ナレーションの情報を更新します。
  • ある章だけ無音になる。ナレーション付きエディションでも、最初から最後まで収録されているとは限りません。その部分は Lectern が用意している音声読み上げへの切り替えを使い、ナレーションが再開したら元に戻してください。
  • ハイライトが 1 文ではなく段落まるごと移動する。これは想定どおりの挙動です。Lectern は出版社の SMIL が指し示す断片をそのままハイライトし、録音が許す以上には細分化しません。
  • 別のナレーターや別の言語で聴きたい。内蔵ナレーションが有効なあいだは、固定された録音を再生しているため不可能です。オーディオタブで「代わりに音声読み上げを使用」に切り替えれば、ダウンロード済みの好きな音声を使えます。
  • ナレーション付きの絵本が、固定ページではなくリフローされたテキストとして開く。これは意図的な挙動です。Media Overlay 付きの固定レイアウト EPUB3 は通常のリーダーのまま保たれるため、ナレーションが引き続き機能します。
  • Storyteller カタログの項目がダウンロードできない、またはナレーションなしでダウンロードされる。サーバー側でまだアライメント処理が進行中の可能性があります。Lectern は EPUB の取得先だけをダウンロードし、本として開けないものを取り込まないよう、音声のみの項目は意図的に無視します。

よくある質問

Media Overlay の再生にインターネット接続は必要ですか。

いいえ。音声が埋め込まれた EPUB3 ファイルが端末にあれば、Lectern の他の部分と同じく、再生は完全にオフラインで行われます。

Media Overlay のナレーション速度は調整できますか。

はい。音声読み上げと同じ再生速度の設定を使うため、録音を遅くしたり速くしたりする操作も同じように働きます。

このような本を手に入れる方法は Storyteller しかありませんか。

いいえ、すでに持っている電子書籍とオーディオブックから作る、現実的なセルフホストの方法のひとつというだけです。埋め込まれた Media Overlay のタイミングが正しい互換 EPUB3 であれば、この方法で Lectern で再生できます。見慣れない出版社のファイルは、頼りにする前に一度試してみてください。

リンクしたオーディオブックファイルでも、Media Overlay と同じハイライトが得られますか。

いいえ。単にリンクしただけのオーディオブックは音声だけの再生で、追跡されるハイライトはありません。録音と連動した同期ハイライトを実現するのは EPUB3 の Media Overlay だけです。

本物のナレーションと一緒に読む

Lectern は本に Media Overlay があれば自動的に再生します。オフラインで、他のナレーションと同じロック画面操作のまま使えます。

手に入れようGoogle Play