You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 16:57:11