test+docs: 「对白没读完」教训固化到框架(引擎回归测试 + 审计工具 + 四处文档)
- web/harness/engine-voice.test.mjs:引擎 voice 句尾保真三不变式(I1 源未耗尽不得结算 / I2 耗尽后排空窗才断开 / I3 零消耗走旧路径),可驱动 SPN mock 模拟真实消耗, 15 断言全绿;防止未来重构回潮 - tools/audit_voice_tails.py:voice 资产尾部静默审计工具入库(含判读口径头注: 尾静默紧=裁剪工艺≠剪字,句尾完整性验收在引擎层) - 文档:HANDOVER(§1.4 回归清单 / §5.3 质量手段 / §6 已解决账)、roadmap §4 新增全游戏「句尾完整性」真机听测项、asset-pipeline QC 口径、methodology §5 度量盲区教训(媒体播完类问题转写层无效,必须真人耳测+引擎断言)、 web-engine-api voice 自然结束语义 - 修正:结束判定改用 filter.sourcePosition(SimpleFilter 单调精确计数器); 10 套件全绿(8 playtest + guide + engine-voice)
This commit is contained in:
+1
-1
@@ -497,7 +497,7 @@ export class WebAudioEngine {
|
||||
*/
|
||||
_finishVoice(token) {
|
||||
if (this._voice !== token || token.stopped) return; // 被打断:不回调
|
||||
const consumedSec = token.filter.sourceSound.position / token.buf.sampleRate;
|
||||
const consumedSec = token.filter.sourcePosition / token.buf.sampleRate;
|
||||
if (consumedSec > 0 && consumedSec < token.buf.duration - 0.02) {
|
||||
// 源未耗尽:墙钟先到/主线程卡顿/后台节流——等真实消耗追上再结算
|
||||
token.endTimer = setTimeout(() => this._finishVoice(token), 80);
|
||||
|
||||
Reference in New Issue
Block a user