# faster-whisper 词级时间戳：从单词 JSON 核对短视频字幕

faster-whisper 词级时间戳通过独立输入、具体脚本和逐项回听完成。本页附 CPU tiny/int8 真实 ASR 结果，保留误识别，人工原文单独保存。

## 1. 准备带停顿的短句录音

input.wav 朗读 open / file / waveform 等单词，中间有自然停顿。下载 expected.txt，先用播放器判断每个短语的起止，不先手写毫秒数。

## 2. 开启 word_timestamps

run.py 用 word_timestamps=True 保留 words 数组，含 start/end/word/probability。本页实际 JSON 来自 CPU tiny/int8；概率是模型信息，不是人工验收结果。

## 3. 比较句级与词级边界

同一句的 segment 覆盖整个短语，words 描述具体词。用本页图中的实际时间表选出至少三个词，回听开头、停顿和段尾；不要把每句平均切分冒充词级识别。

```sh
python run.py input.wav --out actual.json --language en --words
python check.py
python -c "import json; r=json.load(open('actual.json')); print(r['segments'][0]['words'])"
```

## 4. 保留缺失与短时长的词

检查词级时间是否有限、是否 start < end、是否超出原音。脚本把异常记录为需回听，不强制给无时间词补随机毫秒；标点不一定有独立时长。

## 5. 先修文字，再修高亮时间

输出 raw-words.json、reviewed-words.csv 两份。根据回听修订，保持与原词关联；词准确性不足时重新识别或转 WhisperX 强制对齐，而不是隐藏错误。

## 6. 移交到字幕渲染步骤

使用 actual.srt 作为句级字幕，词级 JSON 用于高亮渲染。已有 Remotion 页面负责样式和帧映射；本页负责从音频产生可核对的时间证据。

## 7. 下载材料、检查负例与继续操作

解压素材包后先运行 python check.py，再运行 python check.py --self-test。前者读取真实 WAV / JSON / SRT 与源 hash；后者拒绝损坏 WAV、倒置时间、越界时间和缺失词时间。文件通过不代表文字、情绪或说话人判定已通过。

## 来源与范围

见 PROVENANCE.md。WhisperX/CosyVoice 推理本次未执行，系统音频为原创练习输入。

- https://github.com/SYSTRAN/faster-whisper
- https://github.com/SYSTRAN/faster-whisper/blob/master/faster_whisper/transcribe.py
- https://huggingface.co/Systran/faster-whisper-tiny
