HN 日本語サマリー

← 一覧へ戻る
AI・機械学習

没入型読書体験の自動化

Automating Immersive Reading (smoores.dev)

13 pointsby smoores1 コメント

要約

この記事では、Storytellerというソフトウェアの「強制アラインメントアルゴリズム」について解説しています。Storytellerは、電子書籍とオーディオブックを自動的に同期させ、電子書籍の各単語がオーディオブックのどこで話されているかを特定します。この技術により、読書中にナレーターの声に合わせて文章がハイライトされる没入型の読書体験が可能になります。章の順序の違い、章の欠落、一部のフレーズのスキップ、単語の選択の違いなど、電子書籍とオーディオブック間の差異を克服するためのアルゴリズムの課題と工夫が詳細に説明されています。

全文翻訳

没入型読書体験の自動化 Storytellerの強制アラインメントアルゴリズムの仕組み。 すべての子供は、一人の例外を除いて、成長します。彼らはすぐに成長することを知り、ウェンディが知った方法はこれでした。ある日、彼女が2歳だったとき、庭で遊んでいて、別の花を摘んで母親に駆け寄りました。彼女はとても可愛らしく見えたに違いありません。ダーリング夫人は心臓に手を当てて叫びました。「ああ、なぜあなたはいつまでもこのままでいられないの!」これだけが、この件に関して彼女たちの間に交わされたことでしたが、それ以来ウェンディは成長しなければならないことを知りました。2歳を過ぎれば、いつでもわかります。2歳は終わりの始まりです。 再生 一時停止 10 秒 後ろにスキップ 10 秒 前にスキップ 0:00 0:00 ピーターとウェンディ J. M. Barrie Storytellerは現在、フルスタックWebアプリケーション、AndroidおよびiOS向けのネイティブアプリ、KOReaderプラグイン、そして今後のmacOS、watchOS、tvOSアプリを含む、広大なソフトウェアエコシステムとなっています。私たちは上記のv3リリースをアルファおよびベータテスト中で、更新されたUI、大規模な新しいライブラリ管理機能スイートなどを提供します。私たちが取り組んできたことを皆さんに紹介できることを本当に楽しみにしています! しかし、Storytellerの中核はそのアラインメントアルゴリズムにあります。Storytellerは、提供された電子書籍とオーディオブックを同期させ、電子書籍の各単語がオーディオブックのどこで話されているかを見つけます。これは、ユーザーの入力なしに自動的に行われます。次に、EPUB仕様に組み込まれているMedia Overlaysと呼ばれるオーディオ同期システムを使用して、オーディオと同期情報をEPUBに埋め込みます。これにより、上記のデモ(実際のStorytellerアラインメントを使用しています!)のように、リーダーアプリがナレーターによって読み上げられる各文をハイライトしながら、没入感を持って本を読むことができます。 当初、Storytellerは単なるPythonスクリプトでした。それは1つのオーディオブックファイルと1つの電子書籍ファイルを処理し、オーディオ同期メタデータを持つ新しいEPUBファイルを出力しました。当時、これらのファイルを利用できる電子書籍リーダーアプリは非常に少なく(デバイスはゼロでした)、その機能のためにEPUB Media Overlay仕様を使用していました。私は自分のコンピュータでスクリプトを実行し、結果のEPUBを電話にコピーし、BookFusionの初期のMedia Overlayサポートを使用して本を読んだり聞いたりしました。 当時、私は意図せずにこの強制アラインメントの分野に飛び込んでいたのですが、その分野について全く知りませんでした。最初のアラインメントアルゴリズムは、ぎこちないネストされたwhileループのぐらついた構築物でした。光がそこにあることはわかっていたものの、それを見ることができず、暗闇の中を手探りで進んでいるような気分でした。 課題 それでも、いくつかの洞察を得ることができました。既存の強制アラインメントツールは、電子書籍とオーディオブックのアラインメントというこの特定のタスクのために設計されたものでさえ、書籍に共通するいくつかの課題に苦労していましたが、私の最初の初期の試みでさえ(様々な成功度合いで)これらを処理しました。 章の順序 電子書籍とオーディオブックは、章の順序が異なる場合があります(そしてしばしば異なります)。たとえば、電子書籍のフロントマター(献辞など)と見なされるコンテンツは、オーディオブックでは最後に読まれる場合があります。なぜなら、オーディオブックはコンテンツからすぐに開始しようとすることが多いからです。 Tress of the Emerald Sea Brandon Sanderson 謝辞 この本を思いつきで書き始めましたが、プロジェクト全体がどこに向かうのか全くわかりませんでした…謝辞。なんて素晴らしい旅でした。 Tress of the Emerald Seaでは、謝辞は電子書籍の冒頭にありますが、オーディオブックの最後に来ます。 章の存在 各フォーマットには、もう一方には完全に欠けている章が含まれている可能性が非常に高いです。付録、まえがき、目次—これらはオーディオブックではほとんど常にスキップされます。また、オーディオブックには、電子書籍には存在しない小さな章が含まれていることもよくあります。 You Just Need to Lose Weight Aubrey Gordon 謝辞 この本は、多くの人々の努力と並外れた寛大さによって可能になりました。 You Just Need to Lose Weightでは、電子書籍の最後に謝辞の章がありますが、オーディオブックには全く存在しません。 スキップされたスパン オーディオナレーションでコンテンツの小さなスパンがスキップされたり、オーディオブックに電子書籍にはないコンテンツ(画像の説明など)が含まれたりすることがあります。 Siddhartha Herman Hesse 翻訳 Hilda Rosner 電子書籍 これらはSiddharthaの考えでした。これが彼の渇望、彼の悲しみでした。彼はしばしば、チャンドーギヤ・ウパニシャッドの一節を自分に繰り返しました。「真実において、ブラフマンの名前はサティヤです。確かに、それを知る者は毎日天国に入ります。」天国はしばしば近くにあるように思えましたが、彼は決して完全に到達できず、最終的な渇望を癒すことはありませんでした。 オーディオブック これらはSiddharthaの考えでした。これが彼の渇望、彼の悲しみでした。天国はしばしば近くにあるように思えましたが、彼は決して完全に到達できず、最終的な渇望を癒すことはありませんでした。 RosnerによるSiddharthaの翻訳では、オーディオブックのナレーションは電子書籍のいくつかの文をスキップしていますが、それ以外はテキストと一致しています。 代替の単語選択 オーディオブックのディレクターやナレーターは、元の単語が流暢に話しにくい、または読み上げると不自然に聞こえる場合に、意図的に異なる単語やフレーズを選択することがあります。また、間違いを犯すこともあります! You Didn’t Hear This From Me Kelsey McKinney 電子書籍 例えば、この本を読むことは、あなたの家族を養ったり、体を守ったりすることにはなりません。 オーディオブック この本を聞くことは、例えば、あなたの家族を養ったり、体を守ったりすることにはなりません。 You Didn’t Hear This From Meのようなノンフィクションの本では、「読む」や「読書」という言葉を「聞く」や「リスニング」に置き換える必要があることがよくあります。 これらのうち、比較的基本的な強制アラインメントシステムでさえ、代替の単語選択は一般的に問題なく処理できます。スキップされたスパンは、特にオーディオがテキストのスパンをスキップする場合、困難になることがありますが、結果は通常壊滅的ではなく、不完全なだけです。 しかし、章の欠落や順序の変更は、多くの強制アラインメントツールにとって致命的な問題となる可能性があります。Storyteller以前に存在したsyncabookのようなツールでは、ユーザーは事前にどの電子書籍の章がどのオーディオブックの章に対応するかを特定する必要がありました。これは非常に手動で、かなりの難易度を伴います。なぜなら、多くのオーディオブックには章のメタデータや適切な章ごとのファイルさえ存在しないからです。 私はもっと良いことをしたいと思いました。それはこの問題を解決することを意味しました。私は検索アルゴリズムを必要としました。 前提条件:境界検索 実際の強制アラインメント問題を見る前に、テキストの特定の章がオーディオのどこにあるか(もしあれば)を(大まかに)見つける必要があります。 前提条件の問題としては、これは…ええと…かなり困難です。まだアラインメントを行っていないため、オーディオの音声コンテンツに関する情報は何もありません。完璧な文字起こしがあったとしても(それを取得する方法はありません¹ — これを行うことが、後で解決する必要のある強制アラインメント問題です)、章の内容をスキャンすることはできません。なぜなら、完璧な文字起こしでさえ、ベースラインの電子書籍テキストから逸脱するからです。 だから、簡単なことはできません。しかし、完全で正確な文字起こしを得ることはできなくても、そのテキスト表現の一部を得ることはできます。Massively Multilingual Speech2モデルを使用してCTCエミッションを生成し、それらのエミッションを貪欲にデコードしてテキストを生成できます…。さて、前の専門用語を説明します。かなり深く掘り下げます。グラフィックもあります。 CTC、Wav2Vec 2.0、およびMMS Connectionist Temporal Classification(CTC、はい、Duneの何かのように聞こえます)は、10年以上にわたり、自動音声認識と強制アラインメントの定番となっています。それは本質的に損失関数です。機械学習モデルが出力を評価し、自己トレーニングするために使用する関数です。この損失関数を扱うために、モデルには「CTCヘッド」を含める必要があります。これは「CTCエミッション」を出力するレイヤーです。エミッションはCTCが使用する中間表現です(これについては後ほど詳しく説明します)。 CTCヘッドを使用するモデルはすべて同じ形状の出力を生成するため(前述のCTCエミッション