如何在JavaScript中累计同一UID的语音时长并输出日志?
实现同一UID语音时长累加的方案
当然可以实现,只需要借助一个存储对象来追踪每个UID的累计语音时长,具体修改如下:
步骤1:定义全局/闭包级别的存储对象
在你的代码外层(确保每次语音结束都能访问到的作用域)定义一个对象,用来保存每个UID的累计时长:
// 存储每个UID的累计语音时长,键为UID,值为累计时长(ms) const totalSpeechDurations = {};
步骤2:修改原有代码实现累加逻辑
替换你原来的代码块,加入累加判断和更新逻辑:
if (speechRecognitionStartTime) { const singleDuration = new Date() - speechRecognitionStartTime; const uid = volume.uid; // 累加时长:若UID已有记录则叠加,无记录则初始化为0再加本次时长 totalSpeechDurations[uid] = (totalSpeechDurations[uid] || 0) + singleDuration; // 打印本次时长和累计总时长 console.log(`UID ${uid} 本次语音时长:${singleDuration} ms,累计总时长:${totalSpeechDurations[uid]} ms`); }
逻辑说明
totalSpeechDurations会持续保存每个UID的累计时长,不会因为单次语音结束而丢失数据;(totalSpeechDurations[uid] || 0)用来处理首次记录的情况:如果UID从未被记录过,totalSpeechDurations[uid]为undefined,逻辑或||会返回0,再加上本次时长完成初始化;- 每次语音结束后,都会更新对应UID的累计值,并同时打印单次时长和总时长,方便调试查看。
内容的提问来源于stack exchange,提问作者Jinx Yoshi
相关产品推荐
相关产品推荐

