import React from 'react'; interface AudioVisualSyncProps { lipTimeline: number[]; audioSpeaking: number[]; } const AudioVisualSync: React.FC = ({ lipTimeline, audioSpeaking }) => { return (

Audio-Visual Sync Audit

{/* Audio Speaking Track */}
Audio
{audioSpeaking.slice(0, 40).map((v, i) => (
0.5 ? 'bg-green-500/60 shadow-[0_0_8px_rgba(34,197,94,0.3)]' : 'bg-white/5'}`} /> ))}
{/* Lip Movement Track */}
Lips
{lipTimeline.slice(0, 40).map((v, i) => (
0.02 ? 'bg-blue-500/60 shadow-[0_0_8px_rgba(59,130,246,0.3)]' : 'bg-white/5'}`} /> ))}
{/* Sync Status */}
Sync
{audioSpeaking.slice(0, 40).map((v, i) => { const isSpeaking = v > 0.5; const isMoving = lipTimeline[i] > 0.02; const mismatched = isSpeaking !== isMoving; return (
); })}

*Red indicators highlight asynchronous phoneme-to-viseme mapping often found in first-generation lip-sync deepfakes.

); }; export default AudioVisualSync;