From d9523269a3e18ace43ba7ba3b5bac9badb2bdfbe Mon Sep 17 00:00:00 2001 From: an-lee Date: Wed, 10 Jul 2024 12:59:50 +0800 Subject: [PATCH] Fix stt hang up (#791) * handle transcribe error * refactor --- enjoy/src/api/client.ts | 7 +- enjoy/src/renderer/hooks/use-transcribe.tsx | 1 + .../src/renderer/hooks/use-transcriptions.tsx | 122 +++++++++--------- 3 files changed, 65 insertions(+), 65 deletions(-) diff --git a/enjoy/src/api/client.ts b/enjoy/src/api/client.ts index 86098387..8b493d28 100644 --- a/enjoy/src/api/client.ts +++ b/enjoy/src/api/client.ts @@ -58,12 +58,7 @@ export class Client { return Promise.reject(new Error(err.response.data)); } - if (err.request) { - this.logger.error(err.request); - } else { - this.logger.error(err.message); - } - + this.logger.error(err.message); return Promise.reject(err); } ); diff --git a/enjoy/src/renderer/hooks/use-transcribe.tsx b/enjoy/src/renderer/hooks/use-transcribe.tsx index ad4f9ad7..478c5063 100644 --- a/enjoy/src/renderer/hooks/use-transcribe.tsx +++ b/enjoy/src/renderer/hooks/use-transcribe.tsx @@ -142,6 +142,7 @@ export const useTranscribe = () => { apiKey: openai.key, baseURL: openai.baseUrl, dangerouslyAllowBrowser: true, + maxRetries: 0, }); const res: { text: string } = (await client.audio.transcriptions.create({ diff --git a/enjoy/src/renderer/hooks/use-transcriptions.tsx b/enjoy/src/renderer/hooks/use-transcriptions.tsx index 1d172703..7dbf333a 100644 --- a/enjoy/src/renderer/hooks/use-transcriptions.tsx +++ b/enjoy/src/renderer/hooks/use-transcriptions.tsx @@ -73,70 +73,74 @@ export const useTranscriptions = (media: AudioType | VideoType) => { isolate = false, } = params || {}; setService(service); - - if (originalText === undefined) { - if (transcription?.targetId === media.id) { - originalText = transcription.result?.originalText; - } else { - const r = await findOrCreateTranscription(); - if (r) { - originalText = r.result?.originalText; - } - } - } - setTranscribing(true); setTranscribingProgress(0); - const { engine, model, alignmentResult, tokenId } = await transcribe( - media.src, - { - targetId: media.id, - targetType: media.mediaType, - originalText, + + try { + if (originalText === undefined) { + if (transcription?.targetId === media.id) { + originalText = transcription.result?.originalText; + } else { + const r = await findOrCreateTranscription(); + if (r) { + originalText = r.result?.originalText; + } + } + } + const { engine, model, alignmentResult, tokenId } = await transcribe( + media.src, + { + targetId: media.id, + targetType: media.mediaType, + originalText, + language, + service, + isolate, + } + ); + + let timeline: TimelineEntry[] = []; + alignmentResult.timeline.forEach((t) => { + if (t.type === "sentence") { + timeline.push(t); + } else { + t.timeline.forEach((st) => { + timeline.push(st); + }); + } + }); + + timeline = preProcessTranscription(timeline); + if (media.language !== language) { + if (media.mediaType === "Video") { + await EnjoyApp.videos.update(media.id, { + language, + }); + } else { + await EnjoyApp.audios.update(media.id, { + language, + }); + } + } + + await EnjoyApp.transcriptions.update(transcription.id, { + state: "finished", + result: { + timeline: timeline, + transcript: alignmentResult.transcript, + originalText, + tokenId, + }, + engine, + model, language, - service, - isolate, - } - ); + }); - let timeline: TimelineEntry[] = []; - alignmentResult.timeline.forEach((t) => { - if (t.type === "sentence") { - timeline.push(t); - } else { - t.timeline.forEach((st) => { - timeline.push(st); - }); - } - }); - - timeline = preProcessTranscription(timeline); - if (media.language !== language) { - if (media.mediaType === "Video") { - await EnjoyApp.videos.update(media.id, { - language, - }); - } else { - await EnjoyApp.audios.update(media.id, { - language, - }); - } + setTranscribing(false); + } catch (err) { + setTranscribing(false); + toast.error(err.message); } - - await EnjoyApp.transcriptions.update(transcription.id, { - state: "finished", - result: { - timeline: timeline, - transcript: alignmentResult.transcript, - originalText, - tokenId, - }, - engine, - model, - language, - }); - - setTranscribing(false); }; const preProcessTranscription = (timeline: TimelineEntry[]) => {