santos-sanz/jev-audio-beeper on GitHub
- Stars
- 2
- Forks
- 0
- Language
- TypeScript
- Last push
- 17 Sep 2026
Read from GitHub on . Counts change daily.
How it uses Jev
const t=performance.now(); const response=await client.systemOne({model:'jev-latest',state,questions}); const latencyMs=Math.round(performance.now()-t);
const hits=transcript.words.filter((_,i)=>(response.answers[`insult_${i}`] as {noul:number}).noul>=threshold);
const intervals=hits.map(w=>({startMs:Math.max(0,w.startMs-paddingMs),endMs:w.endMs+paddingMs}));
const enabled=intervals.map(x=>`between(t,${x.startMs/1000},${x.endMs/1000})`).join('+')||'0';
await new Promise<void>((ok,fail)=>spawn('ffmpeg',['-y','-i',input,'-filter_complex',`[0:a]volume='if(${enabled},0,1)'[c];sine=frequency=1000:sample_rate=48000,volume='if(${enabled},0.32,0)'[b];[c][b]amix=inputs=2:duration=first:normalize=0[o]`,'-map','[o]','-c:a','pcm_s16le',output],{stdio:'inherit'}).on('exit',c=>c===0?ok():fail(new Error(`ffmpeg ${c}`))));
const report={model:response.model,latencyMs,threshold,answers:response.answers,intervals}; await writeFile(`${output}.json`,JSON.stringify(report,null,2)); console.log(report);


