38 lines
3.1 KiB
Plaintext
38 lines
3.1 KiB
Plaintext
Smart Turn v3.2 与 MaAI ch_kyoto 的本机计算延迟
|
||
2026-10-13,Apple M4 Mac mini,16 GB,CPU 推理。
|
||
|
||
测量结果(模型已加载并预热,单位毫秒)
|
||
Smart Turn v3.2,1线程:平均31.54,中位31.26,P95 33.23,P99 37.66。
|
||
Smart Turn v3.2,4线程:平均11.69,中位11.51,P95 12.56,P99 13.58。
|
||
MaAI ch_kyoto,4线程,持续增量更新:平均4.91,中位4.79,P95 5.39,P99 7.24。
|
||
同为4线程时,Smart Turn的一次判断耗时约为MaAI一次增量更新的2.38倍。两者每次计算的工作量不同:Smart Turn重算最多8秒的用户音频,MaAI处理新到的100毫秒双声道音频并复用20秒滚动缓存。
|
||
|
||
计算拆分(平均值)
|
||
Smart Turn 1线程:重采样0.157、特征提取1.185、ONNX推理30.137,其余补零/整理约0.058。
|
||
Smart Turn 4线程:重采样0.162、特征提取1.306、ONNX推理10.168,其余补零/整理约0.051。
|
||
MaAI 4线程:两路CPC编码约2.541、VAP预测约2.302,其余缓存/结果队列整理约0.065。
|
||
Smart Turn计时包括8kHz到16kHz重采样。MaAI计时从准备好的16kHz音频进入process开始,未计重采样;这一点应与上述数字一起理解。
|
||
|
||
数据与方法
|
||
Smart Turn使用上一轮44个判断点相同的音频切片、int16解码/32768归一化、Pipecat 1.12.0的实际LocalSmartTurnAnalyzerV3。每种线程配置预热5次后,对44个点重复5轮,共220次测量;每次输出分数均与原始回测结果相差小于0.0001。
|
||
MaAI使用上一轮6通录音,从文件起点持续推理至该通最后一个标注点,10Hz,20秒上下文,KV cache,CPU4线程。总计433.3秒音频、4333次更新;每通前20秒不纳入满上下文稳态统计,留下3133次更新。
|
||
两个基准任务串行运行,避免互相争抢CPU。分阶段计时会带来少量测量开销。
|
||
模型载入、Python导入、录音解码、VAD静音等待、ASR/LLM/TTS和网络时间均不计入主要延迟。
|
||
|
||
如何理解线上延迟
|
||
MaAI计算约5毫秒,但当前10Hz配置每100毫秒更新一次;新声音到达与更新边界之间还可能存在0–100毫秒的等待(持续均匀到达时约50毫秒),这属于帧调度间隔而不是模型计算时间。还未计实际流式重采样延迟和系统排队。
|
||
Smart Turn可在请求时执行一次约12毫秒(4线程)或32毫秒(1线程)的计算;实际请求何时发生由VAD/业务策略决定,此处不把静音等待混入计算延迟。
|
||
MaAI需要持续每秒更新10次,Smart Turn通常按停顿请求触发,因此单次更快不等于整个会话总算力更低。
|
||
之前MaAI的标注点评估每次从零重放最多20秒音频,44个点平均重放推理约976.5毫秒。那是离线构造上下文的成本,不是在线每次新结果的延迟。
|
||
|
||
复跑
|
||
在experiments/smart-turn-v3.2和experiments/maai-ch-kyoto两个目录分别执行:
|
||
uv run --locked python benchmark_latency.py
|
||
请顺序执行,避免并行争抢CPU。
|
||
|
||
原始记录
|
||
experiments/smart-turn-v3.2/results/latency.json
|
||
experiments/maai-ch-kyoto/results/latency.json
|
||
汇总:experiments/latency-comparison.json
|
||
所有均值、P95及样本数已独立核验。
|