// 测试字符串转字幕功能 function convertStringToSubtitles(text) { if (!text || typeof text !== 'string') { return []; } // 按照标点符号分割文本,保留标点符号 const sentences = text.split(/([。!?!?])/) .filter(part => part.trim() !== '') .reduce((acc, part, index, arr) => { if (index % 2 === 0) { // 文本部分 const nextPart = arr[index + 1] || ''; acc.push(part + nextPart); } return acc; }, []) .filter(sentence => sentence.trim().length > 0); // 如果没有明显的分句标点,按长度分割 if (sentences.length <= 1) { const maxLength = 30; // 每段最大字符数 const textParts = []; for (let i = 0; i < text.length; i += maxLength) { textParts.push(text.substring(i, i + maxLength)); } sentences.splice(0, sentences.length, ...textParts); } // 为每个句子分配时间戳 let currentStartTime = 0; return sentences.map((sentence) => { const duration = Math.max(3, Math.ceil(sentence.length / 8)); // 根据文本长度计算时长 const startTime = currentStartTime; const endTime = startTime + duration; currentStartTime = endTime; return { startTime, endTime, text: sentence.trim() }; }); } // 测试数据 const testString = "你好1123,我是本次面试的面试官,欢迎参加本公司的线上面试!面试预计需要15分钟,请你提前安排在网络良好、光线亮度合适、且相对安静的环境参加这次面试以免影响本次面试的结果。如果你在面试过程中遇到问题,请与我们的招聘人员联系。"; console.log('原始字符串:'); console.log(testString); console.log('\n转换后的字幕格式:'); const result = convertStringToSubtitles(testString); result.forEach((item, index) => { console.log(`${index + 1}. 时间: ${item.startTime}s - ${item.endTime}s, 内容: "${item.text}"`); }); console.log('\n期望的格式类似:'); console.log('1. 时间: 0s - 5s, 内容: "你好1123,我是本次面试的面试官,欢迎参加本公司的线上面试!"'); console.log('2. 时间: 5s - 13s, 内容: "面试预计需要15分钟,请你提前安排在网络良好、光线亮度合适、且相对安静的环境参加这次面试以免影响本次面试的结果。"'); console.log('3. 时间: 13s - 20s, 内容: "如果你在面试过程中遇到问题,请与我们的招聘人员联系。"');