視覺小說自動閱讀怎麼等:分清語音結束、文字讀完與演出完成
一句對白能否自動推進,要分別檢查文字顯示、閱讀等待、語音結束和必要演出,再確認讀者沒有接管。用溫室裡的三句虛構對白,填寫一張可以交給演出與實作人員的自動閱讀等待規則表。

開篇導讀
自動閱讀應在文字完整顯示、約定的閱讀等待已滿足、當句語音自然結束、必要演出完成,而且讀者沒有暫停接管時,才允許進入下一句。這些條件同時成立,才取得「自動推進資格」;任何一個訊號都不應獨自觸發換句。
以下的溫室段落是原創虛構教學範例,不是真實使用者案例、實測結果、實際操作測試或 DramaFork 產品功能。園藝師先說出有配音的提醒,隨後出現無配音旁白,最後等待窗簾拉開。我們用這個例子制定逐句規則,不預設任何特定引擎。
一、先區分可觀察的完成與無法確認的理解
「文字顯示完」可以觀察,「讀者讀完」卻不能只靠計時確認。因此,企劃應將後者寫成可執行的閱讀等待規則,並允許讀者調整和暫停,不要把倒數結束解釋成已經理解。
本例採用一種明確的方案:從當句最後一個字完整顯示時開始,累計閱讀等待時間;等待時間依本句可見文字的長度與讀者選擇的等待檔位決定。標點如何計入也要寫入專案規則,有聲句與無聲句須使用同一套標準。本文不提供適合所有人的固定速度。
語音與閱讀等待可以並行。假如語音較長,就繼續等語音;假如文字等待較長,就保留文字。這裡不會在語音結束後,再重複追加一次完整的閱讀等待。另一種方案是聽完再計時,這能留出專門回看文字的時間,但也會讓短句更容易產生停頓感。兩種方案都可行,不能在同一段落裡未經說明就混用。
二、把五類條件寫進等待規則表
先為每句登記是否有語音、是否有阻擋推進的演出,再填寫下表。未配音是一種已知設定,播放失敗則是異常,兩者不能共用「已經結束」的標記。
| 檢查項 | 本例採用的規則 | 可觀察的放行依據 |
|---|---|---|
| 文字完成 | 當句全部文字已經顯示 | 收到當句完整顯示訊號 |
| 閱讀等待 | 全文顯示後,依句長和使用者檔位累計 | 當句有效等待時間達到約定長度 |
| 語音結束 | 有聲句等待自然播完;無聲句明確免除 | 當句結束訊號,或預先登記無配音 |
| 演出阻擋 | 只等待列入當句阻擋清單的演出 | 清單內每項都達到指定完成狀態 |
| 暫停接管 | 自動模式開啟,而且沒有接管狀態 | 讀者未暫停、未開啟歷史紀錄或選單 |
使用者的等待設定不是另一個獨立倒數,而是決定閱讀等待時間的輸入。本例在進入一句時讀取檔位;若讀者中途開啟設定並修改檔位,先暫停,明確恢復後依新檔位重新計算當句等待時間,從零開始累計。這樣會多等一次,卻能避免剛選慢速就立即換句。
「演出完成」必須指向具體狀態。例如本例寫「窗簾到達全開位置」,不寫「畫面差不多好了」。溫室裡循環播放的光塵不列入阻擋清單,否則沒有終點的裝飾效果會讓句子永遠無法推進。
三、沿三句話逐次判斷推進資格
第一句是園藝師的有聲提醒:「先別碰那盆幼苗,等我把窗簾拉開。」這句只說出提醒,還不啟動拉簾。文字顯示完後開始閱讀等待,語音繼續播放;即使等待先滿足,也不能推進。等配音自然結束,再檢查自動模式和暫停狀態,條件齊全才進入旁白。
若配音先結束,文字還在逐字出現,就繼續等全文顯示,再完成閱讀等待。可見,語音結束只解除語音這一項限制,不能證明文字已經停留足夠的時間。需要從配音中刪去停頓時,也應重新推演先後順序,而不是預設原本的節奏仍然成立。
第二句是無配音旁白:「他把手套放在長凳上,溫室裡只剩葉片摩擦的輕響。」這句預先登記為無聲句,沒有必須等待的演出。全文顯示後累計閱讀等待時間,滿足後即可取得資格,不需要偽造一個音訊結束事件,也不能因為沒有音訊而直接跳過。
第三句是無聲文字:「窗簾向兩側退去,第一束光落在育苗盤上。」進入本句時啟動拉簾,並將「窗簾全開」登記為阻擋條件。如果閱讀等待已經滿足,窗簾仍在移動,就留在當句;如果窗簾先全開,則繼續完成文字等待。兩項都滿足後,才進入下一句園藝師的說明。
這三句分別涵蓋語音等待、無聲等待和演出等待。交付時逐句記錄進入狀態、各項完成次序、最後解除的限制,以及是否推進;不必捏造秒數,也能檢查邏輯是否一致。
四、讀者接管後,恢復必須是明確動作
本例約定:讀者點擊正文、開啟歷史紀錄、進入選單或主動關閉自動模式時,先暫停自動推進。正文點擊若發生在文字尚未完整顯示時,這次只補全當句;文字已完整時,這次只暫停。後續手動推進另依手動規則處理,不讓同一次輸入順帶換到下一句。
暫停期間停止累計閱讀等待時間。語音和演出是否繼續播放應另行約定:本例的一般正文接管允許它們繼續播放,開啟選單則暫停可暫停的播放。無論採用哪種播放策略,暫停期間收到的完成訊號都只能更新狀態,不能觸發推進。
關閉歷史紀錄或選單不會自動恢復。讀者明確選擇繼續自動閱讀後,當句文字保持完整,閱讀等待從零開始;已經自然結束的語音、已經完成的拉簾不重複執行,尚未完成的項目繼續等待。代價是恢復時可能多停留一會兒,好處是不會剛返回正文就跳走。
若讀者已經手動進入下一句,舊句的等待紀錄隨即失效。舊語音遲到的結束訊號,也不能替新句解除限制。因此,完成訊號應一併記錄所屬句子的識別資訊。
五、異常要有處理出口,適用範圍要寫清楚
配音載入失敗、遭中斷或被手動停止,都不等於自然播完。本例遇到這些情況時會暫停自動模式,並提供重試或明確將當句切換為無聲閱讀的操作入口;選擇無聲閱讀後,須重新完成閱讀等待。不要用一個隱藏的逾時機制,將所有異常悄悄解釋為成功。
拉簾尚未到達全開狀態時,同樣保留阻擋條件。若設計允許跳過,應把「跳過後直接呈現全開狀態」寫成獨立規則;僅停止動畫,卻讓窗簾停在半開位置,不能算演出已完成。
交付前,用三句例子檢查語音先結束、文字等待先滿足、拉簾先完成、暫停時收到結束訊號,以及舊句訊號遲到等次序。每次都應能指出尚未滿足的具體條件,而不是只記錄「卡住了」或「換得太快」。
這份規則適用於逐句推進的線性閱讀段落。進入選項、需要持續操作的場景,或沒有明確終點的演出時,應退出這套自動推進流程,交給對應的互動規則。等待表能夠說明何時允許推進,不能證明每位讀者都已經理解。






