doco: ep002全流程完工(P1→C4) + CLAUDE.md收摊更新

ep002(潜艇仿生)全部产物入库:B稿v2(733行)/ASR(411句)/融合B稿/
融合A稿.docx/c4_alignment.csv等。fusion_align.py修复align_batch
崩溃bug。CLAUDE.md更新ep002完工状态、新增分段偏差根因和MiMo批次
失败率两条关键决策。

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
simonkoson
2026-06-23 08:15:41 +08:00
parent 010128b123
commit a87f453326
26 changed files with 7296 additions and 33 deletions
+21 -14
View File
@@ -16,8 +16,8 @@
## 🔖 状态栏 (STATUS — 每次结束 session 前必须更新这三行) ## 🔖 状态栏 (STATUS — 每次结束 session 前必须更新这三行)
- **最后更新**Claude Code 2026-06-22,收摊) - **最后更新**Claude Code 2026-06-22深夜,收摊)
- **当前状态一句话**:**ep002(潜艇仿生)P1→P2→C1→C2→C3 已完成,C4 compose 正在由 Cline 跑**MiMo 2.5 Pro)。C4 跑完后需审核报告(硬校验/空段/标点回退)。ep004 上游仍全空。另有一个待做事项:为编导制作 doco 全流程可视化图(HTML),方便试用前培训 - **当前状态一句话**:**ep002(潜艇仿生)全流程 P1→C4 完工**,已出稿 + 通哥手动批改分段。**ep004 上游仍全空**(只有骨架),下一期待跑。C4 对齐层 MiMo 批次失败率偏高(47%),ep004 段切换密需留意
- **下一个动手的人从这里开始**:见下方「⏩ 交接备注」 - **下一个动手的人从这里开始**:见下方「⏩ 交接备注」
--- ---
@@ -77,13 +77,15 @@
## 3. 当前进度(核心交接区,以最新快照为准) ## 3. 当前进度(核心交接区,以最新快照为准)
- **正在做**:批量化首批三期。**ep002 已完成 P1→P2→C1→C2→C3**C3 融合B稿 733行/10条review/专名无同音替换),**C4 compose 正在 Cline 跑**。ep004 上游仍全空(只有骨架) - **已完成至**ep001 + ep003 + **ep002** 三期全流程跑通。ep002 C4 已出稿,通哥手动批改分段完毕
- **卡点 / 待解**:无硬卡点。C4 跑完后需审核(下个 session 首要任务) - **正在做**:无
- **卡点 / 待解**:ep004(枪王对决)上游全空,需跑完整 P1→C4。C4 对齐层 MiMo 批次失败率 47%ep002 实测),ep004 段切换更密,需关注(见关键决策)。
--- ---
## 4. 已完成(只追加,最新在最上) ## 4. 已完成(只追加,最新在最上)
- [2026-06-22 晚|Claude Code] **ep002 C4 审核完毕,全流程收工**。Cline 跑完 C4 compose 出稿 `20260127潜艇的仿生之路_穆佩弦_融合A稿.docx`。Opus 审核核验:硬校验(汉字零改)全过、733 行全覆盖、标点回退 0 段。**但发现两个问题**:① Cline 自报空段名称错了两个(报"解说3/解说6",实际是"三维动画解说3/解说8")、隔断数也报错(报 3 个,实际 4 个)——再次印证不信 Cline 自检;② **9/19 批次(47%LLM 对齐失败走回退**(全 confidence=0.30),本次因失败批次恰在大段中间未翻车,但属黄色预警。**分段偏差根因**:A 稿是拍摄前剧本,专家采访段与实际播出内容差异巨大(A 稿一句话提纲 vs 专家自由发挥两分钟),LLM 无法正确匹配——这是信息不对应,非算法问题。通哥手动批改分段(~10 处高亮标签),内容本身正确。**结论(通哥拍板)**:治本靠编导给贴近播出版的稿子,现阶段接受"程序保证文字零改 + 编导手调分段"的模式。
- [2026-06-22 Claude Code] **ep002 C3 融合通过**。融合B稿 733行(零偏移),review 10条(5 minor_edit 全是 OCR 错字修正,专名无同音替换)。C4 compose 交 Cline 跑中。 - [2026-06-22 Claude Code] **ep002 C3 融合通过**。融合B稿 733行(零偏移),review 10条(5 minor_edit 全是 OCR 错字修正,专名无同音替换)。C4 compose 交 Cline 跑中。
- [2026-06-22 Claude Code] **ep002(潜艇仿生)P1→P2→C1→C2 完成**。P1 全量抽帧 1620 帧(不做 dHash/IoU 去重,全部进 OCR);P2 OCR 4路并发首秀通过(~50帧/分钟,约串行3倍),Stage B 文本去重出 B稿v2 733行;C1 术语提取 68 条热词(词典累积至 235 条);C2 讯飞 ASR 411 句。下一步 C3 fuse。 - [2026-06-22 Claude Code] **ep002(潜艇仿生)P1→P2→C1→C2 完成**。P1 全量抽帧 1620 帧(不做 dHash/IoU 去重,全部进 OCR);P2 OCR 4路并发首秀通过(~50帧/分钟,约串行3倍),Stage B 文本去重出 B稿v2 733行;C1 术语提取 68 条热词(词典累积至 235 条);C2 讯飞 ASR 411 句。下一步 C3 fuse。
- [2026-06-22 Claude Code] **标点层 prompt 修复 + ep003 重跑出稿**`PUNCTUATE_SYSTEM_PROMPT` 加第5条规则(陈述句结尾用句号)+ 错误/正确示范。ep003 逗号占比从 88% 降至 76%,句号从 70 涨到 118。红线未破(strip_punct 硬校验通过)。commit `fd2ef1a` - [2026-06-22 Claude Code] **标点层 prompt 修复 + ep003 重跑出稿**`PUNCTUATE_SYSTEM_PROMPT` 加第5条规则(陈述句结尾用句号)+ 错误/正确示范。ep003 逗号占比从 88% 降至 76%,句号从 70 涨到 118。红线未破(strip_punct 硬校验通过)。commit `fd2ef1a`
@@ -105,12 +107,14 @@
- [x] **C3**:B稿v2 ⊕ ASR 交叉复审 → 融合B稿(743行时间戳零偏移) + fusion_review.csv(5条留痕)。 - [x] **C3**:B稿v2 ⊕ ASR 交叉复审 → 融合B稿(743行时间戳零偏移) + fusion_review.csv(5条留痕)。
- [x] **C4(全部收口)**:融合B稿按 A稿28段对齐归拢 → 融合A稿 docx(公文格式)。汉字零改 + LLM 按语义加标点,红线 28/28 段逐字一致。`doco compose --episode-id <id>`。**OCR 漏字决定不补**(讨论见关键决策);seg8/seg27 两段标点接受一逗到底。 - [x] **C4(全部收口)**:融合B稿按 A稿28段对齐归拢 → 融合A稿 docx(公文格式)。汉字零改 + LLM 按语义加标点,红线 28/28 段逐字一致。`doco compose --episode-id <id>`。**OCR 漏字决定不补**(讨论见关键决策);seg8/seg27 两段标点接受一逗到底。
- [x] **A稿解析器升级**:正则 → LLM分段骨架+人工确认+ignore合并;三期骨架已产并核验通过。`doco skeleton` - [x] **A稿解析器升级**:正则 → LLM分段骨架+人工确认+ignore合并;三期骨架已产并核验通过。`doco skeleton`
- [~] **批量化首批三期·跑完整流水线(下一步主线)**ep003 已全流程跑通。**ep002 已完成 P1→P2→C1→C2,下一步 C3 fuse → C4 compose**ep004 上游仍全空(只有骨架),需跑完整 P1→C4。stage 脚本从 ep003 复制。 - [~] **批量化首批三期·跑完整流水线(下一步主线)**ep001 + ep003 + ep002 三期已全流程完工。**ep004 上游仍全空**(只有骨架),需跑完整 P1→C4。stage 脚本从 ep003 复制。
- [x] **【已完成】标点层 prompt 修复**:加第5条规则+示范,ep003 逗号占比 88%→76%commit `fd2ef1a` - [x] **【已完成】标点层 prompt 修复**:加第5条规则+示范,ep003 逗号占比 88%→76%commit `fd2ef1a`
- [x] **【已完成】配 Ollama 并发**`OLLAMA_NUM_PARALLEL=4`ep002 OCR 4路实跑通过,~50帧/分钟。 - [x] **【已完成】配 Ollama 并发**`OLLAMA_NUM_PARALLEL=4`ep002 OCR 4路实跑通过,~50帧/分钟。
- [ ] **【backlog】C4 对齐层 batch_size 调优**ep002 实测 batch_size=40 导致 47% 批次 MiMo 返回空/JSON 截断走回退。ep004 段切换更密,建议降到 25-30。Cline 在 `_run_compose.py` 里加 `--batch-size 25` 即可。
- [ ] **【产品 backlog】原稿缺【专家N】/【三维动画N】标签**:ep003 复查发现编导原稿里就没有专家、后续三维动画的分段标注,骨架如实反映=融合A稿里也没有(通哥手工补了高亮)。不赖程序(原稿零信号,LLM 与人一样猜不准),**不让程序猜**。治本=提醒编导/责编原稿把【专家N】等段头标全;50 期前在导入须知里写清。 - [ ] **【产品 backlog】原稿缺【专家N】/【三维动画N】标签**:ep003 复查发现编导原稿里就没有专家、后续三维动画的分段标注,骨架如实反映=融合A稿里也没有(通哥手工补了高亮)。不赖程序(原稿零信号,LLM 与人一样猜不准),**不让程序猜**。治本=提醒编导/责编原稿把【专家N】等段头标全;50 期前在导入须知里写清。
- [ ] **【backlog】C3 prompt 收紧**:专有名词(厂名/型号/番号)遇 ASR 同音异写,必须以 B稿v2/A稿为准、不许采 ASR——ep003 已踩"斯泰尔→斯太尔",50 期批量前在 prompt 里收紧防复发。 - [ ] **【backlog】C3 prompt 收紧**:专有名词(厂名/型号/番号)遇 ASR 同音异写,必须以 B稿v2/A稿为准、不许采 ASR——ep003 已踩"斯泰尔→斯太尔",50 期批量前在 prompt 里收紧防复发。
- [ ] **串一键脚本**:把 C1→C2→C3→C4 串成"一条命令跑一期"(薄壳,各阶段已有断点缓存),验 2-3 期稳定后再谈监控文件夹/绑定界面。 - [ ] **串一键脚本**:把 C1→C2→C3→C4 串成"一条命令跑一期"(薄壳,各阶段已有断点缓存),验 2-3 期稳定后再谈监控文件夹/绑定界面。
- [x] **【已修复】`fusion_align.py` align_batch 崩溃 bug**`_parse_align_json` 调用在 `try/except` 之外,LLM 返回空字符串时进程崩溃。Cline 已修,移入 try/except 内,错误时优雅回退。
- [ ] **骨架小瑕疵 backlog(不拦路,后期顺手或跳过)**:ep002 演播室主持人 vs 主持人 是否统一;ep004 小剧场角色编号乱(斯9/斯通纳10、卡8跨场)直接改 JSON 即可,不必重调 LLM;ep003 行内`【固摇轨】`留在参照正文(无害,不进输出)。 - [ ] **骨架小瑕疵 backlog(不拦路,后期顺手或跳过)**:ep002 演播室主持人 vs 主持人 是否统一;ep004 小剧场角色编号乱(斯9/斯通纳10、卡8跨场)直接改 JSON 即可,不必重调 LLM;ep003 行内`【固摇轨】`留在参照正文(无害,不进输出)。
- [x] **C2** 讯飞 ASR 适配层(密钥外置 + asr_adapter 并入 + `doco asr` 命令 + 真转写310句) - [x] **C2** 讯飞 ASR 适配层(密钥外置 + asr_adapter 并入 + `doco asr` 命令 + 真转写310句)
- [x] P3-C1 术语提取 + 词典 + 热词表 - [x] P3-C1 术语提取 + 词典 + 热词表
@@ -121,6 +125,8 @@
## 6. 关键决策(为什么这么做 — 跨 session 最易丢,别推翻) ## 6. 关键决策(为什么这么做 — 跨 session 最易丢,别推翻)
- [2026-06-22] **C4 分段偏差的根因是 A 稿与播出版内容差异大,非算法问题,现阶段不追技术方案。** ep002 实证:专家采访段 A 稿只有一句话提纲,实际播出专家自由发挥两分钟,内容/角度/篇幅全变,LLM 拿提纲匹配实录当然对不上。解说段偏差轻,基本能对。**B 稿(唱词字幕 OCR)里没有隔断标题**(隔断是画面美术字不走字幕轨道),所以也没法用隔断做硬分界线。**通哥拍板**:治本靠编导给贴近播出版的稿子(尤其专家段录完后更新);差异大的期接受"程序保证文字零改 + 编导花十几分钟手调分段标签"。
- [2026-06-22] **MiMo 2.5 Pro C4 对齐层批次失败率偏高(ep002 实测 9/19=47%)。** 失败批次全 confidence=0.30,回退机制把该批所有行分配给 `min_normal_seg_id`。ep002 运气好——失败批次全在大段中间,回退恰好分对了。但 ep004 段切换密,边界批次失败会导致行归错段。**建议 ep004 前把 batch_size 从 40 降到 25-30**,或排查 MiMo 返回空/JSON 截断的具体原因。
- [2026-06-18] **A稿段头识别改用「LLM 判结构 + 人工核骨架」,不用死正则。** 编导写法千变万化(方括号/冒号/前缀杂质`Xr`/`【固摇轨】`镜头标记/小剧场对话头),正则分不清`【固】`(镜头)与`【主持人1】`(段头)——这是语义判断,交 LLM。**铁律:LLM 只输出结构(type/role_label/para 区间),绝不复述正文;正文一律代码按下标从 docx 原样抽**(护住"汉字零改"红线)。配两道闸:① `validate_skeleton_coverage` 全覆盖硬校验(title 后每段恰好被覆盖一次,自动抓 LLM 数错下标/JSON 截断);② 人类预览表给制片人肉眼核(重点抓真人姓名泄露/ignore 漏多/隔断认全)。`doco compose` 无骨架即报错(ep001 例外走正则)。 - [2026-06-18] **A稿段头识别改用「LLM 判结构 + 人工核骨架」,不用死正则。** 编导写法千变万化(方括号/冒号/前缀杂质`Xr`/`【固摇轨】`镜头标记/小剧场对话头),正则分不清`【固】`(镜头)与`【主持人1】`(段头)——这是语义判断,交 LLM。**铁律:LLM 只输出结构(type/role_label/para 区间),绝不复述正文;正文一律代码按下标从 docx 原样抽**(护住"汉字零改"红线)。配两道闸:① `validate_skeleton_coverage` 全覆盖硬校验(title 后每段恰好被覆盖一次,自动抓 LLM 数错下标/JSON 截断);② 人类预览表给制片人肉眼核(重点抓真人姓名泄露/ignore 漏多/隔断认全)。`doco compose` 无骨架即报错(ep001 例外走正则)。
- [2026-06-18] **role_label 只标"段落类型",严禁带任何真人姓名/配音员/编导署名。** 解说词只标【解说N】,不标谁配音(踩过 Cline 把"解说:刘通"标错)。但**小剧场里被演绎的历史人物/角色保留**(卡=卡拉什尼科夫、斯=斯通纳、小剧场N-主持人)——那是剧情内容不是配音员实名。有借鉴价值的修饰也留(三维动画解说/演播室主持人),只清杂质(`Xr`/编号/空格)。 - [2026-06-18] **role_label 只标"段落类型",严禁带任何真人姓名/配音员/编导署名。** 解说词只标【解说N】,不标谁配音(踩过 Cline 把"解说:刘通"标错)。但**小剧场里被演绎的历史人物/角色保留**(卡=卡拉什尼科夫、斯=斯通纳、小剧场N-主持人)——那是剧情内容不是配音员实名。有借鉴价值的修饰也留(三维动画解说/演播室主持人),只清杂质(`Xr`/编号/空格)。
- [2026-06-18] **解析层合并"被 ignore 隔断的同角色段"。** 编导用`(出枪柜)(换枪)`镜头切换把一个主持人的话从中间切断(ep003),骨架会切成两个同名`【主持人N】`。parse 后处理:相邻 normal 段 role_label 全等、中间仅隔 ignore,则合并(正文顺序拼接、ignore 内容丢弃),避免输出里冒重复段头。合并条件要严,ep002/004 无 ignore 不受影响。 - [2026-06-18] **解析层合并"被 ignore 隔断的同角色段"。** 编导用`(出枪柜)(换枪)`镜头切换把一个主持人的话从中间切断(ep003),骨架会切成两个同名`【主持人N】`。parse 后处理:相邻 normal 段 role_label 全等、中间仅隔 ignore,则合并(正文顺序拼接、ignore 内容丢弃),避免输出里冒重复段头。合并条件要严,ep002/004 无 ignore 不受影响。
@@ -152,13 +158,12 @@
## 7. ⏩ 交接备注(写给下一个接手的 session) ## 7. ⏩ 交接备注(写给下一个接手的 session)
> 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(2026-06-22 重写)** > 下次开工读完这段应能 0 摩擦续上。接手后可清空重写。**(2026-06-22 深夜重写)**
- **大局**ep001 + ep003 两期已全流程跑通。**ep002 已完成 P1→P2→C1→C2**,下一步跑 C3 fuse → C4 compose 即可出稿。ep004 上游全空(只有骨架) - **大局**ep001 + ep003 + ep002 三期已全流程跑通出稿。**ep004(枪王对决)上游全空**,是下一期主线
- **ep002 现状**`ep002_20260127_qianting_fangsheng`(潜艇仿生)目录下已有:A稿 docx + mp4 + skeleton + `frames_v2/`(1620帧) + `audio_16k.wav` + `ocr_raw.jsonl`(1620行) + `B稿_v2.txt`(733行) + `本期热词表.txt`(68条) + `c1_term_candidates.json` + `asr_v2_timed.txt`(411句) + `asr_result_raw.json` + stage 脚本 - **ep002 收尾状态**:全流程完工。出稿 `融合A稿.docx` 硬校验全过(汉字零改),通哥已手动批改分段(`融合A稿_批改.docx`)。分段偏差根因是 A 稿与播出版内容差异大(见关键决策),非程序 bug,现阶段接受编导手调
- **第一句话该干的****审核 ep002 C4 compose 报告**Cline 正在跑或已跑完)。检查:硬校验是否全过、空段数、标点回退段数。通过后 ep002 全流程完工,转 ep004。若 C4 还没跑完,等它跑完再审。
- **ep002 C3 已审核通过**10条review/专名无同音替换),不用重审。
- **ep004 现状**`ep004_20260526_qiangwang_duijue`(枪王对决,最难·小剧场密)。只有 A稿 docx + mp4 + skeleton。需跑完整 P1→P2→C1→C2→C3→C4。stage 脚本从 ep003 复制。 - **ep004 现状**`ep004_20260526_qiangwang_duijue`(枪王对决,最难·小剧场密)。只有 A稿 docx + mp4 + skeleton。需跑完整 P1→P2→C1→C2→C3→C4。stage 脚本从 ep003 复制。
- **第一句话该干的**:与通哥确认是否开跑 ep004。ep004 小剧场多、段切换密,C4 对齐层可能更吃力(ep002 已有 47% 批次回退),**建议降 batch_size 到 25-30**。
- **LLM 已切换**:代码和 Cline 都已从 DeepSeek 切到**小米 MiMo 2.5 Pro**。环境变量名 `LLM_API_KEY` / `LLM_BASE_URL` / `LLM_MODEL`(旧 `DEEPSEEK_*` 已废弃)。 - **LLM 已切换**:代码和 Cline 都已从 DeepSeek 切到**小米 MiMo 2.5 Pro**。环境变量名 `LLM_API_KEY` / `LLM_BASE_URL` / `LLM_MODEL`(旧 `DEEPSEEK_*` 已废弃)。
- **Ollama 并发已配**`OLLAMA_NUM_PARALLEL=4`,ep002 实测 ~50帧/分钟(串行的3倍)。4090D 显存余量大(GPU 利用率仅 2%),ep004 可考虑提到 8 路。 - **Ollama 并发已配**`OLLAMA_NUM_PARALLEL=4`,ep002 实测 ~50帧/分钟(串行的3倍)。4090D 显存余量大(GPU 利用率仅 2%),ep004 可考虑提到 8 路。
- **P1 抽帧硬约束****不做 dHash/IoU 去重**,全部帧进 OCR,去重交 Stage B 按文本做(P2 完工快照铁律)。`doco split` 的去重逻辑是过时的,不要用。 - **P1 抽帧硬约束****不做 dHash/IoU 去重**,全部帧进 OCR,去重交 Stage B 按文本做(P2 完工快照铁律)。`doco split` 的去重逻辑是过时的,不要用。
@@ -166,10 +171,12 @@
1. 每期热词/术语不同,**C1 每期重跑**;A稿分段编号各有各的重复/空格脏,**按出现顺序走、别假设单调唯一**。 1. 每期热词/术语不同,**C1 每期重跑**;A稿分段编号各有各的重复/空格脏,**按出现顺序走、别假设单调唯一**。
2. **C3 fuse 后必扫 `fusion_review.csv`**:专名(厂名/型号/番号)若被 ASR 同音字改了要打回(ep003 踩过"斯泰尔→斯太尔",见关键决策)。 2. **C3 fuse 后必扫 `fusion_review.csv`**:专名(厂名/型号/番号)若被 ASR 同音字改了要打回(ep003 踩过"斯泰尔→斯太尔",见关键决策)。
3. **C4 出现空段先别当 bug**:多半是播出剪了那段戏,去融合B稿 grep 该段专属词确认(见关键决策)。 3. **C4 出现空段先别当 bug**:多半是播出剪了那段戏,去融合B稿 grep 该段专属词确认(见关键决策)。
4. **OCR 漏字本期不补**(通哥拍板)——根在抽帧/OCR 漏两三字单屏,LLM 补词=破红线 4. **C4 分段偏差是常态(A 稿≠播出版)**:内容正确但分段标签可能偏,编导手调十几分钟搞定。不追技术方案(见关键决策)
5. **ASR 花讯飞额度**;长转写/OCR 放独立终端别让 Cline 盯 5. **OCR 漏字本期不补**(通哥拍板)——根在抽帧/OCR 漏两三字单屏,LLM 补词=破红线
6. Cline 会偷换模型/术语源、误判字数、口头猜错根因——**自报结果一律对源数据核验** 6. **ASR 花讯飞额度**;长转写/OCR 放独立终端别让 Cline 盯
7. **thinking 分任务用**:语义对齐/骨架开、标点/抽取/融合关(见关键决策)。 7. Cline 会偷换模型/术语源、误判字数、口头猜错根因——**自报结果一律对源数据核验**(ep002 C4 报告空段名称错两个、隔断数也报错)。
8. **thinking 分任务用**:语义对齐/骨架开、标点/抽取/融合关(见关键决策)。
9. **MiMo C4 对齐批次失败率高**ep002 47%),ep004 前考虑降 batch_size(见关键决策)。
- **出稿命名**`{原始A稿stem}_融合A稿.docx`(不覆盖原始定稿)。 - **出稿命名**`{原始A稿stem}_融合A稿.docx`(不覆盖原始定稿)。
- **字体坑(C4 出稿)**:大标题方正小标宋_GBK(商业字体),出稿前确认已装,否则脚本回退。 - **字体坑(C4 出稿)**:大标题方正小标宋_GBK(商业字体),出稿前确认已装,否则脚本回退。
+529 -17
View File
@@ -3,9 +3,10 @@
"term": "萨德", "term": "萨德",
"domain": "model", "domain": "model",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao" "ep001_20260612_fangkong_fandao",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 1 "frequency": 2
}, },
"铁穹": { "铁穹": {
"term": "铁穹", "term": "铁穹",
@@ -75,9 +76,10 @@
"term": "标准", "term": "标准",
"domain": "model", "domain": "model",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao" "ep001_20260612_fangkong_fandao",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 1 "frequency": 2
}, },
"霍拉姆沙赫尔": { "霍拉姆沙赫尔": {
"term": "霍拉姆沙赫尔", "term": "霍拉姆沙赫尔",
@@ -179,9 +181,10 @@
"term": "动能撞击", "term": "动能撞击",
"domain": "tech_concept", "domain": "tech_concept",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao" "ep001_20260612_fangkong_fandao",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 1 "frequency": 2
}, },
"相控阵预警雷达": { "相控阵预警雷达": {
"term": "相控阵预警雷达", "term": "相控阵预警雷达",
@@ -436,9 +439,10 @@
"domain": "org", "domain": "org",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao", "ep001_20260612_fangkong_fandao",
"ep003_20260331_qiangxie_chicun" "ep003_20260331_qiangxie_chicun",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 2 "frequency": 3
}, },
"以色列": { "以色列": {
"term": "以色列", "term": "以色列",
@@ -517,9 +521,10 @@
"domain": "person", "domain": "person",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao", "ep001_20260612_fangkong_fandao",
"ep003_20260331_qiangxie_chicun" "ep003_20260331_qiangxie_chicun",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 2 "frequency": 3
}, },
"专家1": { "专家1": {
"term": "专家1", "term": "专家1",
@@ -621,11 +626,12 @@
}, },
"爱国者-3防空反导系统": { "爱国者-3防空反导系统": {
"term": "爱国者-3防空反导系统", "term": "爱国者-3防空反导系统",
"domain": "weapon", "domain": "model",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao" "ep001_20260612_fangkong_fandao",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 1 "frequency": 2
}, },
"萨德防御系统": { "萨德防御系统": {
"term": "萨德防御系统", "term": "萨德防御系统",
@@ -775,17 +781,19 @@
"term": "蓝皓", "term": "蓝皓",
"domain": "person", "domain": "person",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao" "ep001_20260612_fangkong_fandao",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 1 "frequency": 2
}, },
"饱和攻击": { "饱和攻击": {
"term": "饱和攻击", "term": "饱和攻击",
"domain": "tech_concept", "domain": "tech_concept",
"episodes": [ "episodes": [
"ep001_20260612_fangkong_fandao" "ep001_20260612_fangkong_fandao",
"ep002_20260127_qianting_fangsheng"
], ],
"frequency": 1 "frequency": 2
}, },
"机动变轨": { "机动变轨": {
"term": "机动变轨", "term": "机动变轨",
@@ -1378,5 +1386,509 @@
"ep003_20260331_qiangxie_chicun" "ep003_20260331_qiangxie_chicun"
], ],
"frequency": 1 "frequency": 1
},
"AN/SLQ-25": {
"term": "AN/SLQ-25",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"海军": {
"term": "海军",
"domain": "org",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"潜艇": {
"term": "潜艇",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"鲨鱼皮": {
"term": "鲨鱼皮",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"消声瓦": {
"term": "消声瓦",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"声呐": {
"term": "声呐",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"海豚": {
"term": "海豚",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"乌贼": {
"term": "乌贼",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"电子替身": {
"term": "电子替身",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"海龟号": {
"term": "海龟号",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"鹰号": {
"term": "鹰号",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"压载水舱系统": {
"term": "压载水舱系统",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"鹦鹉螺": {
"term": "鹦鹉螺",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"霍兰号": {
"term": "霍兰号",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"大青花鱼号": {
"term": "大青花鱼号",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"洛杉矶级": {
"term": "洛杉矶级",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"消音瓦": {
"term": "消音瓦",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"沟槽面": {
"term": "沟槽面",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"仿鲨鱼皮": {
"term": "仿鲨鱼皮",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"U型潜艇": {
"term": "U型潜艇",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"水听器": {
"term": "水听器",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"深水炸弹": {
"term": "深水炸弹",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"弗吉尼亚级攻击核潜艇": {
"term": "弗吉尼亚级攻击核潜艇",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"艇艏声呐阵列": {
"term": "艇艏声呐阵列",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"舷侧声呐阵列": {
"term": "舷侧声呐阵列",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"拖曳声呐阵列": {
"term": "拖曳声呐阵列",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"声学诱饵": {
"term": "声学诱饵",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"声自导鱼雷": {
"term": "声自导鱼雷",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"气幕弹": {
"term": "气幕弹",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"Bold": {
"term": "Bold",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"Sieglinde": {
"term": "Sieglinde",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"MOSS Mk70": {
"term": "MOSS Mk70",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"ADC Mk1": {
"term": "ADC Mk1",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"ADC Mk2": {
"term": "ADC Mk2",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"ADC Mk3": {
"term": "ADC Mk3",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"Deceptor": {
"term": "Deceptor",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"Nixie": {
"term": "Nixie",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"反鱼雷软杀伤系统": {
"term": "反鱼雷软杀伤系统",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"核潜艇": {
"term": "核潜艇",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"攻击核潜艇": {
"term": "攻击核潜艇",
"domain": "weapon",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"F/A-18E/F": {
"term": "F/A-18E/F",
"domain": "model",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"歼-10": {
"term": "歼-10",
"domain": "model",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"SM-3": {
"term": "SM-3",
"domain": "model",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"英国海军": {
"term": "英国海军",
"domain": "unit_designation",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"德国U型潜艇": {
"term": "德国U型潜艇",
"domain": "unit_designation",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"盟军运输船队": {
"term": "盟军运输船队",
"domain": "unit_designation",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"美国海军": {
"term": "美国海军",
"domain": "unit_designation",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"埃兹拉·李": {
"term": "埃兹拉·李",
"domain": "person",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"《军事科技》": {
"term": "《军事科技》",
"domain": "org",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"英国": {
"term": "英国",
"domain": "org",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"德国": {
"term": "德国",
"domain": "org",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"隐蔽色": {
"term": "隐蔽色",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"光学隐身衣": {
"term": "光学隐身衣",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"水滴型": {
"term": "水滴型",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"生物流线": {
"term": "生物流线",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"流噪声": {
"term": "流噪声",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"生物声呐": {
"term": "生物声呐",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"声学指纹": {
"term": "声学指纹",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"听觉陷阱": {
"term": "听觉陷阱",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"声学假目标": {
"term": "声学假目标",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"反潜战": {
"term": "反潜战",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"非声探测设备": {
"term": "非声探测设备",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
},
"水声信号": {
"term": "水声信号",
"domain": "tech_concept",
"episodes": [
"ep002_20260127_qianting_fangsheng"
],
"frequency": 1
} }
} }
@@ -0,0 +1,30 @@
《潜艇的仿生之路》
导视:在浩瀚海洋深处,数亿年的进化,塑造了无数神奇的“军事科技”。如今的人类,用钢铁和电路,重新发明了这一切。当潜艇披上"鲨鱼皮"消声瓦,当声呐模仿海豚看穿黑暗,当乌贼的墨汁化作潜艇的电子替身,自然早已写好了深海中生存与猎杀的终极教科书。本期《军事科技》带你见证茫茫深海中潜艇的仿生之路。
Xr演播室 主持人1:观众朋友们大家好!欢迎收看本期的《军事科技》,我是主持人蓝皓。在人类出现之前,深海就是地球上最残酷的竞技场。(画侧出现水体,水体按颜色深度分层)在这里,生存的法则只有两条:隐藏自己,发现敌人。而如今,深海依旧是地球上最后的黑暗边疆。在这里,潜伏着人类工程学的杰作,也是终极的刺杀兵器——潜艇。(水体中出现潜艇,鱼类游走)提到潜艇,想必大家都并不陌生。那么这样一头深海巨兽从诞生至今都借鉴了大自然中哪些动物的“绝招”呢?
从鹦鹉螺到“潜艇压载水舱系统”
二维动画解说1: 1776年9月7日,历史上第一次潜艇攻击开始了,这次攻击是由埃兹拉·李来执行。他驾驶着“海龟号”成功潜到英国海军战舰“鹰号”的尾部,接下去的工作就是用钻头在敌舰上穿孔以便固定炸药包。但是,他打钻的地方正好是一块金属板,半个小时之后他仍然没有钻透敌舰,只好上浮返回。虽然“海龟号”没有成功取得战果,但他拉开了潜艇实战的序幕,从此人类的战场也随之从陆地、水面发展到了水下,“海龟号”也得到了与现代潜艇相同的设计原理而获得世界上“第一艘军用潜艇”的称号,在世界潜艇发展史占据了一席之地。
三维动画解说:“海龟号”潜艇,顾名思义它的外形很像海龟。舱内空气可供驾驶员呼吸半个小时,在潜艇的上部还装有2根通气管,以便上浮时打开,下沉时关闭,从而补充新鲜的空气。为了控制潜水艇的上浮以及下沉,船内设有压载水舱,用水泵控制水柜内的水。为应付紧急情况的发生,艇内装有一块90千克重的铁块,危机时刻只要抛掉铁块,潜艇就可以迅速上浮。”
专家: 潜艇通过向压载水舱注水,排水来改变自身重量,模仿的正是鹦鹉螺的浮控原理。
解说:让我们把目光投向鹦鹉螺的身上。在亿万年的进化中,鹦鹉螺掌握了一种堪称完美的浮力控制艺术。它的螺旋形外壳被一系列隔膜分隔成数十个独立的气室,如同一个精密的多舱室潜水器。通过一个被称为串管的活组织,鹦鹉螺能精确调节每个气室内液体与气体的比例——分泌液体进入气室时下潜,排出液体让位给气体时上浮。这种精妙的生理机制,让它能在数百米的深海与浅层水域之间自如升降,几乎不消耗任何额外能量,堪称自然界最古老、最经典的被动浮力控制系统。
三维动画解说:人类潜艇的压载水舱系统,正是对这一自然智慧的完美复刻。当潜艇需要下潜时,阀门打开,海水涌入压载舱,取代舱内空气,艇体重量增加;当需要上浮时,高压空气将海水强行排出,艇体重量减轻。从19世纪美国“霍兰”号潜艇的手动阀门,到现代核潜艇的计算机控制高压气系统,其核心原理始终未变——正如鹦鹉螺用气体取代液体,潜艇用海水取代空气。这种能力,鹦鹉螺用了数亿年进化完成,而人类只用了不到一百年。
鲨鱼皮肤与潜艇的外形设计
Xr主持人:在广袤的海洋中,生存是一场关乎“看见”与“不被看见”的永恒竞赛。为了在这场竞赛中胜出,无数海洋生物进化出了一套精妙的色彩伪装策略,这便是隐蔽色。像虎鲸、鲨鱼、这样一生与海洋打交道的生物,其背部往往呈现深蓝、深灰色,而其腹部通常是白色或银白色。(画侧出现虎鲸)我们经常能够看到一只从深海上浮的虎鲸,其白色的胸膛在来自下方的视线中几乎“消失”在明亮的天光里;而一只从上方发起攻击的鲨鱼,其深色的背部直到最后一刻才会被发现。这套简单而高效的系统,本质上是一种 “光学隐身衣” 。它抹平了生物体在三维空间中的立体感,极大地缩短了被天敌或猎物发现的距离。海军工程师很快意识到,这正是潜艇在海洋中生存所需要的第一层能力。
专家:在二战时期,一些潜艇的指挥塔和上层建筑就被涂上了深灰色,以期在水面状态时降低被飞机发现的概率。今天,虽然潜艇绝大部分时间在水下活动,但隐蔽色原则依然被用于其涂装设计。现代潜艇通常采用一种黑色涂装。这不仅仅是为了美观,更是一种功能性设计。
解说:然而,在深海中,仅仅“看不见”还远远不够。随着潜艇潜得更深、航行时间更长,真正致命的威胁,开始从光线转移到声音。声音,是深海中传播最远、最难隐藏的信号。一丝多余的噪音,就可能暴露位置,招来猎杀。于是,潜艇的隐身逻辑,也从颜色,升级到了形态。潜艇的外形,并非一开始就是今天的样子。很长一段时间里,它更像是一艘“能够下潜的水面舰艇”。二战时期的潜艇需要频繁浮出水面航行,水下只是暂时藏身之所,因此艇体高耸、结构复杂,水下阻力大、噪音高。真正的转折,发生在核动力出现之后。当潜艇可以长期潜航,人类第一次开始,只为“水下生存”来设计它的形状。工程师将目光投向自然界:鲸类、海豚等高速游泳动物,几乎都拥有同一种外形——前圆后尖的水滴型。1950年代,美国“大青花鱼”号实验潜艇验证了这一答案。水滴型艇体显著降低阻力和流噪,让潜艇更快、更安静,也更难被发现。从此,现代潜艇的外形几乎统一。当潜艇的外形已经足够“像一条鱼”,真正的较量,才刚刚开始。接下来要隐藏的,不再是轮廓,而是声音本身。
专家:从早期潜艇的船型艇体,到现代攻击核潜艇几乎统一的水滴形艇体,如美国“洛杉矶”级,其核心目的就是模仿这种生物流线。每一个突出物、每一个转角都被精心优化,只为让海水“感觉不到”潜艇的存在,从而实现更安静、更高效的航行。潜艇需要在声学上“隐形”,经常被使用手是“消音瓦”。
解说:海豚的皮肤,能够分泌一种特殊黏液,使水流紧贴体表滑行,从而减少湍流与阻力;而更为人熟知的,是鲨鱼的皮肤结构。鲨鱼体表覆盖着无数微小的 V 形盾鳞,这些看似粗糙的纹理,反而能打散涡流,抑制水流紊乱,大幅降低摩擦阻力。潜艇工程师从中得到启发。在现代潜艇的消声瓦表面,常会设计出类似的微沟槽或细微纹理。这种被称为“沟槽面”或“仿鲨鱼皮”的结构,并不仅仅是为了让潜艇航行得更省力,更重要的是——它能有效降低水流掠过艇体时产生的流噪声,让潜艇在深海中,变得更加安静,也更加致命。鲸类和海豚用数千万年的进化,找到了最安静的形态,而人类,只是照着这个形态,把潜艇重新造了一遍。
海豚声呐与潜艇综合声呐系统
Xr解说:海豚在浑浊的海水中能准确找到小鱼,还能分辨出哪条鱼更肥美,这种能力来自它们独特的"水下视觉"——生物声呐。当海豚发出"咔嗒咔嗒"的声音,这些声波就像无形的探照灯向前发射。声音遇到物体产生回声,海豚通过下颌接收这些回声,就能在脑海中描绘出周围环境的立体图像。它们能听出藏在泥沙里的两条鱼哪条更肥,能判断前方是岩石还是海草,这种能力让任何人工声呐都望尘莫及。人类从海豚身上获得灵感,发明了声呐技术。
解说:二战爆发后,德国U型潜艇再次成为海战中的核心力量。在广阔的大西洋上,它们潜伏在航道附近,利用夜色和水下掩护,对盟军运输船队发动突然袭击。单艘潜艇,就足以瘫痪一整条补给线。对英国而言,这不仅是军事问题,更是生存危机。粮食、燃料、军需,几乎全部依赖海上运输,而水下的敌人,却始终看不见。面对潜艇带来的巨大压力,英国海军被迫改变思路——不再依赖目视搜索,而是尝试在深海中“倾听”敌人的存在。以水听器为基础,配合主动声波探测,声呐系统逐步成型,并率先装备在驱逐舰和护航舰上。在护航战例中,声呐第一次实现了对潜艇的稳定定位,使深水炸弹不再是盲目投掷,而成为有目标的打击。随着反潜技术的成熟,曾经游刃有余的U型潜艇,开始频繁暴露行踪,损失不断增加。大西洋的海战,从潜艇的“单方面猎杀”,逐渐演变为一场围绕隐蔽与探测的技术对抗。而这一技术,正是来源于大自然中的生物声呐。
专家:声呐是一种利用声波在水中的传播和反射探测水下物体,如潜艇、水雷、冰山、暗礁等,并可用于导航和测距、定位的装备,现在已广泛装备水面舰艇、潜艇、反潜机,以及无人作战平台。虽然现在雷达、红外、激光等非声探测设备有了长足的进步,但由于海水特性和潜艇潜深等原因,声呐仍然是反潜战中对潜探测最重要的,不可替代的装备。而潜艇在水下航行时,由于电磁波和光在水中衰减很大,传播距离非常有限,对于潜艇来说水声信号是探测目标最有效的方法。
三维动画解说:这是一艘弗吉尼亚级攻击核潜艇。潜艇的艇艏,布置着大型声呐阵列。在早期批次上,它呈现为球形结构;在更新批次中,则演变为更加集成的阵面形式。无论外形如何变化,它始终承担着同一项任务——对前方海域进行持续探测。通过分析回波的时间与特征,潜艇能够判断目标的距离、方位,并对水下接触进行初步识别。沿着艇体左右两侧,分布着舷侧声呐阵列。它们如同海豚身体两侧的侧线系统,负责监听来自各个方向的细微声学变化。即使潜艇保持静默状态,不主动发声,这些阵列依然能够捕捉远处螺旋桨的低频噪声,以及水流扰动形成的异常信号。在潜艇尾部,一条细长的拖曳声呐阵列被放出。这是弗吉尼亚级最重要的远程感知手段之一。它远离艇体自身的噪声干扰,将潜艇的听觉延伸到更远的海域,用于发现极其微弱、距离极远的水下目标。艇艏声呐、舷侧阵列与拖曳声呐协同工作,使这艘潜艇即使在完全隐蔽的状态下,也能构建起一幅连续、立体的水下态势图。
解说:如今,科学家仍在向海豚学习:新的声呐系统在模仿海豚快速构建图像的能力,智能算法在研究海豚处理声音的思维方式。当我们看到海豚在海洋中自由游弋时,其实是在见证一个活生生的声学奇迹——它的每一次鸣叫,都在为人类展示着更完美的水下探测技术。
乌贼墨汁与声学诱饵
Xr主持人:当生存受到直接威胁时,顶尖的猎手与最先进的武器,都诉诸同一种策略:制造混乱,隐藏本体。乌贼遇到危险时,会迅速喷出浓密的墨汁,它并非简单的黑色液体,它在海水中会迅速扩散,形成一个与自身形态相似的、浓密的“墨汁伪影”。这个深色轮廓能立即吸引并锁定捕食者的视觉注意力,为真身的逃离创造关键的时间窗口。潜艇工程师完美地借鉴了这套复杂的求生系统,并将其转化为防御装备:声学诱饵。
解说:潜艇感知到来袭的声自导鱼雷或敌方主动声呐锁定时,会从发射管快速射出声学诱饵,它是潜艇的一种高“电子替身”。声学诱饵通常是一个自航式的水下航行器,被发射后,它会精确模仿母艇的发动机噪音、螺旋桨节拍等独特的“声学指纹”。还会主动航行,制造出比气幕弹更像一艘真实潜艇的移动声学目标。来袭的智能鱼雷能够区分简单的气泡幕和复杂的潜艇噪音。声学诱饵通过发出更具吸引力的“听觉陷阱”,引诱鱼雷偏离航道,转而追踪并攻击这个“替身”。
专家:1942 年,德军 U 型潜艇投放了一种叫 “Bold” 的声纳诱饵。它没有动力,只是释放大量气泡,在水中制造一个“虚假的潜艇回波”。简单,却足以让早期声呐迷失方向。很快,诱饵开始“动起来”。“Sieglinde” 登场。它能以几节航速自行移动,在水下拖出一条看似真实的航迹。这是诱饵第一次尝试模拟潜艇的“行为”,而不仅仅是形态。战争结束,但对抗没有停止。冷战时期,美国海军引入了 MOSS Mk70 移动潜艇模拟器。它被发射出艇后,会在水下独立航行,主动与被动同时工作,制造一个完整的“声学假目标”。在声呐画面中,它和真正的潜艇几乎没有区别。进入 70 年代,诱饵开始标准化、批量化。ADC Mk1,随后是 Mk2、Mk3 系列。这些一次性声学诱饵可以在预定深度悬停,持续发出模拟噪声,把来袭鱼雷从真正的潜艇身边“拉走”。它们不显眼,却成为冷战后期潜艇防御的常规配置。真正的转折,出现在智能化时代。新一代诱饵不再只是“发声”。它们开始计算、判断、机动。例如 Deceptor 自航式声学诱饵。它会主动离艇机动,改变航向和速度,在水下扮演一个“正在逃逸的潜艇”。面对多枚鱼雷,它可以分散、引导、拖延,为真正的潜艇争取生存窗口。而在水面与水下战场上,AN/SLQ-25 “Nixie” 系列拖曳诱饵,成为最广为人知的反鱼雷软杀伤系统之一。
解说:这套系统在实战与对抗演练中屡建奇功。其核心战术都与数百万年前的乌贼如出一辙。乌贼用一团墨汁换取生存的时间,人类则用电子替身,把这一秒无限放大。
Xr主持人:当深海的幽灵收起獠牙,当猎杀者的声呐归于沉寂,这片蔚蓝疆域的博弈却从未停止。从鹦鹉螺的浮力控制到核潜艇的无限续航,从乌贼的墨汁到潜艇的电子诱饵,我们见证了一场跨越数亿年的军事科技进化。自然用漫长的时光雕琢出生存的智慧,人类用智慧在钢铁中复刻这些法则。这不仅是矛与盾的较量,更是对生命本身最深刻的学习。下一场改变游戏规则的技术革命,或许正随着某只深海生物的游弋,在黑暗中悄然酝酿。好了,本期《军事科技》到此结束,感谢您的观看。
@@ -0,0 +1,733 @@
[0m7s] 在浩瀚海洋深处
[0m9s] 数亿年的进化
[0m10s] 塑造了无数神奇的
[0m12s] 攻防利器
[0m14s] 如今的人类
[0m15s] 用钢铁和电路
[0m16s] 重新发明了这一切
[0m19s] 当潜艇
[0m20s] 披上鲨鱼皮 消声瓦
[0m22s] 当声响模仿海豚
[0m24s] 看穿黑暗
[0m26s] 当乌贼的墨汁
[0m27s] 化作潜艇的电子替身
[0m30s] 自然早已写好了深海中
[0m32s] 生存与猎杀的
[0m34s] 终极教科书
[0m38s] 本期《军事科技》
[0m39s] 带您见证茫茫海中
[0m42s] 潜艇的仿生之路
[1m21s] 各位观众你们好
[1m22s] 欢迎收看《军事科技》
[1m23s] 我是蓝皓
[1m26s] 在人类出现之前
[1m27s] 深海就是地球上
[1m29s] 最残酷的竞技场
[1m30s] 在这里生存的法则
[1m32s] 只有两条
[1m34s] 隐藏自己
[1m35s] 发现敌人
[1m37s] 深海依旧是地球上
[1m39s] 最后的黑暗疆域
[1m43s] 潜伏着人类工程学的杰作
[1m46s] 也是终极的刺杀兵器
[1m48s] 潜艇
[1m51s] 提到潜艇
[1m52s] 想必大家并不陌生
[1m54s] 这样一头深海巨兽
[1m56s] 从诞生至今
[1m57s] 都借鉴了大自然中的
[1m59s] 哪些动物的绝招呢
[2m2s] 1776年9月7日
[2m4s] 历史上第一次潜艇攻击开始了
[2m9s] 这次攻击
[2m10s] 是由埃兹拉·李来执行
[2m12s] 他驾驶着“海龟”号
[2m14s] 成功潜到英国战舰
[2m15s] “鹰”号的尾部
[2m17s] 接下去的工作
[2m18s] 就是用钻头在敌舰上穿孔
[2m21s] 以便固定炸药包
[2m24s] 他打钻的地方
[2m26s] 正好是一块金属板
[2m28s] 半个小时之后
[2m29s] 他仍然没有钻透敌舰
[2m31s] 只好上浮返回
[2m34s] 虽然“海龟”号
[2m35s] 没有成功取得战果
[2m37s] 但它拉开了
[2m38s] 潜艇实战的序幕
[2m41s] 从此
[2m42s] 人类的战场
[2m43s] 也随之从陆地
[2m44s] 水面
[2m45s] 发展到了水下
[2m47s] “海龟”号
[2m48s] 也凭借与现代潜艇相通的设计原理
[2m51s] 获得了世界上
[2m52s] 第一艘军用潜艇的称号
[2m55s] 在世界潜艇发展史
[2m57s] 占据了一席之地
[3m0s] “海龟”号潜艇
[3m1s] 顾名思义
[3m2s] 它的外形很像海龟
[3m4s] 舱内空气可供驾驶员
[3m7s] 呼吸半个小时
[3m9s] 在潜艇的上部
[3m10s] 还装有两根通气管
[3m12s] 以便上浮时打开
[3m13s] 下沉时关闭
[3m15s] 从而补充新鲜的空气
[3m18s] “海龟”号潜艇之所以能够
[3m20s] 成功地上浮下沉
[3m22s] 离不开对一种美丽动物的
[3m24s] 深刻学习
[3m27s] 它就是鹦鹉螺
[3m31s] 鹦鹉螺
[3m32s] 它是一种海洋中的动物
[3m35s] 非常地漂亮
[3m36s] 外壳非常漂亮
[3m37s] 但是你要到鹦鹉螺的内部
[3m40s] 转一圈的话
[3m41s] 它里边有很多的腔
[3m43s] 就像我们在陆地上
[3m46s] 看到的一个一个的小房子
[3m48s] 在它的腔里边
[3m49s] 人类正是学习了
[3m51s] 鹦鹉螺的这种功能
[3m53s] 在制造潜艇的过程中
[3m56s] 就采用了水柜
[3m58s] 水柜就是在这个
[4m0s] 潜艇的艇壳的里边
[4m3s] 筑成一个一个一个方块的
[4m5s] 就是类似于储水的柜子
[4m8s] 那么需要沉底的时候
[4m10s] 就向水柜里边注水
[4m12s] 水多了
[4m13s] 沉了
[4m14s] 潜艇就下沉到海底
[4m19s] 在亿万年的进化中
[4m20s] 鹦鹉螺
[4m21s] 掌握了一种堪称完美的
[4m23s] 浮力控制艺术
[4m25s] 它的螺旋形外壳
[4m27s] 被一系列隔膜
[4m28s] 分隔成数十个独立的气室
[4m30s] 如同一个精密的
[4m32s] 多舱式潜水器
[4m34s] 鹦鹉螺
[4m35s] 能精确调节每个气室内液体
[4m37s] 与气体的比例
[4m39s] 分泌液体
[4m40s] 进入气室时下沉
[4m42s] 排出液体
[4m43s] 让位给气体时上浮
[4m46s] 这种精妙的生理机制
[4m47s] 让它能在数百米的深海
[4m50s] 与浅层水域之间
[4m51s] 自如升降
[4m53s] 几乎不消耗任何额外能量
[4m56s] 人类潜艇的压载水舱系统
[4m58s] 正是对这一自然智慧的完美复刻
[5m1s] 当潜艇需要下潜时
[5m3s] 阀门打开
[5m4s] 海水涌入压载舱
[5m6s] 取代舱内空气
[5m8s] 艇体重量增加
[5m10s] 当需要上浮时
[5m12s] 高压气体
[5m13s] 将海水强行排出
[5m15s] 艇体重量减轻
[5m18s] 1897年
[5m19s] 一艘划时代的潜艇
[5m20s] 悄然下水
[5m23s] 这就是约翰·霍兰
[5m24s] 以自己名字命名的
[5m26s] 霍兰潜艇
[5m28s] 这艘潜艇
[5m29s] 汇集了众多开创式的设计
[5m32s] 以往的潜艇
[5m33s] 要么动力不足
[5m34s] 要么水下姿态不稳
[5m36s] 很难在实战中
[5m37s] 发挥较大的作用
[5m39s] 霍兰首次将压载舱
[5m41s] 拆分为主舱与辅助舱
[5m44s] 主压载舱
[5m45s] 负责核心沉浮
[5m47s] 而辅助舱
[5m48s] 专攻姿态校准
[5m49s] 能通过精准补水
[5m51s] 维持平衡
[5m52s] 精准调节潜深
[5m54s] 解决了早期潜艇
[5m55s] 纵倾失控的难题
[5m58s] 这套系统
[5m59s] 是现代潜艇操控系统的源头
[6m2s] 这一设计
[6m3s] 让潜艇
[6m4s] 真正具备了实战价值
[6m6s] 为深海作战开辟了道路
[6m9s] 从霍兰潜艇压载舱的手动阀门
[6m12s] 到现代潜艇压载舱的
[6m14s] 计算机控制高压气系统
[6m16s] 其核心原理始终未变
[6m18s] 正如鹦鹉螺
[6m20s] 用气体取代液体
[6m22s] 潜艇用海水取代空气
[6m25s] 这种能力
[6m26s] 鹦鹉螺用了数亿年进化完成
[6m28s] 而人类
[6m29s] 只用了不到一百年
[6m34s] 在广袤的海洋中
[6m35s] 生存
[6m36s] 是一场关乎看见
[6m37s] 与不被看见的永恒竞赛
[6m41s] 为了在这场竞赛中胜出
[6m43s] 无数的海洋生物
[6m44s] 进化出了一套精妙绝伦的
[6m46s] 色彩伪装策略
[6m48s] 这便是隐蔽色
[6m51s] 像虎鲸
[6m52s] 鲨鱼
[6m53s] 这样一生与海洋打交道的生物
[6m56s] 其背部往往呈现深蓝
[6m58s] 深灰色
[6m59s] 而其腹部通常是白色
[7m2s] 或者是银白色
[7m4s] 我们经常能够看到
[7m6s] 一只从深海上浮的虎鲸
[7m8s] 其白色的胸膛
[7m9s] 在来自下方的视线中
[7m11s] 几乎消失在明亮的天光里
[7m14s] 而一只从上方
[7m15s] 发起攻击的鲨鱼
[7m16s] 其深色的背部
[7m17s] 直到最后一刻
[7m19s] 才会被发现
[7m21s] 这套系统简单而高效
[7m23s] 本质上是一种光学隐身衣
[7m26s] 它抹平了生物体
[7m27s] 在三维空间中的立体感
[7m29s] 极大缩短了
[7m30s] 不被天敌或者是猎物
[7m32s] 发现的距离
[7m34s] 海军工程师很快意识到
[7m36s] 这正是潜艇在海洋中生存
[7m38s] 所需要的第一层能力
[7m43s] 一战时期
[7m44s] 潜艇多活跃于浅海区域
[7m47s] 主要面临目视侦察的威胁
[7m51s] 各国率先借鉴海洋生物的
[7m53s] 双色伪装逻辑
[7m55s] 尝试用浅灰
[7m56s] 绿蓝等颜色涂装艇身
[7m59s] 试图让潜艇
[8m0s] 融入近海的蓝灰色海水
[8m4s] 模仿的正是虎鲸腹部
[8m6s] 适配天光的浅色隐身思路
[8m10s] 但早期设计
[8m11s] 未能兼顾深浅海环境差异
[8m14s] 效果变变
[8m20s] 到了二战
[8m21s] 德军和英军
[8m22s] 则试验新的组合涂装
[8m25s] 这些色彩既延续了
[8m26s] 上部深色
[8m28s] 下部浅色的仿生核心
[8m30s] 又试图贴合
[8m31s] 浅海藻类与海床环境
[8m34s] 可一旦潜艇下潜深度增加
[8m37s] 这套设计便迅速失效
[8m41s] 阳光穿透海水层层衰减
[8m44s] 深海本就是一片幽暗
[8m47s] 浅色系艇身
[8m48s] 反而成为显眼目标
[8m50s] 更致命的是
[8m52s] 早期涂料易被海水冲刷氧化
[8m55s] 很快褪成乳白色
[8m57s] 让仿生伪装彻底失效
[9m8s] 真正的转折来自人类
[9m10s] 对深海环境的深刻洞察
[9m13s] 科学家发现
[9m15s] 当深度超过200米
[9m17s] 阳光完全消失
[9m19s] 黑色
[9m20s] 成为海洋的天然底色
[9m23s] 这与鲨鱼深色背部
[9m25s] 在深海中的隐身逻辑
[9m27s] 不谋而合
[9m29s] 于是纯黑色涂层
[9m31s] 应运而生
[9m32s] 它不仅能让潜艇
[9m34s] 在幽暗海中
[9m35s] 完美融入环境
[9m37s] 消除视觉轮廓
[9m39s] 更凭借改良配方
[9m40s] 解决了褪色难题
[9m42s] 成为潜艇光学隐身的
[9m44s] 终极方案
[9m51s] 因为我们讲
[9m52s] 涂层主要是为了颜色
[9m54s] 也就是视觉上
[9m55s] 不被对手发现
[9m57s] 那么很多的动物
[9m59s] 都有一层保护层
[10m1s] 我们在建造潜艇的时候
[10m2s] 也是从自然界
[10m5s] 或仿生学里边学到了
[10m7s] 如何变化颜色
[10m9s] 因为颜色如果涂在潜艇上
[10m11s] 是很难随着环境变化的
[10m14s] 所以我们就要考虑
[10m15s] 潜艇它生存在
[10m16s] 一个什么样的环境里边
[10m18s] 所以随着潜艇以后
[10m20s] 也就是越来越先进
[10m23s] 它下潜的深度越来越深
[10m25s] 我们发现黑颜色
[10m27s] 在下潜以后
[10m29s] 不容易被发现
[10m30s] 可以把自己隐蔽得很好
[10m32s] 所以后来的潜艇
[10m34s] 也就是
[10m35s] 在二次大战以后的潜艇
[10m37s] 逐步逐步地就往黑色上靠近
[10m40s] 而现在
[10m41s] 世界各国的潜艇
[10m42s] 基本上全都涂成了黑颜色
[10m46s] 然而在深海
[10m48s] 仅仅看不见
[10m49s] 还远远不够
[10m51s] 随着潜艇潜得更深
[10m53s] 航行时间更长
[10m54s] 真正致命的威胁
[10m56s] 开始从光线转移到声音
[11m2s] 我听到它了
[11m11s] 找到它了 目标很近 正右舷083
[11m19s] 声音
[11m20s] 是深海中传播最远
[11m22s] 最难隐蔽的信号
[11m24s] 一丝多余的噪声
[11m26s] 就可能暴露位置
[11m27s] 招来猎杀
[11m33s] 于是
[11m34s] 潜艇的隐身逻辑
[11m35s] 也从颜色升级到了形态
[11m38s] 潜艇的外形
[11m40s] 并非一开始
[11m41s] 就是今天的样子
[11m43s] 很长一段时间里
[11m44s] 它更像是一艘
[11m45s] 能够下潜的水面舰艇
[11m48s] 二战时期的潜艇
[11m49s] 需要频繁浮出水面航行
[11m52s] 水下只是暂时藏身之所
[11m55s] 因此艇体高耸
[11m57s] 结构复杂
[11m58s] 水下阻力大
[11m59s] 噪声高
[12m1s] 真正的转折
[12m2s] 发生在核动力出现之后
[12m5s] 当潜艇可以长期潜航
[12m7s] 人类第一次开始
[12m9s] 只为水下生存
[12m10s] 来设计它的形状
[12m12s] 工程师将目光
[12m14s] 投向自然界
[12m15s] 鲸类
[12m16s] 海豚等高速游泳动物
[12m19s] 几乎都拥有同一种外形
[12m21s] 前圆后尖的水滴形
[12m24s] 1950年
[12m25s] 美国“大青花鱼”号实验潜艇
[12m28s] 验证了这一答案
[12m30s] 水滴型艇体
[12m31s] 显著降低阻力和流噪
[12m34s] 让潜艇更快 更安静
[12m36s] 也难被发现
[12m38s] 从此
[12m39s] 现代潜艇的外形
[12m41s] 几乎统一
[12m42s] 当潜艇的外形
[12m44s] 已经足够像一条鱼
[12m46s] 真正的较量才刚刚开始
[12m49s] 接下来要隐藏的
[12m51s] 不再是轮廓
[12m52s] 而是声音本身
[12m57s] 生物界
[12m58s] 鲨鱼的速度非常快
[13m0s] 因为在水中
[13m1s] 它可以
[13m3s] 以非常高的速度前进
[13m5s] 实际上
[13m6s] 它除了形体的这种流线型以外
[13m9s] 还有就是它的皮肤
[13m11s] 为什么我们很多的游泳运动员
[13m13s] 所采用的游泳衣或游泳裤
[13m16s] 采用的是叫所谓鲨鱼皮呢
[13m19s] 就是借鉴了鲨鱼的
[13m21s] 它皮肤上的这种V字形
[13m23s] 也就是它在前进的时候
[13m25s] 水流是顺着
[13m27s] 箭头的方向向后流的
[13m29s] 减少了阻力
[13m31s] 减少了就是水
[13m32s] 与鲨鱼皮肤的摩擦的声音
[13m35s] 然后使它快速地前行
[13m37s] 既减少了阻力
[13m38s] 又降低了声音
[13m40s] 所以我们在建造潜艇的时候
[13m42s] 也借鉴了这样的情况
[13m45s] 或者是说借鉴了这种功能
[13m48s] 我们在材料上
[13m49s] 采取一些特殊的材料
[13m51s] 因为在深海大洋里边
[13m54s] 这种材料
[13m55s] 就是我们讲的这种消声瓦
[13m58s] 因为消声瓦既要保证
[14m0s] 它在水中
[14m3s] 能够把噪音裹在潜艇里边
[14m7s] 不被对方探测到
[14m8s] 同时它也要像鲨鱼的皮肤一样
[14m11s] 有一些减少与水的
[14m14s] 这种摩擦和阻力
[14m16s] 来使这个声音降低
[14m19s] 也就是潜艇在高速航行的时候
[14m21s] 要降低它与水的摩擦的声音
[14m25s] 这样的话可以进一步地
[14m27s] 使我们的潜艇
[14m29s] 就是像鲨鱼一样
[14m30s] 悄然无声地在水中行进
[14m34s] 海豚的皮肤
[14m36s] 能够分泌一种特殊黏液
[14m38s] 使水流紧贴体表滑行
[14m40s] 从而减少湍流与阻力
[14m43s] 而更为人熟知的
[14m45s] 是鲨鱼的皮肤结构
[14m47s] 鲨鱼体表
[14m48s] 覆盖着无数微小的V型盾鳞
[14m52s] 这些看似粗糙的纹理
[14m54s] 反而能打散涡流
[14m55s] 抑制水流紊乱
[14m57s] 大幅降低摩擦阻力
[15m0s] 潜艇工程师
[15m1s] 从中得到启发
[15m3s] 在现代潜艇的消声瓦表面
[15m6s] 常会设计出
[15m7s] 类似的微沟槽
[15m8s] 或者细微纹理
[15m10s] 这种被称为沟槽面
[15m12s] 或仿鲨鱼皮的结构
[15m14s] 并不仅仅是为了
[15m15s] 让潜艇航行得更省力
[15m18s] 更重要的是
[15m19s] 它能够有效降低水流
[15m21s] 掠过躯体时产生的流噪声
[15m24s] 让潜艇在深海中
[15m26s] 变得更安静
[15m27s] 也更加致命
[15m29s] 海豚在浑浊的海水中
[15m31s] 能够准确地找到小鱼
[15m33s] 还能分辨出哪条更加肥美
[15m36s] 这种能力来自它们独特的
[15m38s] 水下视觉生物声呐
[15m41s] 当海豚发出
[15m43s] 咔嗒咔嗒的声音时
[15m44s] 这些声波
[15m45s] 就像无形的探照灯向前发射
[15m49s] 声音遇到物体产生回声
[15m51s] 海豚通过下颚
[15m53s] 接收这些回声
[15m54s] 就能在脑海中
[15m56s] 描绘出周围环境的立体图像
[16m0s] 它们能够听出
[16m1s] 藏在泥沙里的两条鱼
[16m3s] 哪条更加肥美
[16m5s] 前方是岩石还是海草
[16m8s] 这种能力
[16m9s] 让任何人工声呐都望尘莫及
[16m13s] 人类从海豚身上
[16m14s] 获得了灵感
[16m16s] 发明了声呐技术
[16m19s] 二战爆发后
[16m20s] 德国U型潜艇
[16m22s] 再次成为海战中的核心力量
[16m25s] 在广阔的大西洋上
[16m27s] 它们潜伏在航道附近
[16m29s] 利用夜色和水下掩护
[16m31s] 对盟军运输船队
[16m33s] 发动突然袭击
[16m35s] 单艘潜艇就足以瘫痪
[16m37s] 一整条补给线
[16m39s] 对英国而言
[16m40s] 这不仅是军事问题
[16m42s] 更是生存危机
[16m45s] 装备
[16m46s] 军需
[16m47s] 几乎全部依赖海上运输
[16m50s] 而水下的敌人却始终看不见
[16m53s] 面对潜艇带来的巨大压力
[16m56s] 英国海军被迫改变思路
[16m58s] 不再依赖目视搜索
[17m0s] 而是尝试在深海中
[17m2s] 倾听敌人的存在
[17m4s] 以水听器为基础
[17m6s] 配合主动声波探测
[17m7s] 声呐系统
[17m9s] 逐步成型
[17m11s] 并率先装备在
[17m12s] 驱逐舰和护卫舰上
[17m15s] 在护航战例中
[17m17s] 第一次实现了对潜艇的
[17m19s] 稳定定位
[17m21s] 使深水炸弹不再是盲目投掷
[17m24s] 而成为有目标的打击
[17m27s] 随着反潜技术的成熟
[17m29s] 曾经游刃有余的U型潜艇
[17m31s] 开始频繁暴露行踪
[17m33s] 损失不断增加
[17m36s] 大西洋的海战
[17m37s] 从潜艇的单方面猎杀
[17m39s] 逐渐演变成一场
[17m41s] 围绕隐蔽与探测的
[17m43s] 技术对抗
[17m45s] 而这一技术
[17m46s] 正是源自大自然中的
[17m48s] 生物声呐
[17m51s] 那么说到声呐
[17m53s] 就涉及到一个有趣的知识
[17m56s] 潜艇在水下航行时
[17m58s] 由于水的密度
[17m59s] 是空气密度的大约800倍
[18m2s] 导致雷达电磁波
[18m3s] 通讯电磁波
[18m4s] 无法穿透海水
[18m7s] 严谨地来说
[18m8s] 就是被海水快速地吸收
[18m10s] 传不远
[18m11s] 因此
[18m12s] 声呐就成为了潜艇的主要探测工具
[18m16s] 声呐的本质
[18m17s] 是一个经过微调的耳朵
[18m19s] 它的工作原理
[18m20s] 类似于鲸鱼或海豚的回声定位
[18m24s] 根据工作类型
[18m25s] 声呐可分为
[18m26s] 主动声呐和被动声呐
[18m29s] 主动声呐模式
[18m30s] 需要潜艇主动发射声呐信号
[18m33s] 声呐信号接触到目标后会反射回来
[18m37s] 再被潜艇捕捉
[18m39s] 但在战争中
[18m40s] 这不是一个明智的决策
[18m42s] 因为这种探索
[18m43s] 就像黑夜中打开手电筒
[18m46s] 照亮目标的同时
[18m47s] 也暴露了自己
[18m49s] 而被动声响模式
[18m51s] 是静默航行
[18m53s] 利用被动声呐基阵
[18m54s] 接收对方的主动声呐探测信号
[18m57s] 来确定对手位置
[18m59s] 被动声响模式下
[19m1s] 潜艇不会暴露目标
[19m3s] 隐蔽性好
[19m5s] 声呐
[19m6s] 作为动物界里边
[19m7s] 海豚
[19m9s] 是有它特异的功能
[19m11s] 因为海豚
[19m12s] 它是从嘴里
[19m13s] 发出不同的声响
[19m15s] 然后声响传出去以后
[19m18s] 如果撞在礁石上
[19m20s] 就是海底的礁石上
[19m22s] 会反射回来一个回波
[19m24s] 它用嘴巴下面的接收器
[19m28s] 去把这个声音接收到
[19m30s] 然后判定这是石头还是鱼类
[19m33s] 如果它的发出去的声音
[19m37s] 撞上的是鱼类
[19m39s] 它的回声
[19m41s] 是和撞在岩石上的声音不同的
[19m44s] 而且它收到的回波
[19m47s] 也就是声音传播
[19m50s] 回波在水里传的
[19m51s] 因为很远
[19m53s] 它接收下来就可以分辨出来
[19m55s] 这是它捕食的猎物了
[19m59s] 那么既然
[20m0s] 海豚有这么好的这种功能
[20m4s] 也就类似于声呐的功能
[20m6s] 人类就向它们学习
[20m8s] 就仿制了这种声响
[20m10s] 这就是主动声响
[20m12s] 也就是当我的潜艇
[20m14s] 航行的时候
[20m15s] 我不断地通过
[20m17s] 我的声呐向外释放声波
[20m21s] 当这些声波
[20m23s] 放到海洋里边去之后
[20m25s] 它会一去不复返
[20m26s] 但是如果这些声波
[20m29s] 撞击到了
[20m30s] 对方的潜艇或者是舰艇
[20m33s] 或者是海底的这些礁石
[20m36s] 它反射回来的声波是不一样的
[20m38s] 这样就凭借我们声呐兵
[20m41s] 来收到的回波
[20m43s] 判断前面是金属
[20m46s] 还是石头还是洋流
[20m49s] 这是一艘
[20m50s] 弗吉尼亚级攻击核潜艇
[20m53s] 潜艇的艇艙
[20m54s] 布置着大型声呐阵列
[20m56s] 在早期批次上
[20m58s] 它呈现为球形结构
[21m0s] 它始终对前方海域
[21m2s] 进行持续探测
[21m4s] 通过分析回波的时间与特征
[21m7s] 潜艇
[21m8s] 能够判断目标的距离
[21m10s] 方位
[21m11s] 并对水下接触进行初步识别
[21m14s] 沿着艇体左右两侧
[21m16s] 分布着舷侧声呐阵列
[21m19s] 海豚身体两侧的侧线系统
[21m22s] 负责监听来自各个方向的
[21m24s] 细微声学变化
[21m26s] 即使潜艇保持静默状态
[21m28s] 不主动发声
[21m30s] 这些阵列依然能够捕捉
[21m32s] 远处螺旋桨的低频噪声
[21m34s] 以及水流扰动形成的异常信号
[21m38s] 在潜艇尾部
[21m39s] 一条细长的
[21m40s] 拖曳声呐阵列被放出
[21m43s] 这是弗吉尼亚级
[21m44s] 最重要的远程感知手段之一
[21m47s] 它远离艇体自身的噪声干扰
[21m50s] 将潜艇的声觉
[21m52s] 延伸到更远的海域
[21m54s] 用于发现极其微弱
[21m55s] 距离极远的水下目标
[21m58s] 艇舯声呐
[21m59s] 舷侧阵列
[22m0s] 与拖曳声呐协同工作
[22m3s] 使这艘潜艇
[22m4s] 即使在完全隐蔽的状态下
[22m6s] 也能构建起一幅
[22m8s] 连续立体的水下态势图
[22m13s] 当生存受到直接威胁时
[22m16s] 顶尖的猎手
[22m17s] 与最先进的武器
[22m18s] 都诉诸同一种策略
[22m21s] 制造混乱
[22m22s] 隐藏本体
[22m24s] 当乌贼遇到危险时
[22m26s] 会迅速喷出浓密的墨汁
[22m29s] 它并非简单的黑色液体
[22m31s] 它在海水中会迅速扩散
[22m33s] 形成一个与自身形态相似的
[22m36s] 浓密的墨汁伪影
[22m39s] 这个深色轮廓能够立即吸引
[22m41s] 并且锁定捕食者的
[22m43s] 视觉注意力
[22m44s] 为真身的逃离
[22m46s] 创造关键的时间窗口
[22m49s] 潜艇工程师
[22m50s] 完美地借鉴了这套
[22m52s] 复杂的求生系统
[22m54s] 并将其转化为防御装备
[22m57s] 声学诱饵
[22m59s] 潜艇感知到来袭的
[23m1s] 声自导鱼雷
[23m2s] 或者敌方主动声响锁定时
[23m5s] 会从发射管
[23m6s] 快速射出声学诱饵
[23m8s] 它是潜艇的一种高电子替身
[23m12s] 声学诱饵
[23m13s] 通常是一个自航式的
[23m15s] 水下航行器
[23m16s] 被发射后
[23m17s] 它会精确模仿母艇的
[23m19s] 发动机噪声
[23m21s] 螺旋桨节拍等
[23m22s] 独特的声学指纹
[23m24s] 还会主动航行
[23m26s] 制造出比气幕弹
[23m28s] 更像一艘真实潜艇的
[23m29s] 移动声学目标
[23m31s] 来袭的智能鱼雷
[23m33s] 能够区分简单的气泡幕
[23m35s] 和复杂的潜艇噪声
[23m37s] 声学诱饵
[23m38s] 通过发出更具吸引力的
[23m40s] 听觉陷阱
[23m41s] 引诱鱼雷偏离航道
[23m43s] 转而追踪并攻击这个替身
[23m47s] 而这些诱饵的发现
[23m50s] 实际上就是根据海洋动物
[23m52s] 它一些保护自己的这些方式
[23m55s] 来学习的
[23m56s] 因为它们要么金蝉脱壳
[23m58s] 要么以假乱真
[24m2s] 所以我们看
[24m3s] 随着人工智能的发现
[24m5s] 随着我们无人装备的发现
[24m9s] 我们就制造了
[24m11s] 不同的这种诱饵
[24m13s] 主动的 被动的
[24m15s] 总之当发现潜艇
[24m17s] 被攻击或被人发觉的时候
[24m19s] 就扔出一个假目标
[24m21s] 向不同的方向
[24m22s] 甚至是相反的方向来行进
[24m25s] 让它的鱼雷
[24m26s] 让它的追踪的设备
[24m28s] 去跟踪假目标
[24m30s] 而真正的潜艇
[24m31s] 悄悄地就逃生了
[24m34s] 控制室 这里是声响室
[24m35s] 水中有鱼雷 方位241
[24m38s] 高速前进 右满舵
[24m42s] 找到它了 目标很近 正右舷083
[24m49s] 发射5英寸的反鱼雷诱饵
[24m51s] 发射反鱼雷诱饵
[25m9s] 这套系统
[25m10s] 在实战与对抗演练中
[25m12s] 屡建奇功
[25m14s] 其核心战术
[25m15s] 都与数百万年前的乌贼
[25m17s] 如出一辙
[25m19s] 乌贼用一团墨汁
[25m21s] 换取生存的时间
[25m23s] 人类则用电子替身
[25m25s] 把这一秒无限放大
[25m28s] 当深海的幽灵收起獠牙
[25m31s] 当猎杀者的声响归于沉寂
[25m34s] 这片蔚蓝疆域的博弈
[25m36s] 却从未停止
[25m38s] 从鹦鹉螺的浮力控制
[25m40s] 到核潜艇的无限续航
[25m42s] 从乌贼的墨汁
[25m43s] 到潜艇的电子诱饵
[25m46s] 我们见证了一场
[25m47s] 跨越数亿年的
[25m48s] 军事科技进化
[25m51s] 自然用漫长的时光
[25m52s] 雕琢出生存的智慧
[25m54s] 人类用智慧在钢铁中
[25m57s] 复刻这些法则
[25m59s] 这不仅是矛与盾的较量
[26m1s] 更是对生命本身
[26m3s] 最深刻的学习
[26m5s] 下一场改变游戏规则的技术革命
[26m8s] 或许正在随着
[26m9s] 某只深海生物的游弋
[26m11s] 在黑暗中悄然酝酿
[26m15s] 感谢您持续关注
[26m16s] 国防军事频道《军事科技》
[26m19s] 我们下周同一时间
[26m20s] 再见
@@ -0,0 +1,43 @@
# -*- coding: utf-8 -*-
"""去重 ocr_raw.jsonl: 每个 idx 只保留第一条"""
import json, os
from pathlib import Path
WORK_DIR = Path(__file__).resolve().parent
src = WORK_DIR / "ocr_raw.jsonl"
dst = WORK_DIR / "ocr_raw_clean.jsonl"
sys_out_ok = False
try:
import sys
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
sys_out_ok = True
except:
pass
lines = [l for l in src.read_text(encoding="utf-8").strip().split("\n") if l.strip()]
seen = set()
deduped = []
for l in lines:
rec = json.loads(l)
idx = rec.get("idx")
if idx not in seen:
seen.add(idx)
deduped.append(l)
deduped.sort(key=lambda x: json.loads(x).get("idx", 0))
# write to clean file
dst.write_text("\n".join(deduped) + "\n", encoding="utf-8")
print(f"deduped: {len(lines)} -> {len(deduped)} lines")
# verify clean file
v = dst.read_text(encoding="utf-8").strip().split("\n")
print(f"verify clean: {len(v)} lines")
# replace original
os.replace(str(dst), str(src))
# verify original
v2 = src.read_text(encoding="utf-8").strip().split("\n")
print(f"verify original: {len(v2)} lines, {src.stat().st_size//1024}KB")
@@ -0,0 +1,19 @@
# -*- coding: utf-8 -*-
"""将 A稿 docx 转为 txt 供 doco terms 使用"""
from docx import Document
from pathlib import Path
ep_dir = Path(__file__).resolve().parent
docx_files = list(ep_dir.glob("*.docx"))
if not docx_files:
raise FileNotFoundError(f"{ep_dir} 下找不到 .docx 文件")
docx_file = docx_files[0]
print(f"Reading: {docx_file.name}")
doc = Document(str(docx_file))
text = "\n".join(p.text for p in doc.paragraphs)
out_file = ep_dir / "A稿.txt"
out_file.write_text(text, encoding="utf-8")
print(f"Written: {out_file} ({len(text)} chars, {len(text.splitlines())} lines)")
@@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
"""调用 doco compose 命令"""
import subprocess
from pathlib import Path
ep_dir = Path(__file__).resolve().parent
repo_root = ep_dir.parent.parent # doco/programs/ep002... -> tps-dashboard
episode_id = ep_dir.name
cmd = [
"doco", "compose",
"--episode-id", episode_id,
]
print(f"Running: doco compose --episode-id {episode_id}")
print(f"CWD: {repo_root}")
result = subprocess.run(
cmd,
cwd=str(repo_root),
shell=True,
encoding="utf-8",
errors="replace",
)
print(f"\nExit code: {result.returncode}")
@@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
"""调用 doco fuse 命令"""
import subprocess
import sys
from pathlib import Path
ep_dir = Path(__file__).resolve().parent
repo_root = ep_dir.parent.parent # doco/programs/ep002... -> tps-dashboard
episode_id = ep_dir.name
cmd = [
"doco", "fuse",
"--episode-id", episode_id,
]
print(f"Running: doco fuse --episode-id {episode_id}")
print(f"CWD: {repo_root}")
result = subprocess.run(
cmd,
cwd=str(repo_root),
shell=True,
encoding="utf-8",
errors="replace",
)
print(f"\nExit code: {result.returncode}")
@@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
"""调用 doco terms 命令"""
import subprocess
import sys
from pathlib import Path
ep_dir = Path(__file__).resolve().parent
repo_root = ep_dir.parent.parent # doco/programs/ep002... -> tps-dashboard
a_script = ep_dir / "A稿.txt"
episode_id = ep_dir.name
# Use doco CLI directly
cmd = [
"doco", "terms",
"--episode-id", episode_id,
"--a-script", str(a_script),
]
print(f"Running: doco terms --episode-id {episode_id} --a-script {a_script}")
print(f"CWD: {repo_root}")
result = subprocess.run(
cmd,
cwd=str(repo_root),
shell=True,
encoding="utf-8",
errors="replace",
)
print(f"\nExit code: {result.returncode}")
@@ -0,0 +1,25 @@
# -*- coding: utf-8 -*-
"""轮询等待 C4 compose 完成"""
import time
from pathlib import Path
ep_dir = Path(r"E:\tps-dashboard\doco\programs\ep002_20260127_qianting_fangsheng")
cache_dir = ep_dir / ".c4_cache"
docx_out = ep_dir / "融合A稿.docx"
while True:
if not cache_dir.exists():
print(f"[{time.strftime('%H:%M:%S')}] .c4_cache not yet, waiting 30s...")
time.sleep(30)
continue
n = len(list(cache_dir.iterdir()))
print(f"[{time.strftime('%H:%M:%S')}] cache batches: {n}")
if docx_out.exists():
print(f"\n融合A稿.docx exists! ({docx_out.stat().st_size} bytes)")
break
time.sleep(120)
print("Done.")
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
"""轮询等待 C4 compose 完成"""
import time
from pathlib import Path
ep_dir = Path(r"E:\tps-dashboard\doco\programs\ep002_20260127_qianting_fangsheng")
cache_dir = ep_dir / ".c4_cache"
# Find docx output dynamically
while True:
n = len(list(cache_dir.iterdir())) if cache_dir.exists() else 0
# Check for any 融合A稿 docx
docx_files = list(ep_dir.glob("*融合A稿.docx"))
csv_files = list(ep_dir.glob("c4_alignment.csv"))
print(f"[{time.strftime('%H:%M:%S')}] cache={n}, docx={bool(docx_files)}, csv={bool(csv_files)}")
if docx_files and csv_files:
print(f"\nDone! docx={docx_files[0]}, csv={csv_files[0]}")
break
time.sleep(90)
print("Complete.")
@@ -0,0 +1,40 @@
# -*- coding: utf-8 -*-
"""轮询等待 C3 fusion 完成"""
import os
import time
from pathlib import Path
ep_dir = Path(r"E:\tps-dashboard\doco\programs\ep002_20260127_qianting_fangsheng")
cache_dir = ep_dir / ".c3_cache"
expected_batches = 21 # 733 / 35
while True:
if not cache_dir.exists():
print("Cache dir not yet created, waiting 30s...")
time.sleep(30)
continue
n = len(list(cache_dir.iterdir()))
print(f"[{time.strftime('%H:%M:%S')}] Cache batches: {n}/{expected_batches}")
# Check if output file exists (fusion complete)
fuse_out = ep_dir / "融合B稿.txt"
if fuse_out.exists():
print(f"\n融合B稿.txt exists! ({fuse_out.stat().st_size} bytes)")
break
# Check if background process log indicates completion
log_dir = Path(r"C:\Users\Lenovo\AppData\Local\Temp\cline")
log_files = sorted(log_dir.glob("background-*.log"), key=lambda f: f.stat().st_mtime, reverse=True)
for lf in log_files[:3]:
content = lf.read_text(encoding="utf-8", errors="replace")
if "[ok] doco fuse" in content or "Exit code" in content:
print(f"\nBackground process completed (found in {lf.name})")
print(content[-1000:])
break
else:
time.sleep(60)
continue
break
print("Done waiting.")
File diff suppressed because one or more lines are too long
@@ -0,0 +1,411 @@
[0m6s] 在浩瀚海洋深处数亿年的进化,
[0m10s] 塑造了无数神奇的攻防利器。
[0m13s] 如今的人类
[0m14s] 用钢铁和电路重新发明了这一切,
[0m18s] 当潜艇披上鲨鱼皮消声瓦,
[0m22s] 当声呐模仿海豚,看穿黑暗。
[0m26s] 当乌贼的墨汁化作潜艇的电子替身,
[0m29s] 自然早已写好了深海中生存与猎杀的终极教科书。
[0m38s] 本期军事科技带您见证茫茫深海中潜艇的仿生之路。
[1m20s] 各位观众你们好,欢迎收看军事科技,我是蓝皓。
[1m25s] 在人类出现之前,啊深海就是地球上最残酷的竞技场,
[1m30s] 在这里生存的法则只有两条,
[1m33s] 隐藏自己,
[1m34s] 发现敌人。
[1m36s] 而如今深海依旧是地球上最后的
[1m40s] 黑暗战场,
[1m42s] 在这里潜伏着人类工程学的杰作,
[1m45s] 也是终极的刺杀兵器。
[1m48s] 潜艇
[1m50s] 提到潜艇,啊想必大家呢并不陌生,
[1m53s] 那么这样一头深海巨兽从诞生至今,
[1m57s] 都借鉴了大自然中的哪些动物的
[2m0s] 绝招。
[2m1s] 呢
[2m2s] 1776年9月7日,
[2m4s] 历史上第一次潜艇攻击开始了,
[2m8s] 这次攻击是由艾兹拉里来执行,
[2m12s] 他驾驶着海龟号成功潜到英国战舰鹰号的尾部,
[2m17s] 接下去的工作就是用钻头在敌舰上穿孔以便固定炸药包,
[2m23s] 但是他打钻的地方正好是一块金属板,
[2m27s] 半个小时之后他仍然没有钻透敌舰,
[2m30s] 只好上浮返回。
[2m34s] 虽然海龟号没有成功取得战果,
[2m37s] 但它拉开了潜艇实战的序幕。
[2m41s] 从此人类的战场也随之从陆地
[2m44s] 水面发展到了水下。
[2m47s] 海龟号也凭借与现代潜艇相通的设计原理,
[2m51s] 获得了世界上第一艘军用潜艇的称号,
[2m54s] 在世界潜艇发展史占据了一席之地。
[2m59s] 海龟号潜艇
[3m1s] 顾名思义,
[3m2s] 它的外形很像海龟,
[3m4s] 舱内空气可供驾驶员呼吸半个小时,
[3m8s] 在潜艇的上部还装有两根通气管,
[3m11s] 以便上浮时打开,下沉时关闭,
[3m14s] 从而补充新鲜的空气。
[3m18s] 海龟号潜艇之所以能够成功的上浮下沉,
[3m22s] 离不开对一种美丽动物的深刻学习,
[3m27s] 他就是鹦鹉螺、
[3m31s] 呃鹦鹉螺,呀
[3m32s] 它是一种海洋中的动物,非常的漂亮,外壳非常漂亮,但是你要到鹦鹉螺的内部转一圈的话,你可以发现它里边有很多的腔,唉
[3m43s] 就像我们在陆地上看到的一个一个的小房子,啊在它的这个腔里边,人类正是学习了鹦鹉螺的这种功能,在制造潜艇的过程中
[3m55s] 就采用了水柜水柜,就是在这个潜艇的啊这个艇壳的里边
[4m3s] 筑成一个一个的方块的,啊就是类似于储水的柜子,那么需要沉底的时候呢就向水柜里边注水,
[4m11s] 水多了,那
[4m13s] 沉了
[4m14s] 潜艇就
[4m15s] 下沉到海底,
[4m18s] 在亿万年的进化中,
[4m20s] 鹦鹉螺掌握了一种堪称完美的浮力控制艺术,
[4m24s] 它的螺旋形外壳
[4m26s] 被一系列隔膜分隔成数10个独立的气室,
[4m30s] 如同一个精密的多舱室潜水器,
[4m33s] 鹦鹉螺能精确调节每个气室内液体与气体的比例,
[4m39s] 分泌液体进入气室时下沉,
[4m42s] 排出液体让位给气体时上浮,
[4m45s] 这种精妙的生理机制,
[4m47s] 让它能在数百米的深海
[4m49s] 于浅层水域之间自如升降,
[4m52s] 几乎不消耗任何额外能量。
[4m55s] 人类潜艇的压载水舱系统,
[4m58s] 正是对这一自然智慧的完美复刻,
[5m1s] 当潜艇需要下潜时,
[5m3s] 阀门打开,海水涌入压载舱取代舱内空气,
[5m7s] 艇体重量增加,
[5m10s] 当需要上浮时,
[5m11s] 高压气体将海水强行排出艇体重量减轻。
[5m17s] 180097年,
[5m18s] 一艘划时代的潜艇悄然下水,
[5m22s] 这就是约翰霍兰以自己名字命名的霍兰潜艇。
[5m27s] 这艘潜艇汇集了众多开创式的设计,
[5m31s] 以往的潜艇要么动力不足,要么水下姿态不稳,很难在实战中发挥较大的作用。
[5m38s] 霍兰首次将压载舱拆分为主,舱与辅助舱,
[5m44s] 主压载舱负责核心沉浮,而辅助舱专攻姿态校准,能通过精准补水维持平衡,精准调节潜深,
[5m53s] 解决了早期潜艇纵倾失控的难题。
[5m57s] 这套系统是现代潜艇操控系统的源头,
[6m2s] 这一设计让潜艇真正具备了实战价值,
[6m5s] 为深海作战开辟了道路。
[6m8s] 从霍兰潜艇压载舱的手动阀门,
[6m11s] 到现代潜艇压载舱的计算机控制高压气系统,
[6m15s] 其核心原理始终未变,
[6m18s] 正如鹦鹉螺用气体取代液体,
[6m21s] 潜艇用海水取代空气,
[6m24s] 这种能力,
[6m25s] 鹦鹉螺用了数亿年进化完成,而人类只用了不到100年,
[6m33s] 在广袤的海洋中生存是一场关乎看见与不被看见的
[6m39s] 永恒竞赛。
[6m40s] 为了在这场竞赛中胜出,
[6m43s] 无数的海洋生物进化出了一套精妙绝伦的色彩伪装策略,
[6m48s] 这便是
[6m49s] 隐蔽色,
[6m51s] 像虎、鲸、
[6m52s] 鲨鱼这样一生与海洋打交道的生物,
[6m55s] 其背部啊往往呈现深蓝、深灰色,
[6m59s] 而其腹部呢通常是白色或者是银白色。
[7m4s] 我们经常能够看到一只从深海上浮的虎鲸,其白色的胸膛在来自下方的视线中几乎消失在明亮的天光里,
[7m13s] 而一直从上方发起攻击的鲨鱼,其深色的背部直到最后一刻才会被发现
[7m20s] 这套系统简单而高效,
[7m23s] 本质上是一种光学隐身衣,
[7m26s] 它抹平了生物体在三维空间中的立体感,
[7m29s] 极大缩短了不被天敌或者是猎物发现的距离。
[7m33s] 海军工程师很快意识到,
[7m35s] 这正是潜艇在海洋中生存所需要的
[7m39s] 第一层能力。
[7m43s] 一战时期,
[7m44s] 潜艇多活跃于浅海区域,
[7m47s] 主要面临目视侦察的威胁。
[7m50s] 各国率先借鉴海洋生物的双色伪装逻辑,
[7m54s] 尝试用浅灰、绿蓝等颜色涂装挺身,
[7m58s] 试图让潜艇融入近海的蓝灰色海水,
[8m4s] 模仿的正是虎鲸腹部适配天光的浅色隐身思路,
[8m10s] 但早期设计未能兼顾深浅海环境差异,
[8m14s] 效果寥寥。
[8m19s] 到了二战,德军和英军则试验新的组合涂装,
[8m24s] 这些色彩既延续了上部深色下部浅色的仿生核心,
[8m30s] 又试图贴合浅海藻类与海床环境。
[8m34s] 可一旦潜艇下潜深度增加,这套设计便迅速失效。
[8m41s] 阳光穿透海水层层衰减,
[8m44s] 深海本就是一片幽暗,
[8m46s] 浅色系挺身反而成为显眼目标。
[8m50s] 更致命的是
[8m51s] 早期涂料易被海水冲刷氧化,
[8m55s] 很快退成乳白色,
[8m56s] 让仿生伪装彻底失效。
[9m8s] 真正的转折
[9m9s] 来自人类对深海环境的深刻洞察。
[9m13s] 科学家发现,
[9m14s] 当深度超过200米,
[9m17s] 阳光完全消失,
[9m18s] 黑色成为海洋的天然底色,
[9m23s] 这与鲨鱼深色背部在深海中的隐身逻辑不谋而合,
[9m28s] 于是纯黑色涂层应运而生,
[9m32s] 它不仅能让潜艇在幽暗深海中完美融入环境,
[9m36s] 消除视觉轮廓,
[9m38s] 更凭借改良配方解决了褪色难题,成为潜艇光学隐身的终极方案。
[9m50s] 呃因为我们讲涂层主要是为了颜色,也就是视觉上不被对手发现,那么很多的动物唉都有一层保护层,我们在建造潜艇的时候也是
[10m3s] 从自然界或仿生学里边学到了如何变化颜色,因为颜色如果涂在潜艇上是很难随着环境变化的,
[10m13s] 所以我们就要考虑潜艇它生存在一个什么样的环境里边。
[10m18s] 所以随着潜艇啊以后啊也就是越来越
[10m22s] 先进,它下潜的深度越来越深。
[10m25s] 我们发现呢黑颜色
[10m27s] 在下潜以后呢不容易被发现,可以把自己隐蔽的很好,所以啊后来的潜艇也就是在二次大战以后的潜艇逐步逐步的
[10m38s] 就往黑色上靠近,而现在世界各国的潜艇
[10m42s] 基本上全都涂成了黑颜色。
[10m46s] 然而在深海
[10m47s] 仅仅看不见还远远不够。
[10m50s] 随着潜艇潜得更深,航行时间更长,
[10m54s] 真正致命的威胁
[10m56s] 开始从光线转移到声音,
[11m19s] 声音是深海中传播最远最难隐蔽的信号,
[11m24s] 一丝多余的噪声就可能暴露位置招来猎杀。
[11m32s] 于是潜艇的隐身逻辑
[11m35s] 也从颜色升级到了形态,
[11m38s] 潜艇的外形并非一开始就是今天的样子,
[11m42s] 很长一段时间里,它更像是一艘能够下潜的水面舰艇。
[11m47s] 二战时期的潜艇需要频繁浮出水面航行,
[11m51s] 水下只是暂时藏身之所,
[11m54s] 因此艇体高耸,结构复杂,水下阻力大,噪声高,
[12m0s] 真正的转折
[12m2s] 发生在核动力出现之后,
[12m4s] 当潜艇可以长期潜航,
[12m7s] 人类第一次开始只为水下生存来设计它的形状,
[12m12s] 工程师将目光投向自然界,
[12m15s] 鲸类海豚等高速游泳动物,
[12m18s] 几乎都拥有同一种外形,
[12m21s] 前圆后尖的水滴型。
[12m24s] 1950年,
[12m25s] 美国大青花鱼号实验潜艇验证了这一答案,
[12m30s] 水滴形艇体显著降低阻力和流噪,
[12m33s] 让潜艇更快更安静,也更难被发现。
[12m38s] 从此现代潜艇的外形几乎统一,
[12m42s] 当潜艇的外形已经足够像一条鱼,
[12m45s] 真正的较量才刚刚开始,
[12m49s] 接下来要隐藏的不再是轮廓,
[12m52s] 而是
[12m52s] 声音本身
[12m57s] 生物界呢鲨鱼的速度非常快,啊因为在水中
[13m1s] 唉它可以以非常高的速度
[13m4s] 呃前进,实际上呢它除了形体的啊这种流线型以外,还有就是他的皮肤,因为为什么我们很多的游泳运动员所采用的这个游泳衣或游泳裤,
[13m16s] 采用的是叫所谓鲨鱼皮,呢就是借鉴了鲨鱼的它皮肤上的这种v字形,也就是它在前进的时候,水流是顺着
[13m26s] 这个箭头的方向啊向后流的,减少了阻力,减少了就是水与这个鲨鱼皮肤的摩擦的声音,然后使它快速的前行,
[13m37s] 既减少了阻力又降低了声音,所以我们在建造潜艇的时候也借鉴了啊这样的
[13m44s] 情况,或者是说借鉴了这种功能,我们在材料上啊采取一些特殊的材料,因为
[13m51s] 呃在深海大洋里边这种材料就是我们讲的
[13m57s] 这种消声瓦,因为消声瓦既要保证
[14m0s] 他在
[14m1s] 这个水中能够把噪音裹在
[14m5s] 这个潜艇里边,不被对方探测到,同时它也要像鲨鱼的皮肤一样,有一些减少与水的这种摩擦和阻力,
[14m16s] 来使这个声音降低,也就是潜艇在高速航行的时候要降低它与水的摩擦的声音,唉这样话呢可以进一步的
[14m26s] 使我们的潜艇啊就是像鲨鱼一样悄然无声的在水中行进。
[14m34s] 海豚的皮肤
[14m35s] 能够分泌一种特殊黏液,
[14m37s] 使水流紧贴体表滑行,
[14m40s] 从而减少湍流与阻力。
[14m43s] 而更为人熟知的
[14m44s] 是鲨鱼的皮肤结构,
[14m47s] 鲨鱼体表覆盖着无数微小的微型盾鳞,
[14m51s] 这些看似粗糙的纹理,反而能打散涡流,抑制水流紊乱,
[14m57s] 大幅降低摩擦阻力,
[14m59s] 潜艇工程师从中得到启发。
[15m2s] 在现代潜艇的消声瓦表面,
[15m5s] 常会设计出类似的微沟槽或者细微纹理,
[15m10s] 这种被称为沟槽面或仿鲨鱼皮的结构,
[15m14s] 并不仅仅是为了让潜艇航行得更省力,
[15m17s] 更重要的是它能够有效降低水流掠过艇体时产生的流噪声,
[15m24s] 让潜艇在深海中变得更安静,
[15m27s] 也更加致命。
[15m29s] 海豚在浑浊的海水中能够准确地找到小鱼,
[15m32s] 还能分辨出哪条更加肥美。
[15m35s] 这种能力啊来自他们独特的水下视觉生物声。
[15m40s] 呐
[15m41s] 当海豚发出咔哒咔哒的声音时,
[15m44s] 这些声波就像无形的探照灯向前发射,
[15m48s] 声音遇到物体产生回声,
[15m51s] 海豚通过下颚接收这些回声,
[15m54s] 就能在脑海中描绘出周围环境的
[15m57s] 立体图像,
[15m59s] 他们能够听出藏在泥沙里的两条鱼哪条更加肥美,
[16m4s] 能够判断前方是岩石还是海草,
[16m8s] 这种能力让任何人工声呐都望尘莫及。
[16m12s] 人类从海豚身上获得了灵感,
[16m15s] 发明了
[16m16s] 声呐技术。
[16m19s] 二战爆发后,
[16m20s] 德国u型潜艇再次成为海战中的核心力量,
[16m24s] 在广阔的大西洋上,
[16m26s] 他们潜伏在航道附近,
[16m28s] 利用夜色和水下掩护,对盟军运输船队发动突然袭击,
[16m34s] 单艘潜艇就足以瘫痪一整条补给线。
[16m38s] 对英国而言,
[16m40s] 这不仅是军事问题,
[16m41s] 更是生存危机,
[16m44s] 装备、
[16m45s] 军需
[16m46s] 几乎全部依赖海上运输,
[16m49s] 而水下的敌人却始终看不见,
[16m53s] 面对潜艇带来的巨大压力,
[16m55s] 英国海军被迫改变思路,
[16m58s] 不再依赖目视搜索,
[17m0s] 而是尝试在深海中倾听敌人的存在。
[17m3s] 以水听器为基础,配合主动声波探测,
[17m7s] 声呐系统逐步成型,
[17m10s] 并率先装备在驱逐舰和护卫舰上。
[17m15s] 在护航战例中声呐第一次实现了对潜艇的稳定定位,
[17m20s] 使深水炸弹不再是盲目投掷,
[17m23s] 而成为有目标的打击。
[17m26s] 随着反潜技术的成熟,曾经游刃有余的u型潜艇
[17m31s] 开始频繁暴露,行踪损失不断增加。
[17m35s] 大西洋的海战从潜艇的单方面猎杀,逐渐演变成一场围绕隐蔽与探测的技术对抗。
[17m44s] 而这一技术
[17m46s] 正是源自大自然中的生物声呐。
[17m51s] 那么说到声呐就涉及到一个有趣的知识,
[17m55s] 潜艇在水下航行时,
[17m57s] 由于水的密度是空气密度的大约800倍,
[18m1s] 导致雷达电磁波、通讯电磁波无法穿透海水,
[18m6s] 严谨的来说就是被海水快速的吸收传不远,
[18m11s] 因此声呐就成为了潜艇的主要探测工具。
[18m15s] 声呐的本质是一个经过微调的耳朵,
[18m18s] 它的工作原理类似于鲸鱼或海豚的回声定位。
[18m23s] 根据工作类型,声纳可分为主动声呐和被动声,呐
[18m29s] 主动声呐模式需要潜艇主动发射声呐信号,
[18m33s] 声纳信号接触到目标后会反射回来,
[18m36s] 再被潜艇捕捉,
[18m38s] 但在战争中这不是一个明智的决策,
[18m42s] 因为这种探索就像黑夜中打开手电筒,
[18m45s] 照亮目标的,同时也暴露了自己。
[18m49s] 而被动声纳模式是静默航行,
[18m52s] 利用被动声纳基诊接受对方的主动声纳探测信号来确定对手位置。
[18m59s] 被动声纳模式下潜艇不会暴露目标,
[19m2s] 隐蔽性好
[19m4s] 声。呐
[19m5s] 作为动物界里边,
[19m7s] 这个海豚是有它特异的功能,因为海豚哪它是从嘴里
[19m13s] 发出不同的声响,
[19m15s] 然后这个声响呢传出去以后,如果撞在
[19m19s] 礁石上,就是海底的礁石上,
[19m21s] 会反射回来一个回波,它用
[19m25s] 嘴巴下面的啊这个接收器
[19m27s] 去把这个声音
[19m29s] 接收到,
[19m29s] 然后判定这是石头
[19m32s] 还是鱼类,如果它的这个
[19m35s] 发出去的声音
[19m37s] 撞上的
[19m38s] 是鱼类,它的回声是和撞在
[19m41s] 岩石上的声音不同的,嗯
[19m44s] 而且它收到的这个回波唉也就是
[19m48s] 这个
[19m48s] 声音传播的这个回波在水里传的,因为很远,嘛
[19m52s] 它接收下来就可以分辨出来,这是它朴实的这个
[19m57s] 猎物了。
[19m58s] 那么既然海豚有这么好的这种
[20m3s] 功能,
[20m3s] 也就类似于声呐的功能,人类就向他们学习,就仿制了啊这种声,呐这就是主动声,呐也就是
[20m13s] 当我的潜艇航行的时候,我不断的
[20m16s] 通过我的
[20m18s] 声呐向外释放这个声波,当这些声波
[20m22s] 放到海洋里边去之后,它会一去不复返。
[20m26s] 但是如果这些声波撞击到了
[20m30s] 对方的潜艇
[20m31s] 或者是舰艇,
[20m32s] 或者是海底的这些礁石,它反射回来的声波是不一样的,这样就凭借我们声呐兵来
[20m41s] 收到的回波判断
[20m44s] 前面是金属
[20m45s] 还是石头,
[20m47s] 还是洋流,
[20m49s] 这是一艘弗吉尼亚级攻击核潜艇,
[20m52s] 潜艇的艇首
[20m54s] 布置着大型声呐阵列,
[20m56s] 在早期批次上
[20m58s] 它呈现为球形结构,
[21m0s] 它始终对前方海域进行持续探测,
[21m4s] 通过分析回拨的时间与特征,
[21m7s] 潜艇能够判断目标的距离、
[21m9s] 方位,
[21m10s] 并对水下接触进行初步识别,
[21m13s] 沿着亭体左右两侧
[21m15s] 分布着舷侧声呐阵列,
[21m18s] 他们如同海豚身体两侧的侧线系统,
[21m21s] 负责监听来自各个方向的细微声学变化。
[21m26s] 即使潜艇保持静默状态,不主动发声,
[21m29s] 这些阵列依然能够捕捉远处螺旋桨的低频噪声,
[21m34s] 以及水流扰动形成的异常信号。
[21m37s] 在潜艇尾部,
[21m39s] 一条细长的拖曳声呐阵列被放出,
[21m42s] 这是弗吉尼亚级最重要的远程感知手段之一。
[21m47s] 他远离艇体自身的噪声干扰,
[21m50s] 将潜艇的声觉延伸到更远的海域,
[21m53s] 用于发现极其微弱距离极远的水下目标,
[21m57s] 停首声呐舷侧阵列
[22m0s] 与拖曳声呐协同工作,
[22m2s] 使这艘潜艇即使在完全隐蔽的状态下,
[22m6s] 也能构建起一幅连续立体的水下态势图。
[22m13s] 当生存受到直接威胁时,
[22m16s] 顶尖的猎手与最先进的武器
[22m18s] 都诉诸同一种策略,
[22m20s] 制造混乱,
[22m22s] 隐藏本体。
[22m24s] 当乌贼遇到危险时会迅速喷出浓密的墨汁,
[22m29s] 它并非简单的黑色液体,
[22m31s] 它在海水中会迅速扩散,
[22m33s] 形成一个与自身形态相似的浓密的
[22m36s] 莫之为影。
[22m38s] 这个深色轮廓啊能够立即吸引并且锁定捕食者的视觉注意力,
[22m44s] 为真身的逃离创造关键的时间窗口。
[22m49s] 潜艇工程师啊完美地借鉴了这套复杂的求生系统,
[22m53s] 并将其转化为防御装备
[22m56s] 声学诱饵。
[22m59s] 潜艇感知到来袭的声自导鱼雷,
[23m2s] 或者敌方主动声呐锁定时
[23m5s] 会从发射管快速射出声学诱饵,
[23m8s] 它是潜艇的一种高电子替身,
[23m11s] 声学诱饵通常是一个自航式的水下航行器,
[23m16s] 被发射后,它会精确模仿母艇的发动机噪声,
[23m20s] 螺旋桨节拍等独特的声学指纹,
[23m24s] 还会主动航行,
[23m26s] 制造出比气幕弹,更像一艘真实潜艇的移动声学目标。
[23m31s] 来袭的智能鱼雷能够区分简单的气泡幕和复杂的潜艇噪声,
[23m36s] 声学诱饵通过发出更具吸引力的听觉陷阱,
[23m41s] 引诱鱼雷偏离航道,转而追踪并攻击这个替身。
[23m47s] 而这些诱饵的发现,
[23m49s] 实际上就是根据海洋动物它一些保护自己的啊这些方式
[23m55s] 啊来学习的,哈因为他们要么金蝉脱壳,要么
[23m59s] 呃这个以假乱真。
[24m2s] 所以我们看
[24m3s] 随着人工智能的发现,
[24m5s] 随着我们这个无人装备的发现,我们就
[24m10s] 制造了
[24m11s] 不同的这种诱饵,
[24m13s] 主动的被动的。
[24m14s] 总之当发现潜艇被攻击或被人发觉的时候,就扔出一个假目标,向不同的方向相甚至是相反的方向
[24m23s] 来行进,让它的鱼雷,让它的
[24m26s] 这个追踪的设备去跟踪那个假目标,而真正的潜艇悄悄的就逃生了。
[25m9s] 这套系统在实战与对抗演练中屡建奇功,
[25m13s] 其核心战术都与数百万年前的乌贼如出一辙,
[25m18s] 乌贼用一团墨汁换取生存的时间,
[25m22s] 人类则用电子替身
[25m25s] 把这一秒无限放大,
[25m28s] 当深海的幽灵收起獠牙,当猎杀者的声呐归于沉寂。
[25m33s] 这片蔚蓝疆域的博弈
[25m35s] 却从未停止,
[25m38s] 从鹦鹉螺的浮力控制到核潜艇的无限续航,
[25m42s] 从乌贼的墨汁到潜艇的电子诱饵,
[25m45s] 我们见证了一场跨越数亿年的军事科技进化,
[25m50s] 自然用漫长的时光雕琢出生存的智慧。
[25m54s] 人类呢用智慧在钢铁中复刻这些法则,
[25m58s] 这不仅是矛与盾的较量,
[26m1s] 更是对生命本身最深刻的学习。
[26m5s] 下一场改变游戏规则的技术革命,
[26m7s] 或许正在随着某只深海生物的游弋,
[26m11s] 在黑暗中
[26m12s] 悄然酝酿。
[26m14s] 好了,观众朋友们,感谢您持续关注国防军事频道、军事科技。
[26m18s] 我们下周同一时间
[26m20s] 再见。
[26m22s] 藏于方寸的敌后利器,
[26m25s] 锋芒毕露的火力先锋,
[26m27s] 穿梭街巷的近战精灵,主宰阵地的压制王者,
[26m33s] 同为枪械家族成员为何长度取舍各不相同,
[26m38s] 每一寸伸缩都是对实战需求的精准回应,每一款设计都凝结着军工领域的深邃考量,
[26m48s] 军事科技带您解码枪械设计背后的长短智慧。
@@ -0,0 +1,2 @@
<table><td colspan="3">As of December 31,<i>(In millions)</i>201820172016Net cash provided by (used in) operating activities$1,000$(2,100)$(4,300)</table>
<table><td colspan="3">As of December 31,<i>(In millions)</i>201820172016Total return4.9%5.0%5.1%</table>
@@ -0,0 +1,734 @@
{
"episode_id": "ep002_20260127_qianting_fangsheng",
"rule_candidates": [
{
"term": "标准",
"domain": "model",
"source": "rule_model_cn"
},
{
"term": "AN/SLQ-25",
"domain": "model",
"source": "rule_model"
},
{
"term": "美国",
"domain": "org",
"source": "rule_country"
},
{
"term": "海军",
"domain": "org",
"source": "rule_org"
},
{
"term": "主持人1",
"domain": "person",
"source": "rule_person"
}
],
"ai_raw_response": [
{
"term": "潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "鲨鱼皮",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "消声瓦",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "声呐",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "海豚",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "乌贼",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "电子替身",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "海龟号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "鹰号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "压载水舱系统",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "鹦鹉螺",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "霍兰号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "大青花鱼号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "洛杉矶级",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "消音瓦",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "沟槽面",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "仿鲨鱼皮",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "U型潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "水听器",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "深水炸弹",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "弗吉尼亚级攻击核潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "艇艏声呐阵列",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "舷侧声呐阵列",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "拖曳声呐阵列",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "声学诱饵",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "声自导鱼雷",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "气幕弹",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Bold",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Sieglinde",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "MOSS Mk70",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "ADC Mk1",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "ADC Mk2",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "ADC Mk3",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Deceptor",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "AN/SLQ-25",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Nixie",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "反鱼雷软杀伤系统",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "核潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "攻击核潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "F/A-18E/F",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "歼-10",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "SM-3",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "萨德",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "爱国者-3防空反导系统",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "英国海军",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "德国U型潜艇",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "盟军运输船队",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "美国海军",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "蓝皓",
"domain": "person",
"source": "ai_deepseek"
},
{
"term": "埃兹拉·李",
"domain": "person",
"source": "ai_deepseek"
},
{
"term": "《军事科技》",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "英国",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "美国",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "德国",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "动能撞击",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "饱和攻击",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "隐蔽色",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "光学隐身衣",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "水滴型",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "生物流线",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "流噪声",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "生物声呐",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "声学指纹",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "听觉陷阱",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "声学假目标",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "反潜战",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "非声探测设备",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "水声信号",
"domain": "tech_concept",
"source": "ai_deepseek"
}
],
"merged_candidates": [
{
"term": "标准",
"domain": "model",
"source": "rule_model_cn"
},
{
"term": "AN/SLQ-25",
"domain": "weapon",
"source": "rule_model+ai_deepseek"
},
{
"term": "美国",
"domain": "org",
"source": "rule_country+ai_deepseek"
},
{
"term": "海军",
"domain": "org",
"source": "rule_org"
},
{
"term": "主持人1",
"domain": "person",
"source": "rule_person"
},
{
"term": "潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "鲨鱼皮",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "消声瓦",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "声呐",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "海豚",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "乌贼",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "电子替身",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "海龟号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "鹰号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "压载水舱系统",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "鹦鹉螺",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "霍兰号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "大青花鱼号",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "洛杉矶级",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "消音瓦",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "沟槽面",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "仿鲨鱼皮",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "U型潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "水听器",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "深水炸弹",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "弗吉尼亚级攻击核潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "艇艏声呐阵列",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "舷侧声呐阵列",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "拖曳声呐阵列",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "声学诱饵",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "声自导鱼雷",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "气幕弹",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Bold",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Sieglinde",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "MOSS Mk70",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "ADC Mk1",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "ADC Mk2",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "ADC Mk3",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Deceptor",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "Nixie",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "反鱼雷软杀伤系统",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "核潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "攻击核潜艇",
"domain": "weapon",
"source": "ai_deepseek"
},
{
"term": "F/A-18E/F",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "歼-10",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "SM-3",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "萨德",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "爱国者-3防空反导系统",
"domain": "model",
"source": "ai_deepseek"
},
{
"term": "英国海军",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "德国U型潜艇",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "盟军运输船队",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "美国海军",
"domain": "unit_designation",
"source": "ai_deepseek"
},
{
"term": "蓝皓",
"domain": "person",
"source": "ai_deepseek"
},
{
"term": "埃兹拉·李",
"domain": "person",
"source": "ai_deepseek"
},
{
"term": "《军事科技》",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "英国",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "德国",
"domain": "org",
"source": "ai_deepseek"
},
{
"term": "动能撞击",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "饱和攻击",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "隐蔽色",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "光学隐身衣",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "水滴型",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "生物流线",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "流噪声",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "生物声呐",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "声学指纹",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "听觉陷阱",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "声学假目标",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "反潜战",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "非声探测设备",
"domain": "tech_concept",
"source": "ai_deepseek"
},
{
"term": "水声信号",
"domain": "tech_concept",
"source": "ai_deepseek"
}
],
"stats": {
"rule_count": 5,
"ai_count": 68,
"merged_count": 71
}
}
@@ -0,0 +1,27 @@
seg_id,header,start_line,end_line,line_count,min_confidence,punct_ok,note
0,"【导视1】",1,19,19,0.9000,True,""
1,"【演播室主持人1】",20,40,21,0.9000,True,""
2,"从鹦鹉螺到“潜艇压载水舱系统”",,,0,0.0000,,"隔断"
3,"【二维动画解说1】",41,70,30,0.9500,True,""
4,"【三维动画解说1】",71,160,90,0.3000,True,"低把握(min_confidence=0.30)"
5,"【专家1】",,,0,1.0000,True,"空段:无对应字幕"
6,"【解说1】",,,0,1.0000,True,"空段:无对应字幕"
7,"【三维动画解说2】",161,181,21,0.9000,True,""
8,"鲨鱼皮肤与潜艇的外形设计",,,0,0.0000,,"隔断"
9,"【主持人1】",182,217,36,1.0000,True,""
10,"【专家2】",218,360,143,0.3000,True,"低把握(min_confidence=0.30)"
11,"【解说2】",,,0,1.0000,True,"空段:无对应字幕"
12,"【专家3】",,,0,1.0000,True,"空段:无对应字幕"
13,"【解说3】",361,440,80,0.3000,True,"低把握(min_confidence=0.30)"
14,"海豚声呐与潜艇综合声呐系统",,,0,0.0000,,"隔断"
15,"【解说4】",441,452,12,0.9500,True,""
16,"【解说5】",453,520,68,0.3000,True,"低把握(min_confidence=0.30)"
17,"【专家4】",521,535,15,0.9000,True,""
18,"【三维动画解说3】",,,0,1.0000,True,"空段:无对应字幕"
19,"【解说6】",536,640,105,0.3000,True,"低把握(min_confidence=0.30)"
20,"乌贼墨汁与声学诱饵",,,0,0.0000,,"隔断"
21,"【主持人2】",641,643,3,0.9000,True,""
22,"【解说7】",644,669,26,0.9500,True,""
23,"【专家5】",670,720,51,0.3000,True,"低把握(min_confidence=0.30)"
24,"【解说8】",,,0,1.0000,True,"空段:无对应字幕"
25,"【主持人3】",721,733,13,0.9000,True,""
1 seg_id header start_line end_line line_count min_confidence punct_ok note
2 0 【导视1】 1 19 19 0.9000 True
3 1 【演播室主持人1】 20 40 21 0.9000 True
4 2 从鹦鹉螺到“潜艇压载水舱系统” 0 0.0000 隔断
5 3 【二维动画解说1】 41 70 30 0.9500 True
6 4 【三维动画解说1】 71 160 90 0.3000 True 低把握(min_confidence=0.30)
7 5 【专家1】 0 1.0000 True 空段:无对应字幕
8 6 【解说1】 0 1.0000 True 空段:无对应字幕
9 7 【三维动画解说2】 161 181 21 0.9000 True
10 8 鲨鱼皮肤与潜艇的外形设计 0 0.0000 隔断
11 9 【主持人1】 182 217 36 1.0000 True
12 10 【专家2】 218 360 143 0.3000 True 低把握(min_confidence=0.30)
13 11 【解说2】 0 1.0000 True 空段:无对应字幕
14 12 【专家3】 0 1.0000 True 空段:无对应字幕
15 13 【解说3】 361 440 80 0.3000 True 低把握(min_confidence=0.30)
16 14 海豚声呐与潜艇综合声呐系统 0 0.0000 隔断
17 15 【解说4】 441 452 12 0.9500 True
18 16 【解说5】 453 520 68 0.3000 True 低把握(min_confidence=0.30)
19 17 【专家4】 521 535 15 0.9000 True
20 18 【三维动画解说3】 0 1.0000 True 空段:无对应字幕
21 19 【解说6】 536 640 105 0.3000 True 低把握(min_confidence=0.30)
22 20 乌贼墨汁与声学诱饵 0 0.0000 隔断
23 21 【主持人2】 641 643 3 0.9000 True
24 22 【解说7】 644 669 26 0.9500 True
25 23 【专家5】 670 720 51 0.3000 True 低把握(min_confidence=0.30)
26 24 【解说8】 0 1.0000 True 空段:无对应字幕
27 25 【主持人3】 721 733 13 0.9000 True
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,11 @@
line_no,timestamp,b_original,asr_context,final_text,change_type,confidence,reason
10,0m22s,当声响模仿海豚,当潜艇披上鲨鱼皮消声瓦, 当声呐模仿海豚,看穿黑暗。 当乌贼的墨汁化作潜艇的电子替身, 自然早已写好了深海中生存与猎杀的终极教科书。,当声呐模仿海豚,term_normalize,0.95,B稿'声响'为OCR错字,ASR'声呐'为正确术语
18,0m39s,带您见证茫茫海中,自然早已写好了深海中生存与猎杀的终极教科书。 本期军事科技带您见证茫茫深海中潜艇的仿生之路。 各位观众你们好,欢迎收看军事科技,我是蓝皓。,带您见证茫茫深海中,editor_typo,0.95,B稿'海中'为OCR漏字,ASR'深海中'正确
231,8m14s,效果变变,但早期设计未能兼顾深浅海环境差异, 效果寥寥。 到了二战,德军和英军则试验新的组合涂装, 这些色彩既延续了上部深色下部浅色的仿生核心,,效果寥寥,minor_edit,0.95,B稿OCR错字'变变'ASR为'寥寥',用ASR覆盖
263,9m34s,在幽暗海中,于是纯黑色涂层应运而生, 它不仅能让潜艇在幽暗深海中完美融入环境, 消除视觉轮廓, 更凭借改良配方解决了褪色难题,成为潜艇光学隐身的终极方案。 呃因为我们讲涂层主要是为了颜色,也就是视觉上不被对手发现,那么很多的动物唉都有一层保护层,我们在建造潜艇的时候也是,在幽暗深海中,minor_edit,0.9,B稿OCR为‘海中’,ASR为‘深海中’,补充‘深’字更完整
426,15m21s,掠过躯体时产生的流噪声,更重要的是它能够有效降低水流掠过艇体时产生的流噪声, 让潜艇在深海中变得更安静, 也更加致命。 海豚在浑浊的海水中能够准确地找到小鱼,,掠过艇体时产生的流噪声,minor_edit,0.95,B稿OCR错字'躯体'ASR为'艇体',修正
528,18m49s,而被动声响模式,照亮目标的,同时也暴露了自己。 而被动声纳模式是静默航行, 利用被动声纳基诊接受对方的主动声纳探测信号来确定对手位置。 被动声纳模式下潜艇不会暴露目标,,而被动声纳模式,term_normalize,0.9,B稿‘声响’为OCR错字,ASR为‘声纳’,术语统一
533,18m59s,被动声响模式下,利用被动声纳基诊接受对方的主动声纳探测信号来确定对手位置。 被动声纳模式下潜艇不会暴露目标, 隐蔽性好 声。呐 作为动物界里边,,被动声纳模式下,term_normalize,0.9,B稿‘声响’为OCR错字,ASR为‘声纳’,术语统一
584,20m53s,潜艇的艇艙,这是一艘弗吉尼亚级攻击核潜艇, 潜艇的艇首 布置着大型声呐阵列, 在早期批次上 它呈现为球形结构,,潜艇的艇首,minor_edit,0.95,B稿OCR错字'艙'ASR为'首',修正为'艇首'
646,23m2s,或者敌方主动声响锁定时,声学诱饵。 潜艇感知到来袭的声自导鱼雷, 或者敌方主动声呐锁定时 会从发射管快速射出声学诱饵, 它是潜艇的一种高电子替身, 声学诱饵通常是一个自航式的水下航行器,,或者敌方主动声呐锁定时,term_normalize,0.9,B稿为'声响'ASR为'声呐''声呐'是更规范的军事术语。
709,25m31s,当猎杀者的声响归于沉寂,把这一秒无限放大, 当深海的幽灵收起獠牙,当猎杀者的声呐归于沉寂。 这片蔚蓝疆域的博弈 却从未停止, 从鹦鹉螺的浮力控制到核潜艇的无限续航,,当猎杀者的声呐归于沉寂,minor_edit,0.95,B稿OCR错字'声响'ASR为'声呐',后者符合军事术语
1 line_no timestamp b_original asr_context final_text change_type confidence reason
2 10 0m22s 当声响模仿海豚 当潜艇披上鲨鱼皮消声瓦, 当声呐模仿海豚,看穿黑暗。 当乌贼的墨汁化作潜艇的电子替身, 自然早已写好了深海中生存与猎杀的终极教科书。 当声呐模仿海豚 term_normalize 0.95 B稿'声响'为OCR错字,ASR'声呐'为正确术语
3 18 0m39s 带您见证茫茫海中 自然早已写好了深海中生存与猎杀的终极教科书。 本期军事科技带您见证茫茫深海中潜艇的仿生之路。 各位观众你们好,欢迎收看军事科技,我是蓝皓。 带您见证茫茫深海中 editor_typo 0.95 B稿'海中'为OCR漏字,ASR'深海中'正确
4 231 8m14s 效果变变 但早期设计未能兼顾深浅海环境差异, 效果寥寥。 到了二战,德军和英军则试验新的组合涂装, 这些色彩既延续了上部深色下部浅色的仿生核心, 效果寥寥 minor_edit 0.95 B稿OCR错字'变变',ASR为'寥寥',用ASR覆盖
5 263 9m34s 在幽暗海中 于是纯黑色涂层应运而生, 它不仅能让潜艇在幽暗深海中完美融入环境, 消除视觉轮廓, 更凭借改良配方解决了褪色难题,成为潜艇光学隐身的终极方案。 呃因为我们讲涂层主要是为了颜色,也就是视觉上不被对手发现,那么很多的动物唉都有一层保护层,我们在建造潜艇的时候也是 在幽暗深海中 minor_edit 0.9 B稿OCR为‘海中’,ASR为‘深海中’,补充‘深’字更完整
6 426 15m21s 掠过躯体时产生的流噪声 更重要的是它能够有效降低水流掠过艇体时产生的流噪声, 让潜艇在深海中变得更安静, 也更加致命。 海豚在浑浊的海水中能够准确地找到小鱼, 掠过艇体时产生的流噪声 minor_edit 0.95 B稿OCR错字'躯体',ASR为'艇体',修正
7 528 18m49s 而被动声响模式 照亮目标的,同时也暴露了自己。 而被动声纳模式是静默航行, 利用被动声纳基诊接受对方的主动声纳探测信号来确定对手位置。 被动声纳模式下潜艇不会暴露目标, 而被动声纳模式 term_normalize 0.9 B稿‘声响’为OCR错字,ASR为‘声纳’,术语统一
8 533 18m59s 被动声响模式下 利用被动声纳基诊接受对方的主动声纳探测信号来确定对手位置。 被动声纳模式下潜艇不会暴露目标, 隐蔽性好 声。呐 作为动物界里边, 被动声纳模式下 term_normalize 0.9 B稿‘声响’为OCR错字,ASR为‘声纳’,术语统一
9 584 20m53s 潜艇的艇艙 这是一艘弗吉尼亚级攻击核潜艇, 潜艇的艇首 布置着大型声呐阵列, 在早期批次上 它呈现为球形结构, 潜艇的艇首 minor_edit 0.95 B稿OCR错字'艙',ASR为'首',修正为'艇首'
10 646 23m2s 或者敌方主动声响锁定时 声学诱饵。 潜艇感知到来袭的声自导鱼雷, 或者敌方主动声呐锁定时 会从发射管快速射出声学诱饵, 它是潜艇的一种高电子替身, 声学诱饵通常是一个自航式的水下航行器, 或者敌方主动声呐锁定时 term_normalize 0.9 B稿为'声响',ASR为'声呐','声呐'是更规范的军事术语。
11 709 25m31s 当猎杀者的声响归于沉寂 把这一秒无限放大, 当深海的幽灵收起獠牙,当猎杀者的声呐归于沉寂。 这片蔚蓝疆域的博弈 却从未停止, 从鹦鹉螺的浮力控制到核潜艇的无限续航, 当猎杀者的声呐归于沉寂 minor_edit 0.95 B稿OCR错字'声响',ASR为'声呐',后者符合军事术语
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,284 @@
# -*- coding: utf-8 -*-
"""
阶段 A:抽帧 + OCR(产出原始缓存 ocr_raw.jsonl)
================================================
策略:OCR 优先,每帧都 OCR。绝不使用亮度判空/dHash/IoU 过滤。
按 idx 断点续跑:读取已有 ocr_raw.jsonl 中最大 idx,从 max_idx+1 继续。
"""
import base64
import json
import os
import subprocess
import sys
import threading
from concurrent.futures import ThreadPoolExecutor, as_completed
from pathlib import Path
import requests
# 根治 Windows 控制台 GBK 崩溃:强制 stdout 用 UTF-8
sys.stdout.reconfigure(encoding="utf-8", errors="replace")
# ========================================================================
# 全局参数(放文件顶部做常量,方便后续调)
# ========================================================================
FPS = 1
CROP_BOTTOM_RATIO = 0.2
SIM_THRESHOLD = 0.85
OLLAMA_URL = "http://localhost:11434/api/generate"
MODEL = "deepseek-ocr"
OCR_PROMPT = "Free OCR."
# 并发 OCR 线程数(环境变量 OCR_NUM_WORKERS 可覆盖)。
# 需配合 Ollama 服务端 OLLAMA_NUM_PARALLEL >= 此值,否则服务端仍排队、提速无效。
NUM_WORKERS = int(os.environ.get("OCR_NUM_WORKERS", "4"))
# 工作目录(脚本所在目录)
WORK_DIR = Path(__file__).resolve().parent
SOURCE_VIDEO_DIR = WORK_DIR / "source"
FRAMES_DIR = WORK_DIR / "frames_v2"
OCR_RAW_PATH = WORK_DIR / "ocr_raw.jsonl"
# ========================================================================
# A1: 定位源视频
# ========================================================================
def find_source_video():
"""在工作目录 source/ 或根目录下定位 .mp4 或 .mkv 源视频"""
for ext in (".mp4", ".mkv"):
candidates = list(SOURCE_VIDEO_DIR.glob(f"*{ext}"))
if candidates:
return candidates[0]
# fallback: 也检查工作目录根(ep002 等视频直接在根目录的情况)
for ext in (".mp4", ".mkv"):
candidates = list(WORK_DIR.glob(f"*{ext}"))
if candidates:
return candidates[0]
raise FileNotFoundError(
f"{SOURCE_VIDEO_DIR}{WORK_DIR} 中均未找到 .mp4 或 .mkv 文件"
)
def get_video_info(video_path):
"""用 ffprobe 获取时长(秒)和分辨率(宽x高)"""
cmd = [
"ffprobe", "-v", "error",
"-select_streams", "v:0",
"-show_entries", "stream=duration,width,height",
"-of", "json",
str(video_path),
]
result = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")
if result.returncode != 0:
raise RuntimeError(f"ffprobe 失败:\n{result.stderr}")
info = json.loads(result.stdout)
stream = info["streams"][0]
duration = float(stream.get("duration", 0))
width = stream["width"]
height = stream["height"]
return duration, width, height
# ========================================================================
# A2: ffmpeg 抽帧
# ========================================================================
def extract_frames(video_path):
"""
用 ffmpeg 按 1fps 抽帧,裁切下方 20% 字幕区域。
输出到 frames_v2/frame_%04d.png(从 0001 开始)。
返回按文件名排序的帧路径列表。
"""
FRAMES_DIR.mkdir(parents=True, exist_ok=True)
# 清理旧帧避免残留
for old in FRAMES_DIR.glob("frame_*.png"):
old.unlink()
crop_expr = (
f"fps={FPS},"
f"crop=iw:ih*{CROP_BOTTOM_RATIO}:0:ih*{1 - CROP_BOTTOM_RATIO}"
)
frame_pattern = str(FRAMES_DIR / "frame_%04d.png")
cmd = [
"ffmpeg",
"-i", str(video_path),
"-vf", crop_expr,
"-q:v", "2",
frame_pattern,
"-y",
]
result = subprocess.run(cmd, capture_output=True, text=True, encoding="utf-8", errors="replace")
if result.returncode != 0:
raise RuntimeError(f"ffmpeg 抽帧失败:\n{result.stderr}")
frames = sorted(FRAMES_DIR.glob("frame_*.png"))
return frames
# ========================================================================
# OCR 单帧
# ========================================================================
def ocr_single_frame(image_path):
"""
调用本地 Ollama OCR 识别单帧。
API: POST /api/generate,单轮,图片走 base64,stream=false。
返回 strip 后的文本;异常向上抛出让调用方处理。
"""
with open(image_path, "rb") as fh:
img_bytes = fh.read()
img_b64 = base64.b64encode(img_bytes).decode("utf-8")
body = {
"model": MODEL,
"prompt": OCR_PROMPT,
"images": [img_b64],
"stream": False,
}
resp = requests.post(OLLAMA_URL, json=body, timeout=120)
resp.raise_for_status()
data = resp.json()
text = data.get("response", "").strip()
return text
# ========================================================================
# A3: 单帧验证
# ========================================================================
def test_single_frame():
"""
A3: 验证单帧 OCR。
对 frame_0076.png 调一次 OCR,打印原始返回。
若对不上预期则中止,不进入批量。
"""
test_frame = FRAMES_DIR / "frame_0076.png"
if not test_frame.exists():
print("[A3] [WARN] test frame not found:", test_frame)
print("[A3] skip single-frame check")
return
print("[A3] test frame:", test_frame.name)
try:
raw_text = ocr_single_frame(test_frame)
except Exception as exc:
print("[A3] [FAIL] OCR call failed:", exc)
print("[A3] check Ollama / deepseek-ocr, abort.")
sys.exit(1)
print("[A3] raw return:", repr(raw_text))
# 通用冒烟检查:OCR 返回非空中文即视为链路正常(不绑定某期具体台词);
# 真正的"Ollama 挂了"由上面 ocr_single_frame 抛异常 + sys.exit(1) 兜底。
if any("" <= ch <= "鿿" for ch in raw_text):
print("[A3] [OK] OCR 链路正常(返回非空中文)。")
else:
print("[A3] [WARN] OCR 返回无中文,链路可能异常,但不阻断,继续批量:", repr(raw_text))
# ========================================================================
# A4: 批量 OCR(按 idx 断点续跑 + 单帧容错)
# ========================================================================
def batch_ocr(frames):
"""
并发 OCR(线程池 NUM_WORKERS 路) + 按 idx 断点续跑 + 单帧容错。
- 读 ocr_raw.jsonl 已写入的 idx 集合(并发中断可能留空洞,用集合而非 max),只补未写帧
- NUM_WORKERS 个线程并发调 Ollama;每帧独立,输出与串行逐帧完全一致
- 写盘按完成顺序、加锁逐条 append + flush(stage_b 读后会按 idx 重排,顺序无所谓)
- 单帧 OCR 报错写 error 字段,不崩整个进程
"""
total = len(frames)
# --- 读已写入的 idx 集合(含 error 记录,避免重跑出重复 idx 行) ---
done_idx = set()
if OCR_RAW_PATH.exists():
with open(OCR_RAW_PATH, "r", encoding="utf-8") as fh:
for line in fh:
line = line.strip()
if not line:
continue
try:
rec = json.loads(line)
if "idx" in rec:
done_idx.add(rec["idx"])
except json.JSONDecodeError:
pass
# --- 构建 idx -> frame_path 映射 ---
idx_to_path = {}
for fp in frames:
idx = int(fp.stem.split("_")[1])
idx_to_path[idx] = fp
pending = [idx for idx in sorted(idx_to_path) if idx not in done_idx]
if not pending:
print(f"[A4] all {total} frames already done, skip.")
return
print(
f"[A4] 已完成 {len(done_idx)}/{total},待处理 {len(pending)} 帧,"
f"并发 {NUM_WORKERS}"
)
def _ocr_one(idx):
t_sec = idx - 1
frame_path = idx_to_path.get(idx)
if frame_path is None:
return {"idx": idx, "t_sec": t_sec, "text": "", "error": "frame file missing"}
try:
text = ocr_single_frame(frame_path)
return {"idx": idx, "t_sec": t_sec, "text": text}
except Exception as exc:
return {"idx": idx, "t_sec": t_sec, "text": "", "error": str(exc)}
write_lock = threading.Lock()
done_count = len(done_idx)
with open(OCR_RAW_PATH, "a", encoding="utf-8") as fh:
with ThreadPoolExecutor(max_workers=NUM_WORKERS) as pool:
futures = {pool.submit(_ocr_one, idx): idx for idx in pending}
for fut in as_completed(futures):
record = fut.result()
with write_lock:
fh.write(json.dumps(record, ensure_ascii=False) + "\n")
fh.flush()
done_count += 1
if done_count % 50 == 0:
print(f"{done_count}/{total}", flush=True)
print(f"{total}/{total}", flush=True)
print(f"[A4] OCR done, {total} records in {OCR_RAW_PATH}")
# ========================================================================
# 主流程
# ========================================================================
def main():
# A1
video_path = find_source_video()
duration, width, height = get_video_info(video_path)
print(f"[A1] video: {video_path}")
print(f"[A1] duration: {duration:.1f}s resolution: {width}x{height}")
# A2: skip re-extract if frames already exist
FRAMES_DIR.mkdir(parents=True, exist_ok=True)
existing = sorted(FRAMES_DIR.glob("frame_*.png"))
if existing:
print(f"[A2] {len(existing)} frames already exist, skip re-extract")
frames = existing
else:
print(f"[A2] ffmpeg extract (fps={FPS}, crop_bottom_ratio={CROP_BOTTOM_RATIO})...")
frames = extract_frames(video_path)
print(f"[A2] extracted {len(frames)} frames -> {FRAMES_DIR}")
# A3
test_single_frame()
# A4
batch_ocr(frames)
print("\nstage A done.")
if __name__ == "__main__":
main()
@@ -0,0 +1,300 @@
# -*- coding: utf-8 -*-
"""
阶段 B:文本去重 + 出稿(只读缓存,可反复重跑调阈值)
=======================================================
策略:基于 difflib 文本相似度折叠连续重复段,绝不使用像素级过滤。
"""
import csv
import json
import re
from difflib import SequenceMatcher
from pathlib import Path
# ═══════════════════════════════════════════════════════════════
# 全局参数(与阶段 A 共享,放文件顶部做常量)
# ═══════════════════════════════════════════════════════════════
FPS = 1
CROP_BOTTOM_RATIO = 0.2
SIM_THRESHOLD = 0.85
# 工作目录
WORK_DIR = Path(__file__).resolve().parent
OCR_RAW_PATH = WORK_DIR / "ocr_raw.jsonl"
B_MANUSCRIPT_PATH = WORK_DIR / "B稿_v2.txt"
DEBUG_CSV_PATH = WORK_DIR / "dedup_debug.csv"
BLANK_FILTERED_PATH = WORK_DIR / "blank_filtered.txt"
def similarity(a, b):
"""计算两个文本的 difflib 相似度(0.0 ~ 1.0)"""
if not a or not b:
return 0.0
return SequenceMatcher(None, a, b).ratio()
def is_blank_ocr(text):
"""基于文本的空场判定:空串 / HTML幻觉 / 不含汉字"""
t = text.strip()
if not t: # 空串
return True
if '<' in t and '>' in t: # HTML/markup 幻觉(如 <table>)
return True
if not re.search(r'[\u4e00-\u9fff]', t): # 不含任何汉字 → 非本节目字幕
return True
return False
# ═══════════════════════════════════════════════════════════════
# B1: 读缓存
# ═══════════════════════════════════════════════════════════════
def load_ocr_raw():
"""读 ocr_raw.jsonl,按 idx(时间)升序返回记录列表"""
if not OCR_RAW_PATH.exists():
raise FileNotFoundError(
f"ocr_raw.jsonl 不存在: {OCR_RAW_PATH}\n"
"请先跑阶段 A(stage_a_extract_ocr.py)。"
)
records = []
with open(OCR_RAW_PATH, "r", encoding="utf-8") as fh:
for line in fh:
line = line.strip()
if not line:
continue
rec = json.loads(line)
records.append(rec)
# 按 idx 升序
records.sort(key=lambda r: r["idx"])
return records
# ═══════════════════════════════════════════════════════════════
# B2: 折叠连续重复段(裁判在此,基于文本不基于像素)
# ═══════════════════════════════════════════════════════════════
def collapse_segments(records):
"""
维护"当前字幕"(文本 + 起始 t_sec),遍历每帧:
- 文本为空 → 空场:结束当前字幕(若有),并清空,不开新段。
- 非空且与当前字幕文本的 difflib 相似度 ≥ SIM_THRESHOLD → 同一条,并入当前段(记下这条文本备投票)。
- 非空且相似度 < SIM_THRESHOLD → 结束并输出当前段,用这帧开新段。
只比时间相邻帧,只折叠连续段;绝不全局去重。
每段最终文本 = 段内出现次数最多的 OCR 文本(多数投票,抵消个别帧抖动)。
每段时间戳 = 段内最早 t_sec。
返回: (segments, debug_rows)
segments: [{"start_t": float, "text": str}, ...]
debug_rows: [{idx, t_sec, ocr_text, decision, merged_into_start_t}, ...]
"""
segments = []
debug_rows = []
if not records:
return segments, debug_rows
current_text = None # 当前段内用于比对的参考文本
current_texts = [] # 当前段内所有 OCR 文本(用于投票)
current_start_t = None # 当前段起始 t_sec
current_segment_indices = [] # 当前段包含的帧号列表
def _finalize_segment():
"""输出当前段(若存在)"""
nonlocal current_text, current_texts, current_start_t, current_segment_indices
if current_text is not None and current_texts:
# 多数投票:选出现次数最多的文本
text_counts = {}
for t in current_texts:
text_counts[t] = text_counts.get(t, 0) + 1
best_text = max(text_counts, key=lambda k: text_counts[k])
segments.append({
"start_t": current_start_t,
"text": best_text,
})
current_text = None
current_texts = []
current_start_t = None
current_segment_indices = []
for rec in records:
ocr_text = rec["text"]
if is_blank_ocr(ocr_text):
# 空场:结束当前字幕(若有),并清空,不开新段
if current_text is not None:
_finalize_segment()
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "blank",
"merged_into_start_t": "",
})
continue
if current_text is None:
# 开新段
current_text = ocr_text
current_texts = [ocr_text]
current_start_t = rec["t_sec"]
current_segment_indices = [rec["idx"]]
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "new",
"merged_into_start_t": rec["t_sec"],
})
else:
sim = similarity(current_text, ocr_text)
if sim >= SIM_THRESHOLD:
# 同一条,并入当前段
current_texts.append(ocr_text)
current_segment_indices.append(rec["idx"])
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "merged",
"merged_into_start_t": current_start_t,
})
else:
# 结束当前段,用这帧开新段
_finalize_segment()
current_text = ocr_text
current_texts = [ocr_text]
current_start_t = rec["t_sec"]
current_segment_indices = [rec["idx"]]
debug_rows.append({
"idx": rec["idx"],
"t_sec": rec["t_sec"],
"ocr_text": ocr_text,
"decision": "new",
"merged_into_start_t": rec["t_sec"],
})
# 遍历结束,落最后一个段
_finalize_segment()
return segments, debug_rows
# ═══════════════════════════════════════════════════════════════
# B3: 输出 B稿_v2.txt
# ═══════════════════════════════════════════════════════════════
def write_b_manuscript(segments):
"""
输出 B稿_v2.txt,每行格式: [XmYs] 文本
例: [1m18s] 我是主持人蓝皓
"""
lines = []
for seg in segments:
t = seg["start_t"]
m = int(t) // 60
s = int(t) % 60
cleaned = re.sub(r'^[#*\->`\s]+', '', seg['text']).strip()
lines.append(f"[{m}m{s}s] {cleaned}")
with open(B_MANUSCRIPT_PATH, "w", encoding="utf-8") as fh:
fh.write("\n".join(lines) + "\n")
print(f"[B3] B稿_v2.txt 写入: {B_MANUSCRIPT_PATH} ({len(lines)} 行)")
return lines
# ═══════════════════════════════════════════════════════════════
# B4: 输出 dedup_debug.csv
# ═══════════════════════════════════════════════════════════════
def write_debug_csv(debug_rows):
"""
输出 dedup_debug.csv,逐帧记:
idx, t_sec, ocr_text, decision(new/merged/blank), merged_into_start_t
"""
with open(DEBUG_CSV_PATH, "w", encoding="utf-8", newline="") as fh:
writer = csv.writer(fh)
writer.writerow([
"idx", "t_sec", "ocr_text",
"decision", "merged_into_start_t",
])
for row in debug_rows:
writer.writerow([
row["idx"],
row["t_sec"],
row["ocr_text"],
row["decision"],
row["merged_into_start_t"],
])
print(f"[B4] dedup_debug.csv 写入: {DEBUG_CSV_PATH} ({len(debug_rows)} 行)")
# ═══════════════════════════════════════════════════════════════
# 主流程
# ═══════════════════════════════════════════════════════════════
def main():
print(f"[B] SIM_THRESHOLD = {SIM_THRESHOLD}")
# B1
records = load_ocr_raw()
print(f"[B1] 读取 ocr_raw.jsonl,共 {len(records)} 条记录")
# B2
segments, debug_rows = collapse_segments(records)
print(f"[B2] 折叠完成: {len(segments)} 个不连续字幕段")
print(f"[B2] 调试行数: {len(debug_rows)}")
# B3
lines = write_b_manuscript(segments)
# B4
write_debug_csv(debug_rows)
# ═══════════════════════════════════════════════════════════
# 跑完报告
# ═══════════════════════════════════════════════════════════
total_frames = len(records)
ocr_success = sum(1 for r in records if r["text"].strip())
blank_count = sum(1 for r in records if is_blank_ocr(r["text"]))
# 收集所有"被判空场但原文本非空"的去重文本
blank_but_nonempty = set()
for r in records:
t = r["text"]
if is_blank_ocr(t) and t.strip():
blank_but_nonempty.add(t)
print("\n" + "=" * 60)
print("跑完报告")
print("=" * 60)
print(f"抽帧总数: {total_frames}")
print(f"OCR 成功数(非空): {ocr_success}")
print(f"空场数: {blank_count}")
print(f"B稿_v2.txt 最终行数: {len(lines)}")
print("=" * 60)
print(f"B 稿路径: {B_MANUSCRIPT_PATH}")
print(f"调试表路径: {DEBUG_CSV_PATH}")
# 写出"被判空场但原文本非空"去重清单到文件
blank_list = sorted(blank_but_nonempty)
with open(BLANK_FILTERED_PATH, "w", encoding="utf-8") as fh:
for t in blank_list:
fh.write(t + "\n")
print(f"\n空白过滤清单写入: {BLANK_FILTERED_PATH} ({len(blank_list)} 条去重文本)")
# 打印"被判空场但原文本非空"的去重清单
if blank_but_nonempty:
print("\n" + "=" * 60)
print("【被判空场但原文本非空】去重文本清单(请肉眼确认无真中文字幕)")
print("=" * 60)
for i, t in enumerate(blank_list, 1):
print(f" [{i}] {repr(t)}")
print(f"{len(blank_but_nonempty)} 条去重文本")
else:
print("\n'被判空场但原文本非空'的文本。")
print("\n阶段 B 完成。")
if __name__ == "__main__":
main()
@@ -0,0 +1 @@
动能撞击|爱国者-3防空反导系统|萨德|蓝皓|饱和攻击|ADC Mk1|ADC Mk2|ADC Mk3|AN/SLQ-25|Bold|Deceptor|F/A-18E/F|MOSS Mk70|Nixie|SM-3|Sieglinde|U型潜艇|《军事科技》|乌贼|仿鲨鱼皮|光学隐身衣|压载水舱系统|反潜战|反鱼雷软杀伤系统|听觉陷阱|埃兹拉·李|声呐|声学假目标|声学指纹|声学诱饵|声自导鱼雷|大青花鱼号|弗吉尼亚级攻击核潜艇|德国|德国U型潜艇|拖曳声呐阵列|攻击核潜艇|核潜艇|歼-10|气幕弹|水听器|水声信号|水滴型|沟槽面|洛杉矶级|流噪声|海军|海豚|海龟号|消声瓦|消音瓦|深水炸弹|潜艇|生物声呐|生物流线|电子替身|盟军运输船队|美国海军|舷侧声呐阵列|艇艏声呐阵列|英国|英国海军|隐蔽色|霍兰号|非声探测设备|鲨鱼皮|鹦鹉螺|鹰号
@@ -0,0 +1,733 @@
[0m7s] 在浩瀚海洋深处
[0m9s] 数亿年的进化
[0m10s] 塑造了无数神奇的
[0m12s] 攻防利器
[0m14s] 如今的人类
[0m15s] 用钢铁和电路
[0m16s] 重新发明了这一切
[0m19s] 当潜艇
[0m20s] 披上鲨鱼皮 消声瓦
[0m22s] 当声呐模仿海豚
[0m24s] 看穿黑暗
[0m26s] 当乌贼的墨汁
[0m27s] 化作潜艇的电子替身
[0m30s] 自然早已写好了深海中
[0m32s] 生存与猎杀的
[0m34s] 终极教科书
[0m38s] 本期《军事科技》
[0m39s] 带您见证茫茫深海中
[0m42s] 潜艇的仿生之路
[1m21s] 各位观众你们好
[1m22s] 欢迎收看《军事科技》
[1m23s] 我是蓝皓
[1m26s] 在人类出现之前
[1m27s] 深海就是地球上
[1m29s] 最残酷的竞技场
[1m30s] 在这里生存的法则
[1m32s] 只有两条
[1m34s] 隐藏自己
[1m35s] 发现敌人
[1m37s] 深海依旧是地球上
[1m39s] 最后的黑暗疆域
[1m43s] 潜伏着人类工程学的杰作
[1m46s] 也是终极的刺杀兵器
[1m48s] 潜艇
[1m51s] 提到潜艇
[1m52s] 想必大家并不陌生
[1m54s] 这样一头深海巨兽
[1m56s] 从诞生至今
[1m57s] 都借鉴了大自然中的
[1m59s] 哪些动物的绝招呢
[2m2s] 1776年9月7日
[2m4s] 历史上第一次潜艇攻击开始了
[2m9s] 这次攻击
[2m10s] 是由埃兹拉·李来执行
[2m12s] 他驾驶着“海龟”号
[2m14s] 成功潜到英国战舰
[2m15s] “鹰”号的尾部
[2m17s] 接下去的工作
[2m18s] 就是用钻头在敌舰上穿孔
[2m21s] 以便固定炸药包
[2m24s] 他打钻的地方
[2m26s] 正好是一块金属板
[2m28s] 半个小时之后
[2m29s] 他仍然没有钻透敌舰
[2m31s] 只好上浮返回
[2m34s] 虽然“海龟”号
[2m35s] 没有成功取得战果
[2m37s] 但它拉开了
[2m38s] 潜艇实战的序幕
[2m41s] 从此
[2m42s] 人类的战场
[2m43s] 也随之从陆地
[2m44s] 水面
[2m45s] 发展到了水下
[2m47s] “海龟”号
[2m48s] 也凭借与现代潜艇相通的设计原理
[2m51s] 获得了世界上
[2m52s] 第一艘军用潜艇的称号
[2m55s] 在世界潜艇发展史
[2m57s] 占据了一席之地
[3m0s] “海龟”号潜艇
[3m1s] 顾名思义
[3m2s] 它的外形很像海龟
[3m4s] 舱内空气可供驾驶员
[3m7s] 呼吸半个小时
[3m9s] 在潜艇的上部
[3m10s] 还装有两根通气管
[3m12s] 以便上浮时打开
[3m13s] 下沉时关闭
[3m15s] 从而补充新鲜的空气
[3m18s] “海龟”号潜艇之所以能够
[3m20s] 成功地上浮下沉
[3m22s] 离不开对一种美丽动物的
[3m24s] 深刻学习
[3m27s] 它就是鹦鹉螺
[3m31s] 鹦鹉螺
[3m32s] 它是一种海洋中的动物
[3m35s] 非常地漂亮
[3m36s] 外壳非常漂亮
[3m37s] 但是你要到鹦鹉螺的内部
[3m40s] 转一圈的话
[3m41s] 它里边有很多的腔
[3m43s] 就像我们在陆地上
[3m46s] 看到的一个一个的小房子
[3m48s] 在它的腔里边
[3m49s] 人类正是学习了
[3m51s] 鹦鹉螺的这种功能
[3m53s] 在制造潜艇的过程中
[3m56s] 就采用了水柜
[3m58s] 水柜就是在这个
[4m0s] 潜艇的艇壳的里边
[4m3s] 筑成一个一个一个方块的
[4m5s] 就是类似于储水的柜子
[4m8s] 那么需要沉底的时候
[4m10s] 就向水柜里边注水
[4m12s] 水多了
[4m13s] 沉了
[4m14s] 潜艇就下沉到海底
[4m19s] 在亿万年的进化中
[4m20s] 鹦鹉螺
[4m21s] 掌握了一种堪称完美的
[4m23s] 浮力控制艺术
[4m25s] 它的螺旋形外壳
[4m27s] 被一系列隔膜
[4m28s] 分隔成数十个独立的气室
[4m30s] 如同一个精密的
[4m32s] 多舱式潜水器
[4m34s] 鹦鹉螺
[4m35s] 能精确调节每个气室内液体
[4m37s] 与气体的比例
[4m39s] 分泌液体
[4m40s] 进入气室时下沉
[4m42s] 排出液体
[4m43s] 让位给气体时上浮
[4m46s] 这种精妙的生理机制
[4m47s] 让它能在数百米的深海
[4m50s] 与浅层水域之间
[4m51s] 自如升降
[4m53s] 几乎不消耗任何额外能量
[4m56s] 人类潜艇的压载水舱系统
[4m58s] 正是对这一自然智慧的完美复刻
[5m1s] 当潜艇需要下潜时
[5m3s] 阀门打开
[5m4s] 海水涌入压载舱
[5m6s] 取代舱内空气
[5m8s] 艇体重量增加
[5m10s] 当需要上浮时
[5m12s] 高压气体
[5m13s] 将海水强行排出
[5m15s] 艇体重量减轻
[5m18s] 1897年
[5m19s] 一艘划时代的潜艇
[5m20s] 悄然下水
[5m23s] 这就是约翰·霍兰
[5m24s] 以自己名字命名的
[5m26s] 霍兰潜艇
[5m28s] 这艘潜艇
[5m29s] 汇集了众多开创式的设计
[5m32s] 以往的潜艇
[5m33s] 要么动力不足
[5m34s] 要么水下姿态不稳
[5m36s] 很难在实战中
[5m37s] 发挥较大的作用
[5m39s] 霍兰首次将压载舱
[5m41s] 拆分为主舱与辅助舱
[5m44s] 主压载舱
[5m45s] 负责核心沉浮
[5m47s] 而辅助舱
[5m48s] 专攻姿态校准
[5m49s] 能通过精准补水
[5m51s] 维持平衡
[5m52s] 精准调节潜深
[5m54s] 解决了早期潜艇
[5m55s] 纵倾失控的难题
[5m58s] 这套系统
[5m59s] 是现代潜艇操控系统的源头
[6m2s] 这一设计
[6m3s] 让潜艇
[6m4s] 真正具备了实战价值
[6m6s] 为深海作战开辟了道路
[6m9s] 从霍兰潜艇压载舱的手动阀门
[6m12s] 到现代潜艇压载舱的
[6m14s] 计算机控制高压气系统
[6m16s] 其核心原理始终未变
[6m18s] 正如鹦鹉螺
[6m20s] 用气体取代液体
[6m22s] 潜艇用海水取代空气
[6m25s] 这种能力
[6m26s] 鹦鹉螺用了数亿年进化完成
[6m28s] 而人类
[6m29s] 只用了不到一百年
[6m34s] 在广袤的海洋中
[6m35s] 生存
[6m36s] 是一场关乎看见
[6m37s] 与不被看见的永恒竞赛
[6m41s] 为了在这场竞赛中胜出
[6m43s] 无数的海洋生物
[6m44s] 进化出了一套精妙绝伦的
[6m46s] 色彩伪装策略
[6m48s] 这便是隐蔽色
[6m51s] 像虎鲸
[6m52s] 鲨鱼
[6m53s] 这样一生与海洋打交道的生物
[6m56s] 其背部往往呈现深蓝
[6m58s] 深灰色
[6m59s] 而其腹部通常是白色
[7m2s] 或者是银白色
[7m4s] 我们经常能够看到
[7m6s] 一只从深海上浮的虎鲸
[7m8s] 其白色的胸膛
[7m9s] 在来自下方的视线中
[7m11s] 几乎消失在明亮的天光里
[7m14s] 而一只从上方
[7m15s] 发起攻击的鲨鱼
[7m16s] 其深色的背部
[7m17s] 直到最后一刻
[7m19s] 才会被发现
[7m21s] 这套系统简单而高效
[7m23s] 本质上是一种光学隐身衣
[7m26s] 它抹平了生物体
[7m27s] 在三维空间中的立体感
[7m29s] 极大缩短了
[7m30s] 不被天敌或者是猎物
[7m32s] 发现的距离
[7m34s] 海军工程师很快意识到
[7m36s] 这正是潜艇在海洋中生存
[7m38s] 所需要的第一层能力
[7m43s] 一战时期
[7m44s] 潜艇多活跃于浅海区域
[7m47s] 主要面临目视侦察的威胁
[7m51s] 各国率先借鉴海洋生物的
[7m53s] 双色伪装逻辑
[7m55s] 尝试用浅灰
[7m56s] 绿蓝等颜色涂装艇身
[7m59s] 试图让潜艇
[8m0s] 融入近海的蓝灰色海水
[8m4s] 模仿的正是虎鲸腹部
[8m6s] 适配天光的浅色隐身思路
[8m10s] 但早期设计
[8m11s] 未能兼顾深浅海环境差异
[8m14s] 效果寥寥
[8m20s] 到了二战
[8m21s] 德军和英军
[8m22s] 则试验新的组合涂装
[8m25s] 这些色彩既延续了
[8m26s] 上部深色
[8m28s] 下部浅色的仿生核心
[8m30s] 又试图贴合
[8m31s] 浅海藻类与海床环境
[8m34s] 可一旦潜艇下潜深度增加
[8m37s] 这套设计便迅速失效
[8m41s] 阳光穿透海水层层衰减
[8m44s] 深海本就是一片幽暗
[8m47s] 浅色系艇身
[8m48s] 反而成为显眼目标
[8m50s] 更致命的是
[8m52s] 早期涂料易被海水冲刷氧化
[8m55s] 很快褪成乳白色
[8m57s] 让仿生伪装彻底失效
[9m8s] 真正的转折来自人类
[9m10s] 对深海环境的深刻洞察
[9m13s] 科学家发现
[9m15s] 当深度超过200米
[9m17s] 阳光完全消失
[9m19s] 黑色
[9m20s] 成为海洋的天然底色
[9m23s] 这与鲨鱼深色背部
[9m25s] 在深海中的隐身逻辑
[9m27s] 不谋而合
[9m29s] 于是纯黑色涂层
[9m31s] 应运而生
[9m32s] 它不仅能让潜艇
[9m34s] 在幽暗深海中
[9m35s] 完美融入环境
[9m37s] 消除视觉轮廓
[9m39s] 更凭借改良配方
[9m40s] 解决了褪色难题
[9m42s] 成为潜艇光学隐身的
[9m44s] 终极方案
[9m51s] 因为我们讲
[9m52s] 涂层主要是为了颜色
[9m54s] 也就是视觉上
[9m55s] 不被对手发现
[9m57s] 那么很多的动物
[9m59s] 都有一层保护层
[10m1s] 我们在建造潜艇的时候
[10m2s] 也是从自然界
[10m5s] 或仿生学里边学到了
[10m7s] 如何变化颜色
[10m9s] 因为颜色如果涂在潜艇上
[10m11s] 是很难随着环境变化的
[10m14s] 所以我们就要考虑
[10m15s] 潜艇它生存在
[10m16s] 一个什么样的环境里边
[10m18s] 所以随着潜艇以后
[10m20s] 也就是越来越先进
[10m23s] 它下潜的深度越来越深
[10m25s] 我们发现黑颜色
[10m27s] 在下潜以后
[10m29s] 不容易被发现
[10m30s] 可以把自己隐蔽得很好
[10m32s] 所以后来的潜艇
[10m34s] 也就是
[10m35s] 在二次大战以后的潜艇
[10m37s] 逐步逐步地就往黑色上靠近
[10m40s] 而现在
[10m41s] 世界各国的潜艇
[10m42s] 基本上全都涂成了黑颜色
[10m46s] 然而在深海
[10m48s] 仅仅看不见
[10m49s] 还远远不够
[10m51s] 随着潜艇潜得更深
[10m53s] 航行时间更长
[10m54s] 真正致命的威胁
[10m56s] 开始从光线转移到声音
[11m2s] 我听到它了
[11m11s] 找到它了 目标很近 正右舷083
[11m19s] 声音
[11m20s] 是深海中传播最远
[11m22s] 最难隐蔽的信号
[11m24s] 一丝多余的噪声
[11m26s] 就可能暴露位置
[11m27s] 招来猎杀
[11m33s] 于是
[11m34s] 潜艇的隐身逻辑
[11m35s] 也从颜色升级到了形态
[11m38s] 潜艇的外形
[11m40s] 并非一开始
[11m41s] 就是今天的样子
[11m43s] 很长一段时间里
[11m44s] 它更像是一艘
[11m45s] 能够下潜的水面舰艇
[11m48s] 二战时期的潜艇
[11m49s] 需要频繁浮出水面航行
[11m52s] 水下只是暂时藏身之所
[11m55s] 因此艇体高耸
[11m57s] 结构复杂
[11m58s] 水下阻力大
[11m59s] 噪声高
[12m1s] 真正的转折
[12m2s] 发生在核动力出现之后
[12m5s] 当潜艇可以长期潜航
[12m7s] 人类第一次开始
[12m9s] 只为水下生存
[12m10s] 来设计它的形状
[12m12s] 工程师将目光
[12m14s] 投向自然界
[12m15s] 鲸类
[12m16s] 海豚等高速游泳动物
[12m19s] 几乎都拥有同一种外形
[12m21s] 前圆后尖的水滴形
[12m24s] 1950年
[12m25s] 美国“大青花鱼”号实验潜艇
[12m28s] 验证了这一答案
[12m30s] 水滴型艇体
[12m31s] 显著降低阻力和流噪
[12m34s] 让潜艇更快 更安静
[12m36s] 也难被发现
[12m38s] 从此
[12m39s] 现代潜艇的外形
[12m41s] 几乎统一
[12m42s] 当潜艇的外形
[12m44s] 已经足够像一条鱼
[12m46s] 真正的较量才刚刚开始
[12m49s] 接下来要隐藏的
[12m51s] 不再是轮廓
[12m52s] 而是声音本身
[12m57s] 生物界
[12m58s] 鲨鱼的速度非常快
[13m0s] 因为在水中
[13m1s] 它可以
[13m3s] 以非常高的速度前进
[13m5s] 实际上
[13m6s] 它除了形体的这种流线型以外
[13m9s] 还有就是它的皮肤
[13m11s] 为什么我们很多的游泳运动员
[13m13s] 所采用的游泳衣或游泳裤
[13m16s] 采用的是叫所谓鲨鱼皮呢
[13m19s] 就是借鉴了鲨鱼的
[13m21s] 它皮肤上的这种V字形
[13m23s] 也就是它在前进的时候
[13m25s] 水流是顺着
[13m27s] 箭头的方向向后流的
[13m29s] 减少了阻力
[13m31s] 减少了就是水
[13m32s] 与鲨鱼皮肤的摩擦的声音
[13m35s] 然后使它快速地前行
[13m37s] 既减少了阻力
[13m38s] 又降低了声音
[13m40s] 所以我们在建造潜艇的时候
[13m42s] 也借鉴了这样的情况
[13m45s] 或者是说借鉴了这种功能
[13m48s] 我们在材料上
[13m49s] 采取一些特殊的材料
[13m51s] 因为在深海大洋里边
[13m54s] 这种材料
[13m55s] 就是我们讲的这种消声瓦
[13m58s] 因为消声瓦既要保证
[14m0s] 它在水中
[14m3s] 能够把噪音裹在潜艇里边
[14m7s] 不被对方探测到
[14m8s] 同时它也要像鲨鱼的皮肤一样
[14m11s] 有一些减少与水的
[14m14s] 这种摩擦和阻力
[14m16s] 来使这个声音降低
[14m19s] 也就是潜艇在高速航行的时候
[14m21s] 要降低它与水的摩擦的声音
[14m25s] 这样的话可以进一步地
[14m27s] 使我们的潜艇
[14m29s] 就是像鲨鱼一样
[14m30s] 悄然无声地在水中行进
[14m34s] 海豚的皮肤
[14m36s] 能够分泌一种特殊黏液
[14m38s] 使水流紧贴体表滑行
[14m40s] 从而减少湍流与阻力
[14m43s] 而更为人熟知的
[14m45s] 是鲨鱼的皮肤结构
[14m47s] 鲨鱼体表
[14m48s] 覆盖着无数微小的V型盾鳞
[14m52s] 这些看似粗糙的纹理
[14m54s] 反而能打散涡流
[14m55s] 抑制水流紊乱
[14m57s] 大幅降低摩擦阻力
[15m0s] 潜艇工程师
[15m1s] 从中得到启发
[15m3s] 在现代潜艇的消声瓦表面
[15m6s] 常会设计出
[15m7s] 类似的微沟槽
[15m8s] 或者细微纹理
[15m10s] 这种被称为沟槽面
[15m12s] 或仿鲨鱼皮的结构
[15m14s] 并不仅仅是为了
[15m15s] 让潜艇航行得更省力
[15m18s] 更重要的是
[15m19s] 它能够有效降低水流
[15m21s] 掠过艇体时产生的流噪声
[15m24s] 让潜艇在深海中
[15m26s] 变得更安静
[15m27s] 也更加致命
[15m29s] 海豚在浑浊的海水中
[15m31s] 能够准确地找到小鱼
[15m33s] 还能分辨出哪条更加肥美
[15m36s] 这种能力来自它们独特的
[15m38s] 水下视觉生物声呐
[15m41s] 当海豚发出
[15m43s] 咔嗒咔嗒的声音时
[15m44s] 这些声波
[15m45s] 就像无形的探照灯向前发射
[15m49s] 声音遇到物体产生回声
[15m51s] 海豚通过下颚
[15m53s] 接收这些回声
[15m54s] 就能在脑海中
[15m56s] 描绘出周围环境的立体图像
[16m0s] 它们能够听出
[16m1s] 藏在泥沙里的两条鱼
[16m3s] 哪条更加肥美
[16m5s] 前方是岩石还是海草
[16m8s] 这种能力
[16m9s] 让任何人工声呐都望尘莫及
[16m13s] 人类从海豚身上
[16m14s] 获得了灵感
[16m16s] 发明了声呐技术
[16m19s] 二战爆发后
[16m20s] 德国U型潜艇
[16m22s] 再次成为海战中的核心力量
[16m25s] 在广阔的大西洋上
[16m27s] 它们潜伏在航道附近
[16m29s] 利用夜色和水下掩护
[16m31s] 对盟军运输船队
[16m33s] 发动突然袭击
[16m35s] 单艘潜艇就足以瘫痪
[16m37s] 一整条补给线
[16m39s] 对英国而言
[16m40s] 这不仅是军事问题
[16m42s] 更是生存危机
[16m45s] 装备
[16m46s] 军需
[16m47s] 几乎全部依赖海上运输
[16m50s] 而水下的敌人却始终看不见
[16m53s] 面对潜艇带来的巨大压力
[16m56s] 英国海军被迫改变思路
[16m58s] 不再依赖目视搜索
[17m0s] 而是尝试在深海中
[17m2s] 倾听敌人的存在
[17m4s] 以水听器为基础
[17m6s] 配合主动声波探测
[17m7s] 声呐系统
[17m9s] 逐步成型
[17m11s] 并率先装备在
[17m12s] 驱逐舰和护卫舰上
[17m15s] 在护航战例中
[17m17s] 第一次实现了对潜艇的
[17m19s] 稳定定位
[17m21s] 使深水炸弹不再是盲目投掷
[17m24s] 而成为有目标的打击
[17m27s] 随着反潜技术的成熟
[17m29s] 曾经游刃有余的U型潜艇
[17m31s] 开始频繁暴露行踪
[17m33s] 损失不断增加
[17m36s] 大西洋的海战
[17m37s] 从潜艇的单方面猎杀
[17m39s] 逐渐演变成一场
[17m41s] 围绕隐蔽与探测的
[17m43s] 技术对抗
[17m45s] 而这一技术
[17m46s] 正是源自大自然中的
[17m48s] 生物声呐
[17m51s] 那么说到声呐
[17m53s] 就涉及到一个有趣的知识
[17m56s] 潜艇在水下航行时
[17m58s] 由于水的密度
[17m59s] 是空气密度的大约800倍
[18m2s] 导致雷达电磁波
[18m3s] 通讯电磁波
[18m4s] 无法穿透海水
[18m7s] 严谨地来说
[18m8s] 就是被海水快速地吸收
[18m10s] 传不远
[18m11s] 因此
[18m12s] 声呐就成为了潜艇的主要探测工具
[18m16s] 声呐的本质
[18m17s] 是一个经过微调的耳朵
[18m19s] 它的工作原理
[18m20s] 类似于鲸鱼或海豚的回声定位
[18m24s] 根据工作类型
[18m25s] 声呐可分为
[18m26s] 主动声呐和被动声呐
[18m29s] 主动声呐模式
[18m30s] 需要潜艇主动发射声呐信号
[18m33s] 声呐信号接触到目标后会反射回来
[18m37s] 再被潜艇捕捉
[18m39s] 但在战争中
[18m40s] 这不是一个明智的决策
[18m42s] 因为这种探索
[18m43s] 就像黑夜中打开手电筒
[18m46s] 照亮目标的同时
[18m47s] 也暴露了自己
[18m49s] 而被动声纳模式
[18m51s] 是静默航行
[18m53s] 利用被动声呐基阵
[18m54s] 接收对方的主动声呐探测信号
[18m57s] 来确定对手位置
[18m59s] 被动声纳模式下
[19m1s] 潜艇不会暴露目标
[19m3s] 隐蔽性好
[19m5s] 声呐
[19m6s] 作为动物界里边
[19m7s] 海豚
[19m9s] 是有它特异的功能
[19m11s] 因为海豚
[19m12s] 它是从嘴里
[19m13s] 发出不同的声响
[19m15s] 然后声响传出去以后
[19m18s] 如果撞在礁石上
[19m20s] 就是海底的礁石上
[19m22s] 会反射回来一个回波
[19m24s] 它用嘴巴下面的接收器
[19m28s] 去把这个声音接收到
[19m30s] 然后判定这是石头还是鱼类
[19m33s] 如果它的发出去的声音
[19m37s] 撞上的是鱼类
[19m39s] 它的回声
[19m41s] 是和撞在岩石上的声音不同的
[19m44s] 而且它收到的回波
[19m47s] 也就是声音传播
[19m50s] 回波在水里传的
[19m51s] 因为很远
[19m53s] 它接收下来就可以分辨出来
[19m55s] 这是它捕食的猎物了
[19m59s] 那么既然
[20m0s] 海豚有这么好的这种功能
[20m4s] 也就类似于声呐的功能
[20m6s] 人类就向它们学习
[20m8s] 就仿制了这种声响
[20m10s] 这就是主动声响
[20m12s] 也就是当我的潜艇
[20m14s] 航行的时候
[20m15s] 我不断地通过
[20m17s] 我的声呐向外释放声波
[20m21s] 当这些声波
[20m23s] 放到海洋里边去之后
[20m25s] 它会一去不复返
[20m26s] 但是如果这些声波
[20m29s] 撞击到了
[20m30s] 对方的潜艇或者是舰艇
[20m33s] 或者是海底的这些礁石
[20m36s] 它反射回来的声波是不一样的
[20m38s] 这样就凭借我们声呐兵
[20m41s] 来收到的回波
[20m43s] 判断前面是金属
[20m46s] 还是石头还是洋流
[20m49s] 这是一艘
[20m50s] 弗吉尼亚级攻击核潜艇
[20m53s] 潜艇的艇首
[20m54s] 布置着大型声呐阵列
[20m56s] 在早期批次上
[20m58s] 它呈现为球形结构
[21m0s] 它始终对前方海域
[21m2s] 进行持续探测
[21m4s] 通过分析回波的时间与特征
[21m7s] 潜艇
[21m8s] 能够判断目标的距离
[21m10s] 方位
[21m11s] 并对水下接触进行初步识别
[21m14s] 沿着艇体左右两侧
[21m16s] 分布着舷侧声呐阵列
[21m19s] 海豚身体两侧的侧线系统
[21m22s] 负责监听来自各个方向的
[21m24s] 细微声学变化
[21m26s] 即使潜艇保持静默状态
[21m28s] 不主动发声
[21m30s] 这些阵列依然能够捕捉
[21m32s] 远处螺旋桨的低频噪声
[21m34s] 以及水流扰动形成的异常信号
[21m38s] 在潜艇尾部
[21m39s] 一条细长的
[21m40s] 拖曳声呐阵列被放出
[21m43s] 这是弗吉尼亚级
[21m44s] 最重要的远程感知手段之一
[21m47s] 它远离艇体自身的噪声干扰
[21m50s] 将潜艇的声觉
[21m52s] 延伸到更远的海域
[21m54s] 用于发现极其微弱
[21m55s] 距离极远的水下目标
[21m58s] 艇舯声呐
[21m59s] 舷侧阵列
[22m0s] 与拖曳声呐协同工作
[22m3s] 使这艘潜艇
[22m4s] 即使在完全隐蔽的状态下
[22m6s] 也能构建起一幅
[22m8s] 连续立体的水下态势图
[22m13s] 当生存受到直接威胁时
[22m16s] 顶尖的猎手
[22m17s] 与最先进的武器
[22m18s] 都诉诸同一种策略
[22m21s] 制造混乱
[22m22s] 隐藏本体
[22m24s] 当乌贼遇到危险时
[22m26s] 会迅速喷出浓密的墨汁
[22m29s] 它并非简单的黑色液体
[22m31s] 它在海水中会迅速扩散
[22m33s] 形成一个与自身形态相似的
[22m36s] 浓密的墨汁伪影
[22m39s] 这个深色轮廓能够立即吸引
[22m41s] 并且锁定捕食者的
[22m43s] 视觉注意力
[22m44s] 为真身的逃离
[22m46s] 创造关键的时间窗口
[22m49s] 潜艇工程师
[22m50s] 完美地借鉴了这套
[22m52s] 复杂的求生系统
[22m54s] 并将其转化为防御装备
[22m57s] 声学诱饵
[22m59s] 潜艇感知到来袭的
[23m1s] 声自导鱼雷
[23m2s] 或者敌方主动声呐锁定时
[23m5s] 会从发射管
[23m6s] 快速射出声学诱饵
[23m8s] 它是潜艇的一种高电子替身
[23m12s] 声学诱饵
[23m13s] 通常是一个自航式的
[23m15s] 水下航行器
[23m16s] 被发射后
[23m17s] 它会精确模仿母艇的
[23m19s] 发动机噪声
[23m21s] 螺旋桨节拍等
[23m22s] 独特的声学指纹
[23m24s] 还会主动航行
[23m26s] 制造出比气幕弹
[23m28s] 更像一艘真实潜艇的
[23m29s] 移动声学目标
[23m31s] 来袭的智能鱼雷
[23m33s] 能够区分简单的气泡幕
[23m35s] 和复杂的潜艇噪声
[23m37s] 声学诱饵
[23m38s] 通过发出更具吸引力的
[23m40s] 听觉陷阱
[23m41s] 引诱鱼雷偏离航道
[23m43s] 转而追踪并攻击这个替身
[23m47s] 而这些诱饵的发现
[23m50s] 实际上就是根据海洋动物
[23m52s] 它一些保护自己的这些方式
[23m55s] 来学习的
[23m56s] 因为它们要么金蝉脱壳
[23m58s] 要么以假乱真
[24m2s] 所以我们看
[24m3s] 随着人工智能的发现
[24m5s] 随着我们无人装备的发现
[24m9s] 我们就制造了
[24m11s] 不同的这种诱饵
[24m13s] 主动的 被动的
[24m15s] 总之当发现潜艇
[24m17s] 被攻击或被人发觉的时候
[24m19s] 就扔出一个假目标
[24m21s] 向不同的方向
[24m22s] 甚至是相反的方向来行进
[24m25s] 让它的鱼雷
[24m26s] 让它的追踪的设备
[24m28s] 去跟踪假目标
[24m30s] 而真正的潜艇
[24m31s] 悄悄地就逃生了
[24m34s] 控制室 这里是声响室
[24m35s] 水中有鱼雷 方位241
[24m38s] 高速前进 右满舵
[24m42s] 找到它了 目标很近 正右舷083
[24m49s] 发射5英寸的反鱼雷诱饵
[24m51s] 发射反鱼雷诱饵
[25m9s] 这套系统
[25m10s] 在实战与对抗演练中
[25m12s] 屡建奇功
[25m14s] 其核心战术
[25m15s] 都与数百万年前的乌贼
[25m17s] 如出一辙
[25m19s] 乌贼用一团墨汁
[25m21s] 换取生存的时间
[25m23s] 人类则用电子替身
[25m25s] 把这一秒无限放大
[25m28s] 当深海的幽灵收起獠牙
[25m31s] 当猎杀者的声呐归于沉寂
[25m34s] 这片蔚蓝疆域的博弈
[25m36s] 却从未停止
[25m38s] 从鹦鹉螺的浮力控制
[25m40s] 到核潜艇的无限续航
[25m42s] 从乌贼的墨汁
[25m43s] 到潜艇的电子诱饵
[25m46s] 我们见证了一场
[25m47s] 跨越数亿年的
[25m48s] 军事科技进化
[25m51s] 自然用漫长的时光
[25m52s] 雕琢出生存的智慧
[25m54s] 人类用智慧在钢铁中
[25m57s] 复刻这些法则
[25m59s] 这不仅是矛与盾的较量
[26m1s] 更是对生命本身
[26m3s] 最深刻的学习
[26m5s] 下一场改变游戏规则的技术革命
[26m8s] 或许正在随着
[26m9s] 某只深海生物的游弋
[26m11s] 在黑暗中悄然酝酿
[26m15s] 感谢您持续关注
[26m16s] 国防军事频道《军事科技》
[26m19s] 我们下周同一时间
[26m20s] 再见
+1 -2
View File
@@ -958,6 +958,7 @@ def align_batch(
max_tokens=4096, max_tokens=4096,
temperature=0.0, temperature=0.0,
) )
parsed = _parse_align_json(raw_response, len(batch_b))
except Exception as e: except Exception as e:
print( print(
f"[fusion_align] LLM 调用失败,回退: {e}", f"[fusion_align] LLM 调用失败,回退: {e}",
@@ -974,8 +975,6 @@ def align_batch(
) )
return records return records
parsed = _parse_align_json(raw_response, len(batch_b))
records = [] records = []
for item in parsed: for item in parsed:
records.append( records.append(