From 07f99708dae80d24ad10496ddd4df15b38434f3f Mon Sep 17 00:00:00 2001 From: lq1405 <2769838458@qq.com> Date: Tue, 13 Aug 2024 13:38:13 +0800 Subject: [PATCH] LaiTool V3.0.1-preview.6 --- .gitignore | 1 + package-lock.json | 4 +- package.json | 2 +- resources/scripts/db/book.realm.lock | Bin 1416 -> 1416 bytes resources/scripts/db/software.realm.lock | Bin 1416 -> 1416 bytes src/main/Service/tts.ts | 74 ++++++++++++++++------- 6 files changed, 57 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index a23eeec..6118292 100644 --- a/.gitignore +++ b/.gitignore @@ -18,6 +18,7 @@ resources/scripts/virtual py resources/scripts/_internal resources/logger resources/scripts/Temp +resources/scripts/db *scripts/db* resources/image/Temp* resources/package/ffmpeg/w* diff --git a/package-lock.json b/package-lock.json index 97f6c35..af50196 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "laitool", - "version": "3.0.1-preview.5", + "version": "3.0.1-preview.6", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "laitool", - "version": "3.0.1-preview.5", + "version": "3.0.1-preview.6", "hasInstallScript": true, "dependencies": { "@alicloud/alimt20181012": "^1.2.0", diff --git a/package.json b/package.json index d31b1f1..cf912a1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "laitool", - "version": "3.0.1-preview.5", + "version": "3.0.1-preview.6", "description": "An AI tool for image processing, video processing, and other functions.", "main": "./out/main/index.js", "author": "laitool.cn", diff --git a/resources/scripts/db/book.realm.lock b/resources/scripts/db/book.realm.lock index c2492d41890f0637f0a8b773f08a1c09464fc9b0..d79fac9949e0602d0e6bbd0a11b0c352406f93c0 100644 GIT binary patch delta 27 gcmeC+?%?KSWaMCwVB%u{0mg~ElNlK|E_}`c05Y8f*8l(j delta 28 gcmeC+?%?KSWaMCwVB%u{gNeM8H!gd`GSPtz06r82s{jB1 diff --git a/resources/scripts/db/software.realm.lock b/resources/scripts/db/software.realm.lock index 04f0ae3f2cc7d122ff6487913ea4a27876bac7df..1de12a3e95bebd77ca101c1030374ff97d85e571 100644 GIT binary patch literal 1416 zcmZQ%$$$$\n]+[,。!?;:“”()《》,.!?;:"()<>$$$$\n]*/g ); + // 初始化 SRT 内容 let srtContent = ""; let index = 1; // 函数用于去掉文本末尾的标点符号 - const removeTrailingPunctuation = (text: string) => { - return text.replace(/[\s,。!?;:“”()《》,.!?;:"()<>$$$$]+$/, ""); + const removeTrailingPunctuation = (text) => { + return text.replace(/[\s,。!?;:“”()《》,.!?;:"()\n]+$/, ""); }; - // 配对时间轴和文案分段 + // 函数用于将毫秒格式化为 SRT 时间格式 + const formatTime = (ms) => { + const date = new Date(ms); + const hours = String(date.getUTCHours()).padStart(2, "0"); + const minutes = String(date.getUTCMinutes()).padStart(2, "0"); + const seconds = String(date.getUTCSeconds()).padStart(2, "0"); + const milliseconds = String(date.getUTCMilliseconds()).padStart(3, "0"); + return `${hours}:${minutes}:${seconds},${milliseconds}`; + }; + + // 合并文本和时间轴 + let combinedPart = ""; + let startTime = null; + let endTime = null; + let j = 0; + let count = 0; + for (let i = 0; i < parts.length; i++) { - const part = parts[i]; - let startTime = - srtJson[i * 2]?.start || srtJson[srtJson.length - 1].start; - let endTime = - srtJson[i * 2 + 1]?.end || srtJson[srtJson.length - 1].end; + let partText = removeTrailingPunctuation(parts[i].trim()); + // partText = partText.trim() + let tempText = partText.replaceAll(' ', ''); + for (; j < srtJson.length; j++) { + let timePart = srtJson[j].part; + timePart = removeTrailingPunctuation(timePart.trim()); - // 去掉文案末尾的标点符号 - const cleanedPart = removeTrailingPunctuation(part.trim()); + if (tempText.includes(timePart)) { + // 如果匹配到,合并文本片段并更新结束时间 + combinedPart += timePart; + if (startTime === null) { + startTime = srtJson[j].start; // 设置开始时间 + } + endTime = srtJson[j].end; // 更新结束时间 - // 将时间格式化为 SRT 格式 - const formatTime = (ms) => { - const date = new Date(ms); - const hours = String(date.getUTCHours()).padStart(2, "0"); - const minutes = String(date.getUTCMinutes()).padStart(2, "0"); - const seconds = String(date.getUTCSeconds()).padStart(2, "0"); - const milliseconds = String(date.getUTCMilliseconds()).padStart(3, "0"); - return `${hours}:${minutes}:${seconds},${milliseconds}`; - }; + // 如果下一个文本片段开始匹配下一个标点,则跳出内层循环 + if (combinedPart == tempText) { + j++; // 准备下一次对比从下一个时间片段开始 + break; + } + } else { + j++; // 准备下一次对比从下一个时间片段开始 + break; + } + count++; + console.log(count); + count = 0; + } - // 生成 SRT 片段 + // 生成SRT段落 srtContent += `${index}\n${formatTime(startTime)} --> ${formatTime( endTime - )}\n${cleanedPart}\n\n`; + )}\n${partText}\n\n`; + + // 重置变量 + combinedPart = ""; + startTime = null; + endTime = null; index++; }