Wait for realtime ASR final result

This commit is contained in:
Xulilong 2026-07-15 17:32:59 +08:00
parent 5419103357
commit c29ee51558
2 changed files with 16 additions and 11 deletions

View File

@ -261,15 +261,20 @@ export function WebSocketConnectMethod(config) {
stateHandle(1);
}
function onMessage(e) {
msgHandle(e);
try {
const payload = JSON.parse(e.data);
if (payload && payload.type === "state" && payload.state === "closed") {
resolveGracefulStop();
}
} catch (_) {}
}
function onMessage(e) {
msgHandle(e);
try {
const payload = JSON.parse(e.data);
if (payload && payload.type === "state" && payload.state === "closed") {
resolveGracefulStop();
} else if (
payload &&
(payload.mode === "2pass-offline" || payload.mode === "offline-speaker")
) {
resolveGracefulStop();
}
} catch (_) {}
}
function onError(e) {
// info_div.innerHTML="连接"+e;

View File

@ -628,7 +628,7 @@ document.addEventListener("DOMContentLoaded", async () => {
return started ? 1 : 0;
}
async function finishRealtimeAsrPipelines(timeoutMs = 3500) {
async function finishRealtimeAsrPipelines(timeoutMs = 20000) {
const pipelines = getRealtimePipelines();
await Promise.allSettled(pipelines.map((pipeline) => pipeline.finish(timeoutMs)));
syncRealtimeActiveState();
@ -3094,7 +3094,7 @@ document.addEventListener("DOMContentLoaded", async () => {
}
}
await finishRealtimeAsrPipelines(3500);
await finishRealtimeAsrPipelines(20000);
// Wait for MediaRecorder to emit the final blob.
await new Promise(resolve => setTimeout(resolve, 500));