图像、音频与视频的输入契约
图像不只是一个URL:模型看到的是解码后的像素及可能的缩放/裁切,文字可能因降采样丢失。需要读取小字时先检查原图分辨率、裁切区域和坐标映射;不要把视觉模型输出当OCR真值。多张图要保留次序、来源和问题中的指代。
音频由采样率、声道数、位深与编码决定。PCM原始字节没有自动包含这些元数据;把24kHz数据当16kHz播放会改变时长和音高。下面精确计算单声道16bit PCM包的时间,先不涉及真实设备。
python
def duration_ms(byte_count, sample_rate, channels, sample_width):
frame = channels * sample_width
if min(sample_rate,channels,sample_width)<=0 or byte_count<0 or byte_count%frame:
raise ValueError('invalid PCM geometry')
return byte_count / frame / sample_rate * 1000
assert duration_ms(4800,24000,1,2) == 100
assert duration_ms(4800,16000,1,2) == 150
try:
duration_ms(3,24000,1,2)
except ValueError:
pass
else:
raise AssertionError('partial sample accepted')
print('PCM geometry passed')16bit意味着每样本2字节,多声道每帧含所有声道的样本。压缩音频如Opus不能用这条字节公式直接推时长,需要解码时间戳。重采样不是改一个标签,要插值与低通处理;实时接口支持何种格式按具体协议核对。
视频是带时间戳的帧序列和音轨。每秒取一帧会漏掉短动作;按场景切换或问题所需片段采样可节约费用,但仍可能遗漏。对齐时使用媒体时间而非网络到达时间;网络抖动会使后一帧先到。保留帧ID、PTS时间、裁切区域和原始文件位置,答案才能回指证据。
输入限制包括像素、音频时长、帧率、上下文与上传大小,不能只看文件MB。敏感背景、屏幕文字和旁人声音也在输入中;采集范围与保留策略应由应用明确管理。离线转录→文本模型→TTS便于逐段检查,原生音频模型可能减少阶段延迟,但质量、可解释性和可控性需要分别评估。
练习
计算48kHz双声道16bit PCM一秒字节数,验证函数返回1000ms;解释为什么不能套用到MP3文件。
完成后查看本章答案。