@aim-packages/subtitle 0.1.2 → 0.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +106 -0
- package/dist/index.cjs.js +49 -41
- package/dist/index.d.ts +24 -0
- package/dist/index.es.js +1111 -1052
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -366,6 +366,27 @@ utils.convertTimeToAssFormat("00:00:00.999"); // "0:00:00.99"
|
|
|
366
366
|
3. 确保时间轴的准确性和兼容性
|
|
367
367
|
4. 自动处理毫秒的精度转换(3位转2位)
|
|
368
368
|
|
|
369
|
+
##### `cleanTimeDisplay(timeString: string): string`
|
|
370
|
+
清理时间显示格式,移除毫秒部分和多余的小时前缀。
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
import { utils } from '@aim-packages/subtitle';
|
|
374
|
+
|
|
375
|
+
utils.cleanTimeDisplay("00:01:30.500"); // "01:30"
|
|
376
|
+
utils.cleanTimeDisplay("01:45:20,123"); // "01:45:20"
|
|
377
|
+
utils.cleanTimeDisplay("00:00:05.00"); // "00:05"
|
|
378
|
+
utils.cleanTimeDisplay("01:30:45,50"); // "01:30:45"
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
**参数说明:**
|
|
382
|
+
- `timeString: string` - 输入的时间字符串
|
|
383
|
+
|
|
384
|
+
**作用:**
|
|
385
|
+
1. 移除时间字符串末尾的毫秒部分(支持 .xxx、,xxx 等分隔符)
|
|
386
|
+
2. 移除时间字符串开头多余的 "00:" 小时前缀
|
|
387
|
+
3. 保持时间格式的简洁性和可读性
|
|
388
|
+
4. 自动处理不同格式的时间字符串,统一输出格式
|
|
389
|
+
|
|
369
390
|
### Parser 字幕格式解析器
|
|
370
391
|
|
|
371
392
|
Parser 模块提供了多种字幕格式的解析和转换功能,支持 SRT、VTT、ASS 等常见字幕格式,以及流式解析器用于实时处理。
|
|
@@ -1254,6 +1275,91 @@ console.log(txtContent2);
|
|
|
1254
1275
|
// 李四 - 00:00:05,000 --> 00:00:07,000
|
|
1255
1276
|
// I'm fine, thank you.
|
|
1256
1277
|
// 我很好,谢谢。
|
|
1278
|
+
|
|
1279
|
+
##### `outputMarkdown(params: OutputTextParams): string`
|
|
1280
|
+
|
|
1281
|
+
生成 Markdown 格式的字幕文件,支持多种输出模式和说话人分组。
|
|
1282
|
+
|
|
1283
|
+
**参数:**
|
|
1284
|
+
- `params: OutputTextParams` - 输出参数配置
|
|
1285
|
+
- `header?: string` - 文档标题
|
|
1286
|
+
- `isMd?: boolean` - 是否为 Markdown 格式(影响换行符)
|
|
1287
|
+
- `chunkSize?: number` - 分块大小,默认为 10
|
|
1288
|
+
|
|
1289
|
+
**返回值:**
|
|
1290
|
+
- `string` - Markdown 格式的字幕内容
|
|
1291
|
+
|
|
1292
|
+
**功能特性:**
|
|
1293
|
+
- **说话人分组**: 支持按说话人分组显示内容
|
|
1294
|
+
- **多语言支持**: 自动检测中日韩语言,调整文本连接方式
|
|
1295
|
+
- **分块处理**: 支持按固定大小分块处理长文本
|
|
1296
|
+
- **时间显示**: 自动清理时间格式,移除毫秒和多余前缀
|
|
1297
|
+
- **灵活格式**: 支持 Markdown 和纯文本两种输出格式
|
|
1298
|
+
|
|
1299
|
+
**示例:**
|
|
1300
|
+
```typescript
|
|
1301
|
+
import { tools } from '@aim-packages/subtitle';
|
|
1302
|
+
|
|
1303
|
+
const segments1 = [
|
|
1304
|
+
["00:00:01,000", "00:00:03,000", "Hello world", "speaker1"],
|
|
1305
|
+
["00:00:03,000", "00:00:05,000", "How are you?", "speaker1"],
|
|
1306
|
+
["00:00:05,000", "00:00:07,000", "I'm fine, thank you.", "speaker2"]
|
|
1307
|
+
];
|
|
1308
|
+
|
|
1309
|
+
const segments2 = [
|
|
1310
|
+
["00:00:01,000", "00:00:03,000", "你好世界", "speaker1"],
|
|
1311
|
+
["00:00:03,000", "00:00:05,000", "你好吗?", "speaker1"],
|
|
1312
|
+
["00:00:05,000", "00:00:07,000", "我很好,谢谢。", "speaker2"]
|
|
1313
|
+
];
|
|
1314
|
+
|
|
1315
|
+
const speakerData = {
|
|
1316
|
+
settings: {
|
|
1317
|
+
speaker1: { spk: "speaker1", name: "张三", color: "#FF0000" },
|
|
1318
|
+
speaker2: { spk: "speaker2", name: "李四", color: "#00FF00" }
|
|
1319
|
+
},
|
|
1320
|
+
speakers: { speaker1: 1, speaker2: 1 },
|
|
1321
|
+
data: []
|
|
1322
|
+
};
|
|
1323
|
+
|
|
1324
|
+
// 带说话人的 Markdown 输出
|
|
1325
|
+
const mdContent = tools.output.outputMarkdown({
|
|
1326
|
+
segments1,
|
|
1327
|
+
segments2,
|
|
1328
|
+
header: "# 会议记录",
|
|
1329
|
+
speakerData,
|
|
1330
|
+
chunkSize: 5
|
|
1331
|
+
});
|
|
1332
|
+
|
|
1333
|
+
console.log(mdContent);
|
|
1334
|
+
// 输出:
|
|
1335
|
+
// # 会议记录
|
|
1336
|
+
//
|
|
1337
|
+
// 张三 01:30 - 01:45
|
|
1338
|
+
// Hello world How are you?
|
|
1339
|
+
// 你好世界 你好吗?
|
|
1340
|
+
//
|
|
1341
|
+
// 李四 01:45 - 01:47
|
|
1342
|
+
// I'm fine, thank you.
|
|
1343
|
+
// 我很好,谢谢。
|
|
1344
|
+
|
|
1345
|
+
// 纯文本输出(无说话人)
|
|
1346
|
+
const textContent = tools.output.outputMarkdown({
|
|
1347
|
+
segments1,
|
|
1348
|
+
segments2,
|
|
1349
|
+
header: "会议记录",
|
|
1350
|
+
isMd: false,
|
|
1351
|
+
chunkSize: 3
|
|
1352
|
+
});
|
|
1353
|
+
|
|
1354
|
+
console.log(textContent);
|
|
1355
|
+
// 输出:
|
|
1356
|
+
// 会议记录
|
|
1357
|
+
// 1. Hello world
|
|
1358
|
+
// 你好世界
|
|
1359
|
+
// 2. How are you?
|
|
1360
|
+
// 你好吗?
|
|
1361
|
+
// 3. I'm fine, thank you.
|
|
1362
|
+
// 我很好,谢谢。
|
|
1257
1363
|
```
|
|
1258
1364
|
|
|
1259
1365
|
#### 完整的字幕处理流程示例
|