ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

AI自动生成车队无线电字幕:F1 Replay Timing Whisper+AI双引擎字幕系统揭秘

AI自动生成车队无线电字幕:F1 Replay Timing Whisper+AI双引擎字幕系统揭秘

【免费下载链接】F1ReplayTiming

Visualisation of real-time track data and telemetry synced to F1 replays.

项目地址:https://gitcode.com/gh_mirrors/f1/F1ReplayTiming
点击查看免费下载

F1 Replay Timing 是一款把 F1 实时赛道数据、遥测与官方回放视频精确同步的可视化项目,它的车队无线电字幕功能尤为亮眼:Whisper 本地语音识别先“听写”,多模态 AI 再“校对”,两条引擎自动为车手无线电生成逐字字幕,让你在回放和直播中同步看懂每一次 Box Box。

功能全景:赛车旁边的无线电弹层 🎧

F1 官方会在直播计时流中挑出约 20–40 条精彩无线电,发布车手编号、时间戳和 MP3 链接——但只发音频,不发文字。F1 Replay Timing 的解法很巧妙:

  • 音频直接从 F1 服务器播放,服务器端不存储任何音轨;
  • 字幕完全在本地生成:Whisper 先把语音转成文字草稿;
  • 开启 AI 校对后,每条草稿再交给能“听声音”的 AI 模型修正;
  • 回放页与直播页都会按时间轴弹出弹层:车手姓名 + 字幕 + 原声音频,快进跳过的片段不会连环轰炸。

前端弹层逻辑在 TeamRadio.tsx,字幕数据接口为GET /api/sessions/{year}/{round}/team-radio(见 team_radio.py)。

双引擎字幕是如何生成的 ⚙️

引擎一:Whisper 本地听写(faster-whisper)

核心逻辑在 team_radio.py 的transcribe,几个工程细节让识别率明显提升:

细节作用
动态 initial_prompt把本片车手姓氏和当年术语(tyres、safety car、DRS/boost)喂给 Whisper,帮它听对车手名字
VAD 静音过滤跳过无人说话的静默段,防止 Whisper “脑补”
提示回读检测识别出“把提示词读回来”的假字幕并丢弃(见 _is_prompt_echo)
英式拼写修正把多语言模型爱写的 "tires" 强制改成 F1 标准的 "tyres"

模型按需自动下载到DATA_DIR/whisper,后台下载、进度可见,详见 whisper_models.py。

引擎二:AI 校对(OpenRouter 多模态模型)

_caption_ai.py 会把三样东西打包发给 OpenRouter 上的音频模型:

  1. 音频本体(Base64 内嵌,模型真的在“听”);
  2. Whisper 草稿(仅作参考提示);
  3. F1 语境:正在讲话的车手、全场车手名单、当前赛事、赛季术语表(box box、undercut、safety car…2026 起自动换成 boost/overtake mode)。

指令要求模型严格忠于音频、不添加解释、保留 "copy" "box, box" 等原话,并只返回 JSON(INSTRUCTIONS)。于是 "The clerk" 能被纠正为 "Leclerc"。任何一步失败都会静默回退到 Whisper 草稿,字幕永不缺席。

快速上手:开启 AI 字幕的 3 个步骤 🚀

  1. 在.env中加入OPENROUTER_API_KEY(在 OpenRouter 官网获取密钥);
  2. 打开前端Settings → Team Radio,打开Improve captions with AI开关,选择 AI 模型;
  3. 点击 Save。新选的 Whisper 模型会立刻后台下载,页面实时显示进度条。

也可以在.env中直接配置(环境变量优先,界面上会显示为锁定):

环境变量默认值说明
TEAM_RADIO_AIfalse开启 AI 校对(需OPENROUTER_API_KEY)
TEAM_RADIO_AI_MODELgoogle/gemini-3.5-flash-lite需支持音频输入的 OpenRouter 模型
TEAM_RADIO_MODELsmall.en回放用的 Whisper 模型
TEAM_RADIO_LIVE_MODEL同回放直播专用模型(要求更快出字幕)
TEAM_RADIO_CAPTIONStrue设为false关闭字幕(音频照播)

配置读写与“锁定”规则集中在 caption_settings.py,前端对应 CaptionSettings.tsx。

Whisper 模型怎么选?🧩

模型大小特点(树莓派 5 / int8 实测参考)
tiny.en75 MB最快、最省资源,精度一般
base.en145 MB偏快,精度低于 Small
small.en480 MB默认,约 12 秒/条
medium.en1.5 GB实测比 Large v3 Turbo 慢且不更准
large-v3-turbo1.6 GB最准,约 24 秒/条,直播在慢机器上可能跟不上

💡 推荐组合:回放页用large-v3-turbo换最高精度,直播通过TEAM_RADIO_LIVE_MODEL换成small.en,保证字幕在转播延迟内就绪。设置保存后对新处理的车次生效,旧场次重新处理即可刷新字幕。

项目结构速览 📁

  • 字幕主流程:backend/services/team_radio.py
  • AI 校对引擎:backend/services/caption_ai.py
  • 设置与模型清单:backend/services/caption_settings.py
  • 模型后台下载:backend/services/whisper_models.py
  • 字幕设置 API:backend/routers/team_radio.py
  • 全部环境变量说明:README.md

不用写一行代码,只要一个 API Key,你就拥有了自动滚动、中英俱乐部车手全名、赛季术语精准的车队无线电字幕——这正是 F1 Replay Timing 把“双引擎”玩明白的样子。🏁

【免费下载链接】F1ReplayTiming

Visualisation of real-time track data and telemetry synced to F1 replays.

项目地址:https://gitcode.com/gh_mirrors/f1/F1ReplayTiming
点击查看免费下载
上一篇:英伟达投资的 Reflection AI 出手:开放权重 Beam 正面硬刚 Qwen3.8 与 Kimi
下一篇:浏览器里的虚拟机键盘:PegaProx noVNC 控制台与 xterm.js 终端使用详解

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进