VoxPERFORMANCE BY DESIGN 进入工作台 ↗

PART 03 / BUILT STEP BY STEP

从第一段录音,
走向完整的语音平台。

先解决一个真实问题,再把识别、内容管理和计算方式一步步接起来。

2026.02 → 2026.09基于当前分支的真实 Git 历史代码快照 e3ab251
已提交的实现当前工作区后续计划
  1. 上传、账户与存储
    01
    已实现 · 有提交记录

    先让内容进来,也能留下来。

    从 Gin 服务、音频上传与校验开始,加入 PostgreSQL、注册登录、JWT 和对象存储上传追踪。

    带来的变化

    建立内容属于谁、保存在哪里的基础,支持之后找回和管理。

    查看 3 条代表性提交 +
    • 223bd21 ↗feat: add audio upload with validation and tests
    • 902629e ↗feat: add user authentication with signup and login
    • 5dfa34b ↗feat: file upload to OSS with DB tracking
  2. 本地识别
    02
    已实现 · 有提交记录

    让声音第一次变成文字。

    通过 cgo 接入 whisper.cpp,加入本地转写与快捷键录音,并支持将 m4a 转成 WAV。

    带来的变化

    形成从声音输入到文字输出的最初流程。

    查看 3 条代表性提交 +
    • 78ca9cd ↗feat: add whisper transcriber via whisper.cpp, bridge golang and c via cgo
    • 588498c ↗feat: add local transcription API with hotkey recording
    • 5ea9f3f ↗feat: add support for IOS shortcut, transfer m4a to wav via ffmpeg
  3. 服务拆分
    03
    已实现 · 有提交记录

    从单体走向明确的服务边界。

    逐步建立 API、文件、任务和转写服务,以 gRPC 连接;文件存储与元数据实现采用接口抽象。

    带来的变化

    为替换存储实现、独立部署和后台处理建立边界。

    查看 4 条代表性提交 +
    • 7753242 ↗refactor: remove monolith code in favor of microservices
    • f58a8ed ↗feat: add 02_fileService with gRPC server, MinIO blob, and Postgres meta
    • 9f32895 ↗refactor: design oss interface and minio implementation
    • 0087302 ↗feature: grpc server to provide file Upload, Download, List completed
  4. 异步处理
    04
    已实现 · 有提交记录

    把耗时识别交给后台 worker。

    引入 RabbitMQ、worker 处理流水线和状态回报,接通任务接口;加入网页入口与 Compose 部署。

    带来的变化

    任务创建与执行分开,长任务不再依赖持续等待的 Web 请求。

    查看 4 条代表性提交 +
    • 883f9ad ↗feat: add RabbitMQ publisher/consumer skeleton for task queue
    • b543440 ↗feat: rework 04 worker - pipeline, manual ack, grpc callback, e2e transcription verified
    • 76dd98f ↗feat: add static frontend - login, upload, transcribe, poll
    • d36dfb4 ↗feat: containerize all services with docker-compose
  5. 时间戳与存储
    05
    已实现 · 有提交记录

    文字开始能回到真实的声音。

    为转写增加段落结构,在前端使用;随后修正本地模型时间戳读取方式,并扩展阿里云 OSS 存储实现。

    带来的变化

    从一整篇文字,走向可按段定位与回听的内容。

    查看 3 条代表性提交 +
    • f1020c3 ↗feat: add segements for transcription result & use it in the frontend
    • 8404545 ↗feat: add aliyun oss implementation of blob interface
    • ab4642a ↗fix: pull segments instead of using the callback for real timestamps
  6. 标准音轨
    06
    已实现 · 有提交记录

    把转码加入正式处理链路。

    新增独立 ffmpeg 转码 worker,任务服务先派发转码,再进入转写阶段。

    带来的变化

    用户提交媒体后,系统接手音轨准备,减少手工格式转换。

    查看 2 条代表性提交 +
    • 4743398 ↗feat: add transcode worker that normalizes media with ffmpeg
    • 68d35d9 ↗feat: run transcode before transcribe as a task stage
  7. 生词与阅读
    07
    已实现 · 有提交记录

    让转写稿继续服务学习。

    实现词汇提取 HTTP 服务,加入部署与前端高亮;Web 改由独立 nginx 容器提供。

    带来的变化

    正文、生词候选和释义形成关联,提高同一份内容的使用价值。

    查看 3 条代表性提交 +
    • 9781c71 ↗feat: add vocabulary extraction http service
    • 29a05cf ↗feat: serve the web client from its own nginx container
    • f9693f2 ↗feat: optimize frontend rendering, can highlight the words
  8. 混合引擎与分队列
    08
    已实现 · 有提交记录

    长短音频,走不同处理路径。

    增加 ElevenLabs 云端转写 worker;按音频时长拆分短、长转写队列,并允许配置默认 10 分钟阈值。

    带来的变化

    分开组织等待与资源:短任务走云端,长任务用本地计算,减少长音频云端调用量。

    查看 3 条代表性提交 +
    • 7673a81 ↗feat: add elevenlabs cloud transcriber worker
    • 3e82597 ↗feat: route transcription to short or long queue by audio duration
    • ec8b86c ↗chore: pass the short audio threshold to the task service
  9. 文件与任务清理
    09
    已实现 · 有提交记录

    补上内容管理的退出路径。

    增加文件删除、关联任务及输出清理,再从 API 暴露完整删除入口。

    带来的变化

    内容可以积累,也可以管理;原始文件与派生产物一起考虑。

    查看 3 条代表性提交 +
    • a72f255本地提交feat: delete files from storage and metadata
    • 27c90c2本地提交feat: delete a file's tasks and their outputs
    • e3ab251本地提交feat: add the delete file endpoint
  10. 前端体验迭代
    10
    已在工作区实现 · 尚未提交

    把已有能力,组织成可演示的产品。

    完善录音试听、播放恢复与字幕定位,调整字幕可读性;加入以性能公式为核心的价值页、可点击的架构图和这份演进路线。

    带来的变化

    使用者可以完成录音、转写与回听,面试官可以沿着产品价值追到工程实现。

    此项来自当前前端工作区,不计入以上 Git 提交;本轮未修改后端。

NEXT / 建议的下一程

用数据检验性能,
用工程补齐可靠性。

下面是后续计划,尚未作为已实现能力展示。

01 / 性能基线

让三个维度都可测。

固定样本与运行环境,记录 WER / CER、用户操作投入、端到端 P50 / P95、吞吐与每项任务成本。

02 / 可靠性

把失败路径补完整。

继续完善幂等、失败重试、死信和数据库与消息的一致性,再验证备份恢复。

03 / 扩展与运维

让扩展能力经过验证。

对齐当前队列的 KEDA 示例,完成并发压测,补充配额、访问边界与监控告警。

路线图按代表性提交整理,阶段日期采用 Git 记录。没有远程分支记录的提交标为“本地提交”;提交记录说明代码演进,不代替线上部署或性能验收。

把演进与设计连起来看

每一次调整,都回应一个问题。

回到整体架构,看现在的模块如何共同服务准确率、Productivity 与速度。

查看交互架构图 →