播放音频文件同步音频文本

news2025/1/14 13:49:59
播放音频同步音频文本 对应单个文本高亮显示
使用audio

音频文件对应音频文本资源

请添加图片描述

音频文本内容(Json)


    [
        {
            "end": 4875,
            "index": 0,
            "speaker": 0,
            "start": 30,
            "text": "70号二啊,",
            "text_length": 5
        },
        {
            "end": 40275,
            "index": 1,
            "speaker": 0,
            "start": 5980,
            "text": "这个你能不能宝宝听不懂本身百分他们你好,",
            "text_length": 19
        },
        {
            "end": 17110,
            "index": 2,
            "speaker": 1,
            "start": 16490,
            "text": "菜办好了,",
            "text_length": 4
        },
        {
            "end": 24790,
            "index": 3,
            "speaker": 1,
            "start": 17110,
            "text": "马上回你大学的没有,",
            "text_length": 9
        },
        {
            "end": 37500,
            "index": 4,
            "speaker": 1,
            "start": 24790,
            "text": "你没有啊,",
            "text_length": 4
        },
        {
            "end": 40950,
            "index": 5,
            "speaker": 0,
            "start": 40809,
            "text": "对,",
            "text_length": 1
        },
        {
            "end": 41225,
            "index": 6,
            "speaker": 0,
            "start": 40950,
            "text": "好的,",
            "text_length": 2
        },
        {
            "end": 44555,
            "index": 7,
            "speaker": 0,
            "start": 43830,
            "text": "还有什么呢?",
            "text_length": 5
        },
        {
            "end": 51175,
            "index": 8,
            "speaker": 0,
            "start": 48820,
            "text": "但是我过来帮你找,",
            "text_length": 8
        },
        {
            "end": 52305,
            "index": 9,
            "speaker": 0,
            "start": 51590,
            "text": "欢迎大家啊,",
            "text_length": 5
        },
        {
            "end": 58815,
            "index": 10,
            "speaker": 0,
            "start": 55400,
            "text": "什么司机司机用车,",
            "text_length": 8
        },
        {
            "end": 65840,
            "index": 11,
            "speaker": 0,
            "start": 60640,
            "text": "然后太好了,",
            "text_length": 5
        },
        {
            "end": 69865,
            "index": 12,
            "speaker": 1,
            "start": 66390,
            "text": "你说我好了吗?",
            "text_length": 6
        },
        {
            "end": 71505,
            "index": 13,
            "speaker": 0,
            "start": 70909,
            "text": "我拖一下。",
            "text_length": 4
        },
        {
            "end": 127095,
            "index": 14,
            "speaker": 0,
            "start": 73180,
            "text": "那这个还有那我们啊啊开车写一个您的手机号码,",
            "text_length": 21
        },
        {
            "end": 82845,
            "index": 15,
            "speaker": 1,
            "start": 82490,
            "text": "呃,",
            "text_length": 1
        },
        {
            "end": 89745,
            "index": 16,
            "speaker": 1,
            "start": 88030,
            "text": "等一下啊,",
            "text_length": 4
        },
        {
            "end": 93375,
            "index": 17,
            "speaker": 1,
            "start": 91969,
            "text": "你什么人啊,",
            "text_length": 5
        },
        {
            "end": 136495,
            "index": 18,
            "speaker": 1,
            "start": 106060,
            "text": "那个啊嗯怎么了?",
            "text_length": 7
        },
        {
            "end": 138300,
            "index": 19,
            "speaker": 0,
            "start": 129340,
            "text": "这个好吧,",
            "text_length": 4
        },
        {
            "end": 161295,
            "index": 20,
            "speaker": 0,
            "start": 151790,
            "text": "这个什么你刚才啊你好,",
            "text_length": 10
        },
        {
            "end": 173709,
            "index": 21,
            "speaker": 0,
            "start": 161870,
            "text": "然后我一个人这个房子是邓静林一个人的名字,",
            "text_length": 20
        },
        {
            "end": 174165,
            "index": 22,
            "speaker": 0,
            "start": 173709,
            "text": "对吧?",
            "text_length": 2
        },
        {
            "end": 198590,
            "index": 23,
            "speaker": 1,
            "start": 174379,
            "text": "这个就是是呃第一段话把它抄下来嘛,",
            "text_length": 16
        },
        {
            "end": 175530,
            "index": 24,
            "speaker": 0,
            "start": 175120,
            "text": "对了,",
            "text_length": 2
        },
        {
            "end": 180830,
            "index": 25,
            "speaker": 0,
            "start": 179870,
            "text": "第一句话,",
            "text_length": 4
        },
        {
            "end": 182230,
            "index": 26,
            "speaker": 0,
            "start": 180830,
            "text": "本不动产属于姓名,",
            "text_length": 8
        },
        {
            "end": 183190,
            "index": 27,
            "speaker": 0,
            "start": 182230,
            "text": "改成你的名字,",
            "text_length": 6
        },
        {
            "end": 185970,
            "index": 28,
            "speaker": 0,
            "start": 183190,
            "text": "单独所有无其他所有人抄在这个地方,",
            "text_length": 16
        },
        {
            "end": 192260,
            "index": 29,
            "speaker": 0,
            "start": 185970,
            "text": "然后这里签名写日期高底,",
            "text_length": 11
        },
        {
            "end": 200100,
            "index": 30,
            "speaker": 0,
            "start": 194370,
            "text": "接下来在吗?",
            "text_length": 5
        },
        {
            "end": 199530,
            "index": 31,
            "speaker": 1,
            "start": 198590,
            "text": "写自己名字吧,",
            "text_length": 6
        },
        {
            "end": 203590,
            "index": 32,
            "speaker": 1,
            "start": 199530,
            "text": "由其他部门嗯在这个位置吧,",
            "text_length": 12
        },
        {
            "end": 201680,
            "index": 33,
            "speaker": 0,
            "start": 201280,
            "text": "对,",
            "text_length": 1
        },
        {
            "end": 202000,
            "index": 34,
            "speaker": 0,
            "start": 201680,
            "text": "是的,",
            "text_length": 2
        },
        {
            "end": 204210,
            "index": 35,
            "speaker": 0,
            "start": 202000,
            "text": "就把它抄这里姓名,",
            "text_length": 8
        },
        {
            "end": 203985,
            "index": 36,
            "speaker": 1,
            "start": 203590,
            "text": "是吧?",
            "text_length": 2
        },
        {
            "end": 206150,
            "index": 37,
            "speaker": 0,
            "start": 204210,
            "text": "改成你的名字啊。",
            "text_length": 7
        },
        {
            "end": 206495,
            "index": 38,
            "speaker": 0,
            "start": 206150,
            "text": "对呀,",
            "text_length": 2
        },
        {
            "end": 220555,
            "index": 39,
            "speaker": 0,
            "start": 210320,
            "text": "领导说为什么?",
            "text_length": 6
        },
        {
            "end": 235625,
            "index": 40,
            "speaker": 1,
            "start": 219380,
            "text": "因为人没有好吧,",
            "text_length": 7
        },
        {
            "end": 250970,
            "index": 41,
            "speaker": 0,
            "start": 227879,
            "text": "那么这加的话可以随时过来加,",
            "text_length": 13
        },
        {
            "end": 248390,
            "index": 42,
            "speaker": 1,
            "start": 247130,
            "text": "老公是可以的噻,",
            "text_length": 7
        },
        {
            "end": 257535,
            "index": 43,
            "speaker": 1,
            "start": 248390,
            "text": "要是以后加的话哦,",
            "text_length": 8
        },
        {
            "end": 252430,
            "index": 44,
            "speaker": 0,
            "start": 250970,
            "text": "只要房子没有贷款,",
            "text_length": 8
        },
        {
            "end": 256765,
            "index": 45,
            "speaker": 0,
            "start": 252490,
            "text": "两个人来一次把结婚证身份证和房证带上啊10块钱的费用,",
            "text_length": 26
        },
        {
            "end": 266880,
            "index": 46,
            "speaker": 0,
            "start": 262380,
            "text": "不看不对,",
            "text_length": 4
        },
        {
            "end": 266645,
            "index": 47,
            "speaker": 1,
            "start": 264890,
            "text": "年月日和新命是吧,",
            "text_length": 8
        },
        {
            "end": 294080,
            "index": 48,
            "speaker": 0,
            "start": 266880,
            "text": "签字写今天日期这个肯定是您本人的。",
            "text_length": 16
        },
        {
            "end": 273135,
            "index": 49,
            "speaker": 1,
            "start": 268790,
            "text": "26号21年12月。",
            "text_length": 9
        },
        {
            "end": 294515,
            "index": 50,
            "speaker": 1,
            "start": 294210,
            "text": "对,",
            "text_length": 1
        },
        {
            "end": 298600,
            "index": 51,
            "speaker": 0,
            "start": 297060,
            "text": "然后现在是已婚有配偶,",
            "text_length": 10
        },
        {
            "end": 299340,
            "index": 52,
            "speaker": 0,
            "start": 298600,
            "text": "对吧?",
            "text_length": 2
        },
        {
            "end": 305030,
            "index": 53,
            "speaker": 1,
            "start": 299130,
            "text": "没有哦,",
            "text_length": 3
        },
        {
            "end": 301840,
            "index": 54,
            "speaker": 0,
            "start": 299520,
            "text": "这里把配偶两个字写在这个地方,",
            "text_length": 14
        },
        {
            "end": 302620,
            "index": 55,
            "speaker": 0,
            "start": 301840,
            "text": "你爱人的名字,",
            "text_length": 6
        },
        {
            "end": 304780,
            "index": 56,
            "speaker": 0,
            "start": 302620,
            "text": "证件号写一下3个,",
            "text_length": 8
        },
        {
            "end": 306250,
            "index": 57,
            "speaker": 1,
            "start": 305030,
            "text": "身份证号码是吧,",
            "text_length": 7
        },
        {
            "end": 307875,
            "index": 58,
            "speaker": 0,
            "start": 305960,
            "text": "但是让他到我修改,",
            "text_length": 8
        },
        {
            "end": 311055,
            "index": 59,
            "speaker": 1,
            "start": 306250,
            "text": "联系人嗯,",
            "text_length": 4
        },
        {
            "end": 308780,
            "index": 60,
            "speaker": 0,
            "start": 308639,
            "text": "对,",
            "text_length": 1
        },
        {
            "end": 310720,
            "index": 61,
            "speaker": 0,
            "start": 308780,
            "text": "把他的信息要补上去,",
            "text_length": 9
        },
        {
            "end": 312199,
            "index": 62,
            "speaker": 0,
            "start": 310800,
            "text": "就是写在这里。",
            "text_length": 6
        },
        {
            "end": 313139,
            "index": 63,
            "speaker": 0,
            "start": 312220,
            "text": "这里写配偶,",
            "text_length": 5
        },
        {
            "end": 314120,
            "index": 64,
            "speaker": 0,
            "start": 313139,
            "text": "你爱人的名字,",
            "text_length": 6
        },
        {
            "end": 315725,
            "index": 65,
            "speaker": 0,
            "start": 314120,
            "text": "他的身份证号码写一下,",
            "text_length": 10
        },
        {
            "end": 319055,
            "index": 66,
            "speaker": 1,
            "start": 317180,
            "text": "这你就写配偶两个字是吧,",
            "text_length": 11
        },
        {
            "end": 319995,
            "index": 67,
            "speaker": 0,
            "start": 319060,
            "text": "这个你写呀,",
            "text_length": 5
        },
        {
            "end": 320410,
            "index": 68,
            "speaker": 1,
            "start": 319990,
            "text": "有,",
            "text_length": 1
        },
        {
            "end": 321470,
            "index": 69,
            "speaker": 1,
            "start": 320410,
            "text": "这是老公的姓名,",
            "text_length": 7
        },
        {
            "end": 325860,
            "index": 70,
            "speaker": 1,
            "start": 321470,
            "text": "身份证电话号码是吧啊,",
            "text_length": 10
        },
        {
            "end": 323750,
            "index": 71,
            "speaker": 0,
            "start": 322690,
            "text": "电话就不用写,",
            "text_length": 6
        },
        {
            "end": 326075,
            "index": 72,
            "speaker": 0,
            "start": 323750,
            "text": "你只用写我说的那几个地方就可以了。",
            "text_length": 16
        },
        {
            "end": 330865,
            "index": 73,
            "speaker": 1,
            "start": 325860,
            "text": "好的啊,",
            "text_length": 3
        },
        {
            "end": 337160,
            "index": 74,
            "speaker": 0,
            "start": 333010,
            "text": "可千的70晚上照到700000上照清楚,",
            "text_length": 19
        },
        {
            "end": 343700,
            "index": 75,
            "speaker": 0,
            "start": 337160,
            "text": "然后他帮我还来找我的那如果说喂,",
            "text_length": 15
        },
        {
            "end": 358925,
            "index": 76,
            "speaker": 0,
            "start": 343700,
            "text": "你们就看这个注意延迟啊,",
            "text_length": 11
        },
        {
            "end": 350145,
            "index": 77,
            "speaker": 1,
            "start": 348840,
            "text": "看一下有没有身份证。",
            "text_length": 9
        },
        {
            "end": 368005,
            "index": 78,
            "speaker": 1,
            "start": 356699,
            "text": "对对对啊,",
            "text_length": 4
        },
        {
            "end": 402785,
            "index": 79,
            "speaker": 0,
            "start": 360320,
            "text": "嗯不知道猪蹄子那走没有就没有你最怕这个大概他们都什么意思?",
            "text_length": 28
        },
        {
            "end": 389160,
            "index": 80,
            "speaker": 1,
            "start": 373680,
            "text": "感谢啊,",
            "text_length": 3
        },
        {
            "end": 406975,
            "index": 81,
            "speaker": 0,
            "start": 405569,
            "text": "这是你们主的权利。",
            "text_length": 8
        },
        {
            "end": 408150,
            "index": 82,
            "speaker": 0,
            "start": 407850,
            "text": "好,",
            "text_length": 1
        },
        {
            "end": 408365,
            "index": 83,
            "speaker": 0,
            "start": 408150,
            "text": "一,",
            "text_length": 1
        },
        {
            "end": 409139,
            "index": 84,
            "speaker": 0,
            "start": 408780,
            "text": "我给你,",
            "text_length": 3
        },
        {
            "end": 409580,
            "index": 85,
            "speaker": 0,
            "start": 409139,
            "text": "你发你的,",
            "text_length": 4
        },
        {
            "end": 410145,
            "index": 86,
            "speaker": 0,
            "start": 409580,
            "text": "你看到吗?",
            "text_length": 4
        },
        {
            "end": 414260,
            "index": 87,
            "speaker": 0,
            "start": 411040,
            "text": "今天啊今天努力拿完了呃,",
            "text_length": 11
        },
        {
            "end": 431675,
            "index": 88,
            "speaker": 1,
            "start": 413590,
            "text": "我想他们你的心。",
            "text_length": 7
        },
        {
            "end": 414800,
            "index": 89,
            "speaker": 0,
            "start": 414260,
            "text": "那个女生,",
            "text_length": 4
        },
        {
            "end": 415165,
            "index": 90,
            "speaker": 0,
            "start": 414800,
            "text": "对呀,",
            "text_length": 2
        },
        {
            "end": 416890,
            "index": 91,
            "speaker": 0,
            "start": 415850,
            "text": "这是什么?",
            "text_length": 4
        },
        {
            "end": 417520,
            "index": 92,
            "speaker": 0,
            "start": 416930,
            "text": "然后呢,",
            "text_length": 3
        },
        {
            "end": 420610,
            "index": 93,
            "speaker": 0,
            "start": 418820,
            "text": "我要给你们可以写的,",
            "text_length": 9
        },
        {
            "end": 421855,
            "index": 94,
            "speaker": 0,
            "start": 420610,
            "text": "你能告诉他们,",
            "text_length": 6
        },
        {
            "end": 423450,
            "index": 95,
            "speaker": 0,
            "start": 423090,
            "text": "嗯,",
            "text_length": 1
        },
        {
            "end": 425465,
            "index": 96,
            "speaker": 0,
            "start": 423450,
            "text": "因为呢不一样,",
            "text_length": 6
        },
        {
            "end": 435535,
            "index": 97,
            "speaker": 0,
            "start": 434660,
            "text": "对不对?",
            "text_length": 3
        },
        {
            "end": 437070,
            "index": 98,
            "speaker": 0,
            "start": 436410,
            "text": "哎呀,",
            "text_length": 2
        },
        {
            "end": 438425,
            "index": 99,
            "speaker": 0,
            "start": 437070,
            "text": "今天想走啊,",
            "text_length": 5
        },
        {
            "end": 444520,
            "index": 100,
            "speaker": 0,
            "start": 443919,
            "text": "找清楚,",
            "text_length": 3
        },
        {
            "end": 450280,
            "index": 101,
            "speaker": 0,
            "start": 444520,
            "text": "他清楚不好找60,",
            "text_length": 8
        },
        {
            "end": 455264,
            "index": 102,
            "speaker": 0,
            "start": 451870,
            "text": "应该呀他的续航大概在333左右,",
            "text_length": 15
        },
        {
            "end": 460224,
            "index": 103,
            "speaker": 0,
            "start": 456640,
            "text": "看到能够大概在这个333左右的样子,",
            "text_length": 17
        },
        {
            "end": 462730,
            "index": 104,
            "speaker": 0,
            "start": 461850,
            "text": "有真的吗?",
            "text_length": 4
        },
        {
            "end": 462930,
            "index": 105,
            "speaker": 0,
            "start": 462730,
            "text": "啊,",
            "text_length": 1
        },
        {
            "end": 464210,
            "index": 106,
            "speaker": 0,
            "start": 462930,
            "text": "我单挑看来,",
            "text_length": 5
        },
        {
            "end": 465975,
            "index": 107,
            "speaker": 0,
            "start": 464210,
            "text": "因为他也是乱的,",
            "text_length": 7
        },
        {
            "end": 472740,
            "index": 108,
            "speaker": 0,
            "start": 467170,
            "text": "有能333都有35栋一单元五。",
            "text_length": 14
        },
        {
            "end": 474890,
            "index": 109,
            "speaker": 0,
            "start": 474390,
            "text": "小金子,",
            "text_length": 3
        },
        {
            "end": 478890,
            "index": 110,
            "speaker": 0,
            "start": 474890,
            "text": "我找到了这个,",
            "text_length": 6
        },
        {
            "end": 479795,
            "index": 111,
            "speaker": 1,
            "start": 478640,
            "text": "然后你们呢,",
            "text_length": 5
        },
        {
            "end": 491615,
            "index": 112,
            "speaker": 0,
            "start": 478890,
            "text": "就那我我真的有一个表在表上面照起来。",
            "text_length": 17
        },
        {
            "end": 495805,
            "index": 113,
            "speaker": 0,
            "start": 494220,
            "text": "那他还有找,",
            "text_length": 5
        },
        {
            "end": 496710,
            "index": 114,
            "speaker": 1,
            "start": 495450,
            "text": "那我找身份证号码,",
            "text_length": 8
        },
        {
            "end": 500840,
            "index": 115,
            "speaker": 1,
            "start": 496710,
            "text": "我没有我老公的身打他,",
            "text_length": 10
        },
        {
            "end": 499870,
            "index": 116,
            "speaker": 0,
            "start": 497970,
            "text": "那你能不能跟你爱爱人打个电话,",
            "text_length": 14
        },
        {
            "end": 507660,
            "index": 117,
            "speaker": 0,
            "start": 499870,
            "text": "直接问他类似没啥吃,",
            "text_length": 9
        },
        {
            "end": 502365,
            "index": 118,
            "speaker": 1,
            "start": 500920,
            "text": "我打他他没接,",
            "text_length": 6
        },
        {
            "end": 512825,
            "index": 119,
            "speaker": 1,
            "start": 507950,
            "text": "不晓得有啊。",
            "text_length": 5
        },
        {
            "end": 523570,
            "index": 120,
            "speaker": 0,
            "start": 508940,
            "text": "有没有未成年的小孩孩子吧,",
            "text_length": 12
        },
        {
            "end": 516045,
            "index": 121,
            "speaker": 1,
            "start": 513840,
            "text": "我们家有两个小孩都未成年,",
            "text_length": 12
        },
        {
            "end": 517450,
            "index": 122,
            "speaker": 1,
            "start": 516830,
            "text": "这3岁,",
            "text_length": 3
        },
        {
            "end": 519785,
            "index": 123,
            "speaker": 1,
            "start": 517450,
            "text": "一个一个1023岁,",
            "text_length": 9
        },
        {
            "end": 526270,
            "index": 124,
            "speaker": 0,
            "start": 523570,
            "text": "去找一下你孩子写你小孩孩的信息,",
            "text_length": 15
        },
        {
            "end": 527790,
            "index": 125,
            "speaker": 0,
            "start": 526530,
            "text": "不用写你爱人的信息了,",
            "text_length": 10
        },
        {
            "end": 528815,
            "index": 126,
            "speaker": 0,
            "start": 527790,
            "text": "不用提出来了。",
            "text_length": 6
        },
        {
            "end": 529510,
            "index": 127,
            "speaker": 1,
            "start": 528610,
            "text": "那就学校学,",
            "text_length": 5
        },
        {
            "end": 532089,
            "index": 128,
            "speaker": 1,
            "start": 529510,
            "text": "我小孩的没有,",
            "text_length": 6
        },
        {
            "end": 532279,
            "index": 129,
            "speaker": 0,
            "start": 532050,
            "text": "嗯,",
            "text_length": 1
        },
        {
            "end": 533690,
            "index": 130,
            "speaker": 1,
            "start": 532470,
            "text": "他才10几岁了,",
            "text_length": 7
        },
        {
            "end": 534810,
            "index": 131,
            "speaker": 1,
            "start": 533690,
            "text": "有已经3岁,",
            "text_length": 5
        },
        {
            "end": 535845,
            "index": 132,
            "speaker": 0,
            "start": 534230,
            "text": "不是七,",
            "text_length": 3
        },
        {
            "end": 536345,
            "index": 133,
            "speaker": 1,
            "start": 534810,
            "text": "也就1012岁。",
            "text_length": 7
        },
        {
            "end": 537839,
            "index": 134,
            "speaker": 0,
            "start": 536480,
            "text": "那也是啊呃,",
            "text_length": 5
        },
        {
            "end": 541500,
            "index": 135,
            "speaker": 0,
            "start": 537839,
            "text": "是直接拍不写了,",
            "text_length": 7
        },
        {
            "end": 541865,
            "index": 136,
            "speaker": 0,
            "start": 541500,
            "text": "不写了,",
            "text_length": 3
        },
        {
            "end": 561225,
            "index": 137,
            "speaker": 0,
            "start": 545740,
            "text": "除了你这来重新拿一下这个手机台钱,",
            "text_length": 16
        },
        {
            "end": 585125,
            "index": 138,
            "speaker": 1,
            "start": 556550,
            "text": "稍等你说最后一个,",
            "text_length": 8
        },
        {
            "end": 569185,
            "index": 139,
            "speaker": 0,
            "start": 566090,
            "text": "没想到这个什么,",
            "text_length": 7
        },
        {
            "end": 581310,
            "index": 140,
            "speaker": 0,
            "start": 574990,
            "text": "我在4541205412哦,",
            "text_length": 13
        },
        {
            "end": 582445,
            "index": 141,
            "speaker": 0,
            "start": 581310,
            "text": "你不要几个案件吗?",
            "text_length": 8
        },
        {
            "end": 591699,
            "index": 142,
            "speaker": 0,
            "start": 585920,
            "text": "12个还有嗯,",
            "text_length": 6
        },
        {
            "end": 591310,
            "index": 143,
            "speaker": 1,
            "start": 590949,
            "text": "嗯,",
            "text_length": 1
        },
        {
            "end": 591730,
            "index": 144,
            "speaker": 1,
            "start": 591310,
            "text": "那没事,",
            "text_length": 3
        },
        {
            "end": 592399,
            "index": 145,
            "speaker": 1,
            "start": 591730,
            "text": "好吧。",
            "text_length": 2
        },
        {
            "end": 593695,
            "index": 146,
            "speaker": 0,
            "start": 593050,
            "text": "我还没写完,",
            "text_length": 5
        },
        {
            "end": 602735,
            "index": 147,
            "speaker": 0,
            "start": 602180,
            "text": "220,",
            "text_length": 3
        },
        {
            "end": 612115,
            "index": 148,
            "speaker": 0,
            "start": 603270,
            "text": "我自己的你好友进来了,",
            "text_length": 10
        },
        {
            "end": 632275,
            "index": 149,
            "speaker": 1,
            "start": 610760,
            "text": "好嗯,",
            "text_length": 2
        },
        {
            "end": 617130,
            "index": 150,
            "speaker": 0,
            "start": 614589,
            "text": "根本就没是黄色。",
            "text_length": 7
        },
        {
            "end": 632365,
            "index": 151,
            "speaker": 0,
            "start": 623630,
            "text": "我他你嗯怎么了?",
            "text_length": 7
        },
        {
            "end": 637420,
            "index": 152,
            "speaker": 1,
            "start": 636579,
            "text": "在哪里?",
            "text_length": 3
        },
        {
            "end": 638595,
            "index": 153,
            "speaker": 1,
            "start": 637420,
            "text": "我有有喝啊,",
            "text_length": 5
        },
        {
            "end": 638540,
            "index": 154,
            "speaker": 0,
            "start": 637530,
            "text": "加上啊,",
            "text_length": 3
        },
        {
            "end": 648975,
            "index": 155,
            "speaker": 0,
            "start": 638540,
            "text": "为什么没有我们嗯,",
            "text_length": 8
        },
        {
            "end": 640710,
            "index": 156,
            "speaker": 1,
            "start": 639370,
            "text": "不晓得是不二11啊,",
            "text_length": 9
        },
        {
            "end": 651550,
            "index": 157,
            "speaker": 1,
            "start": 640710,
            "text": "我跟四季永新五栋一单元有有有嗯,",
            "text_length": 15
        },
        {
            "end": 653845,
            "index": 158,
            "speaker": 0,
            "start": 650700,
            "text": "请重这个,",
            "text_length": 4
        },
        {
            "end": 651945,
            "index": 159,
            "speaker": 1,
            "start": 651550,
            "text": "嗯,",
            "text_length": 1
        },
        {
            "end": 654395,
            "index": 160,
            "speaker": 1,
            "start": 653650,
            "text": "这个没问题,",
            "text_length": 5
        },
        {
            "end": 658654,
            "index": 161,
            "speaker": 0,
            "start": 654360,
            "text": "还有你好好是你们吗?",
            "text_length": 9
        },
        {
            "end": 660995,
            "index": 162,
            "speaker": 1,
            "start": 658460,
            "text": "我那个不对,",
            "text_length": 5
        },
        {
            "end": 664530,
            "index": 163,
            "speaker": 0,
            "start": 661680,
            "text": "小朋友看看很重要,",
            "text_length": 8
        },
        {
            "end": 673699,
            "index": 164,
            "speaker": 0,
            "start": 664530,
            "text": "说什么这里是没有,",
            "text_length": 8
        },
        {
            "end": 671720,
            "index": 165,
            "speaker": 1,
            "start": 671260,
            "text": "在一样,",
            "text_length": 3
        },
        {
            "end": 673500,
            "index": 166,
            "speaker": 1,
            "start": 671720,
            "text": "没有来了。",
            "text_length": 4
        },
        {
            "end": 686830,
            "index": 167,
            "speaker": 1,
            "start": 673500,
            "text": "宝贝嗯啊嗯,",
            "text_length": 5
        },
        {
            "end": 678829,
            "index": 168,
            "speaker": 0,
            "start": 675370,
            "text": "自然是没有,",
            "text_length": 5
        },
        {
            "end": 681225,
            "index": 169,
            "speaker": 0,
            "start": 680690,
            "text": "为什么?",
            "text_length": 3
        },
        {
            "end": 685900,
            "index": 170,
            "speaker": 0,
            "start": 685520,
            "text": "对呀,",
            "text_length": 2
        },
        {
            "end": 686160,
            "index": 171,
            "speaker": 0,
            "start": 685900,
            "text": "好,",
            "text_length": 1
        },
        {
            "end": 686920,
            "index": 172,
            "speaker": 0,
            "start": 686160,
            "text": "行好,",
            "text_length": 2
        },
        {
            "end": 687145,
            "index": 173,
            "speaker": 1,
            "start": 686830,
            "text": "是吧?",
            "text_length": 2
        },
        {
            "end": 695635,
            "index": 174,
            "speaker": 0,
            "start": 686920,
            "text": "后东西拿出来看这里。",
            "text_length": 9
        },
        {
            "end": 698139,
            "index": 175,
            "speaker": 0,
            "start": 696570,
            "text": "好啊,",
            "text_length": 2
        },
        {
            "end": 700005,
            "index": 176,
            "speaker": 0,
            "start": 699090,
            "text": "看这里拍个照,",
            "text_length": 6
        },
        {
            "end": 717940,
            "index": 177,
            "speaker": 0,
            "start": 703580,
            "text": "他们在说对的呃,",
            "text_length": 7
        },
        {
            "end": 719264,
            "index": 178,
            "speaker": 0,
            "start": 717940,
            "text": "12号加班是吧?",
            "text_length": 7
        },
        {
            "end": 723259,
            "index": 179,
            "speaker": 0,
            "start": 721220,
            "text": "在这里排队等着加班,",
            "text_length": 9
        },
        {
            "end": 724660,
            "index": 180,
            "speaker": 0,
            "start": 723259,
            "text": "要去和税缴税啊,",
            "text_length": 7
        },
        {
            "end": 725720,
            "index": 181,
            "speaker": 0,
            "start": 724660,
            "text": "收到短信去核税,",
            "text_length": 7
        },
        {
            "end": 726930,
            "index": 182,
            "speaker": 0,
            "start": 725720,
            "text": "缴税8~2十分。",
            "text_length": 7
        },
        {
            "end": 728810,
            "index": 183,
            "speaker": 1,
            "start": 728110,
            "text": "小费呀,",
            "text_length": 3
        },
        {
            "end": 728855,
            "index": 184,
            "speaker": 0,
            "start": 728150,
            "text": "小王雀,",
            "text_length": 3
        },
        {
            "end": 730005,
            "index": 185,
            "speaker": 1,
            "start": 728810,
            "text": "上午不是交了吗?",
            "text_length": 7
        },
        {
            "end": 730850,
            "index": 186,
            "speaker": 0,
            "start": 729810,
            "text": "不管要不要缴钱,",
            "text_length": 7
        },
        {
            "end": 732110,
            "index": 187,
            "speaker": 0,
            "start": 730850,
            "text": "都要去那边签字确认,",
            "text_length": 9
        },
        {
            "end": 733129,
            "index": 188,
            "speaker": 0,
            "start": 732110,
            "text": "不然这里出不来啊,",
            "text_length": 8
        },
        {
            "end": 733769,
            "index": 189,
            "speaker": 0,
            "start": 733129,
            "text": "具体缴不缴,",
            "text_length": 5
        },
        {
            "end": 735490,
            "index": 190,
            "speaker": 0,
            "start": 733769,
            "text": "以税务人员跟您核的为准。",
            "text_length": 11
        },
        {
            "end": 736589,
            "index": 191,
            "speaker": 0,
            "start": 735529,
            "text": "税核完了之后,",
            "text_length": 6
        },
        {
            "end": 737709,
            "index": 192,
            "speaker": 0,
            "start": 736589,
            "text": "一个工作日出证,",
            "text_length": 7
        },
        {
            "end": 738670,
            "index": 193,
            "speaker": 0,
            "start": 737709,
            "text": "明天可以过来拿。",
            "text_length": 7
        },
        {
            "end": 739550,
            "index": 194,
            "speaker": 0,
            "start": 738670,
            "text": "您是自己过来拿,",
            "text_length": 7
        },
        {
            "end": 740819,
            "index": 195,
            "speaker": 0,
            "start": 739550,
            "text": "还是半个电费。",
            "text_length": 6
        },
        {
            "end": 741060,
            "index": 196,
            "speaker": 1,
            "start": 740790,
            "text": "啊,",
            "text_length": 1
        },
        {
            "end": 743884,
            "index": 197,
            "speaker": 0,
            "start": 741279,
            "text": "那你就这个呀把身份证带上啊,",
            "text_length": 13
        },
        {
            "end": 748240,
            "index": 198,
            "speaker": 0,
            "start": 744660,
            "text": "把这个单子也带上到五拿证拿证的时候,",
            "text_length": 17
        },
        {
            "end": 752255,
            "index": 199,
            "speaker": 1,
            "start": 746100,
            "text": "对的啊,",
            "text_length": 3
        },
        {
            "end": 750440,
            "index": 200,
            "speaker": 0,
            "start": 748240,
            "text": "再把这个80块钱办证的费用交一下就行了。",
            "text_length": 19
        },
        {
            "end": 753649,
            "index": 201,
            "speaker": 0,
            "start": 750440,
            "text": "今天先不交这个80把水喝完就可以回去了。",
            "text_length": 19
        },
        {
            "end": 754524,
            "index": 202,
            "speaker": 0,
            "start": 753649,
            "text": "在这边排队啊,",
            "text_length": 6
        },
        {
            "end": 756130,
            "index": 203,
            "speaker": 1,
            "start": 754870,
            "text": "就是把水月喝完就回去,",
            "text_length": 10
        },
        {
            "end": 757410,
            "index": 204,
            "speaker": 1,
            "start": 756130,
            "text": "明天交这个80块钱,",
            "text_length": 9
        },
        {
            "end": 758300,
            "index": 205,
            "speaker": 0,
            "start": 757300,
            "text": "先过来拿证的时候,",
            "text_length": 8
        },
        {
            "end": 758290,
            "index": 206,
            "speaker": 1,
            "start": 757410,
            "text": "把身份证带到,",
            "text_length": 6
        },
        {
            "end": 761585,
            "index": 207,
            "speaker": 1,
            "start": 758290,
            "text": "把这个单子带到啊,",
            "text_length": 8
        },
        {
            "end": 770285,
            "index": 208,
            "speaker": 0,
            "start": 758300,
            "text": "交对明天过拿证的时候过来交八,",
            "text_length": 14
        },
        {
            "end": 777825,
            "index": 209,
            "speaker": 0,
            "start": 771210,
            "text": "然后呢嗯不行啊,",
            "text_length": 7
        },
        {
            "end": 814625,
            "index": 210,
            "speaker": 0,
            "start": 791350,
            "text": "好嗯,",
            "text_length": 2
        },
        {
            "end": 827329,
            "index": 211,
            "speaker": 1,
            "start": 792500,
            "text": "你的那我那就等交费了吧啊,",
            "text_length": 12
        },
        {
            "end": 859255,
            "index": 212,
            "speaker": 0,
            "start": 820740,
            "text": "走嗯打电话还有啊喂什么。",
            "text_length": 11
        },
        {
            "end": 837035,
            "index": 213,
            "speaker": 1,
            "start": 836600,
            "text": "一样的,",
            "text_length": 3
        },
        {
            "end": 856750,
            "index": 214,
            "speaker": 1,
            "start": 851490,
            "text": "天使欢迎嗯,",
            "text_length": 5
        },
        {
            "end": 861540,
            "index": 215,
            "speaker": 1,
            "start": 857740,
            "text": "那么对了。",
            "text_length": 4
        }
    ]

同步音频文本高亮

播放音频同步音频文本 对应单个文本高亮显示
使用audio

请添加图片描述

<template>
  <div class="dialog-container">
    <div> 
    <!-- 音频播放控件 -->
    <audio ref="audioPlayer" @loadedmetadata="onLoadedMetadata" @timeupdate="onTimeUpdate" controls></audio></div>
    <!-- 文本列表 -->
    <ul class="sentence-list" style="overflow-y: auto;">
      <li v-for="(sentence, index) in sentences" :key="index"
          :class="['sentence', { 'highlight': isActiveSentence(index) }, sentence.speaker === 0 ? 'customer' : 'employee']"
          @click="seekToSentence(sentence)">
        <div class="sentence-wrapper">
          <span class="speaker-label">{{ sentence.speaker === 0 ? '客户' : '员工' }}</span>
          <span class="timestamp">[{{ formatTime(sentence.start) }} - {{ formatTime(sentence.end) }}]</span>
          <span>时间差{{formatTime(sentence.end-sentence.start) }}</span>
          <p>{{ sentence.text }}</p>
        </div>
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentSentenceIndex: -1,
      sentences:[]
    };
  },
  mounted() {
    const audioElement = this.$refs.audioPlayer;
    audioElement.src = '../20250109.wav'; // 确保路径正确
    audioElement.preload = 'auto'; // 提前加载音频资源
    audioElement.load(); // 手动触发加载
  },
  methods: {
    seekToSentence(sentence) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement.paused) {
        audioElement.pause();
      }
      audioElement.currentTime = sentence.start / 1000; // 将毫秒转换为秒
      this.currentSentenceIndex = this.sentences.findIndex(s => s.start === sentence.start && s.end === sentence.end);
      audioElement.play().catch(error => {
        console.error('无法播放音频:', error);
      });
    },
    onLoadedMetadata(event) {
      console.log('音频元数据已加载');
    },
    onTimeUpdate(event) {
      const currentTime = event.target.currentTime * 1000; // 将秒转换为毫秒
      let activeIndex = -1;

      for (let i = 0; i < this.sentences.length; i++) {
        if (currentTime >= this.sentences[i].start && currentTime < this.sentences[i].end) {
          activeIndex = i;
          break;
        }
      }

      if (activeIndex !== this.currentSentenceIndex) {
        this.currentSentenceIndex = activeIndex;
      }
    },
    isActiveSentence(index) {
      return this.currentSentenceIndex === index;
    },
    formatTime(ms) {
      const totalSeconds = Math.floor(ms / 1000);
      const minutes = Math.floor(totalSeconds / 60).toString().padStart(2, '0');
      const seconds = (totalSeconds % 60).toString().padStart(2, '0');
      return `${minutes}:${seconds}`;
    }
  }
};
</script>
<style scoped>
.dialog-container {
  border:1px solid red;
  padding:20px;
  display: flex;
  flex-direction: column;
  height: 400px; /* 固定高度 */
}

.sentence-list {
  list-style-type: none;
  padding: 0;
  margin: 0;
  flex-grow: 1;
  overflow-y: auto;
}

.sentence {
  cursor: pointer;
  margin: 5px 0;
  width: 100%;
  display: flex;
  justify-content: flex-start;
}

.customer {
  justify-content: flex-start;
}

.employee {
  justify-content: flex-end;
}

.sentence-wrapper {
  display: inline-block;
  max-width: 45%;
  padding: 10px;
  border-radius: 8px;
  background-color: #f0f0f0;
}

.sentence.highlight .sentence-wrapper {
  background-color: #ffeb3b; /* 或者您喜欢的其他颜色 */
}

.speaker-label {
  font-weight: bold;
}

.timestamp {
  color: #777;
}

.sentence-wrapper p {
  margin: 0;
}
</style>

文本高亮点击可播放可暂停

音频文件播放同步对应音频文本 点击对应文本可播放可暂停 进行同步音频文件播放时间点
音频同步文本 对应音频文本高亮显示

请添加图片描述

<template>
  <div class="dialog-container">
    <div>
      <!-- 音频播放控件 -->
    <audio ref="audioPlayer" @loadedmetadata="onLoadedMetadata" @timeupdate="onTimeUpdate" controls></audio>
    </div>
    <!-- 文本列表 -->
    <ul class="sentence-list" style="overflow-y: auto;">
      <li v-for="(sentence, index) in sentences" :key="index"
          :class="['sentence', { 'highlight': isActiveSentence(index), 'loading': isLoadingSentence(index) }, sentence.speaker === 0 ? 'customer' : 'employee']"
          @click="handleSentenceClick(sentence)">
        <div class="sentence-wrapper">
          <span class="speaker-label">{{ sentence.speaker === 0 ? '客户' : '员工' }}</span>
          <span class="timestamp">[{{ formatTime(sentence.start) }} - {{ formatTime(sentence.end) }}]</span>
          <p>{{ sentence.text }}</p>
          <!-- 以进度条形式展示 -->
          <!-- <div class="progress-indicator" :style="{ width: getProgressWidth(sentence) }"></div> -->
        </div>
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentSentenceIndex: -1,
      loadingSentenceIndex: null,
      sentences:     [],
      audioLoaded: false // 新增状态,用于跟踪音频是否已加载
    };
  },
  mounted() {
    const audioElement = this.$refs.audioPlayer;
    if (audioElement) {
      audioElement.src = '../20250109.wav'; // 确保路径正确
      audioElement.preload = 'auto';
      audioElement.load();
      
      // 监听 loadedmetadata 事件以设置 audioLoaded 为 true
      audioElement.addEventListener('loadedmetadata', () => {
        this.audioLoaded = true;
      });
    }
  },
  methods: {
    handleSentenceClick(sentence) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement) return;

      const index = this.sentences.findIndex(s => s.start === sentence.start && s.end === sentence.end);

      if (this.currentSentenceIndex === index && !audioElement.paused) {
        audioElement.pause();
        this.loadingSentenceIndex = null;
      } else {
        this.scrollToSentence(index);
        this.loadingSentenceIndex = index;
        this.seekToSentence(sentence);
      }
    },
    seekToSentence(sentence) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement) return;

      audioElement.currentTime = sentence.start / 1000; // 将毫秒转换为秒
      this.currentSentenceIndex = this.sentences.indexOf(sentence);
      audioElement.play().then(() => {
        this.loadingSentenceIndex = null;
      }).catch(error => {
        console.error('无法播放音频:', error);
        this.loadingSentenceIndex = null;
      });
    },
    onLoadedMetadata(event) {
      console.log('音频元数据已加载');
      this.audioLoaded = true; // 当元数据加载完成后设置为 true
    },
    onTimeUpdate(event) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement) return;

      const currentTime = event.target.currentTime * 1000; // 将秒转换为毫秒
      let activeIndex = -1;

      for (let i = 0; i < this.sentences.length; i++) {
        if (currentTime >= this.sentences[i].start && currentTime < this.sentences[i].end) {
          activeIndex = i;
          break;
        }
      }

      if (activeIndex !== this.currentSentenceIndex) {
        this.currentSentenceIndex = activeIndex;
        this.scrollToSentence(activeIndex);
      }
    },
    isActiveSentence(index) {
      return this.currentSentenceIndex === index;
    },
    isLoadingSentence(index) {
      return this.loadingSentenceIndex === index;
    },
    formatTime(ms) {
      const totalSeconds = Math.floor(ms / 1000);
      const minutes = Math.floor(totalSeconds / 60).toString().padStart(2, '0');
      const seconds = (totalSeconds % 60).toString().padStart(2, '0');
      return `${minutes}:${seconds}`;
    },
    getProgressWidth(sentence) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement || !this.audioLoaded) return '0%';

      const currentTime = audioElement.currentTime * 1000;
      if (currentTime >= sentence.start && currentTime < sentence.end) {
        const progress = ((currentTime - sentence.start) / (sentence.end - sentence.start)) * 100;
        return `${progress}%`;
      } else {
        return '0%';
      }
    },
    scrollToSentence(index) {
      const container = this.$el.querySelector('.sentence-list');
      const sentenceEl = this.$el.querySelectorAll('.sentence')[index];
      if (container && sentenceEl) {
        container.scrollTop = sentenceEl.offsetTop - container.offsetTop;
      }
    }
  }
};
</script>
<style scoped>
.dialog-container {
  border:1px solid red;
  padding:20px;
  display: flex;
  flex-direction: column;
  height: 400px; /* 固定高度 */
}

.sentence-list {
  list-style-type: none;
  padding: 0;
  margin: 0;
  flex-grow: 1;
  overflow-y: auto;
}

.sentence {
  cursor: pointer;
  margin: 5px 0;
  width: 100%;
  display: flex;
  justify-content: flex-start;
}

.customer {
  justify-content: flex-start;
}

.employee {
  justify-content: flex-end;
}

.sentence-wrapper {
  display: inline-block;
  max-width: 45%;
  padding: 10px;
  border-radius: 8px;
  background-color: #f0f0f0;
}

.sentence.highlight .sentence-wrapper {
  background-color: #ffeb3b; /* 或者您喜欢的其他颜色 */
}

.speaker-label {
  font-weight: bold;
}

.timestamp {
  color: #777;
}

.sentence-wrapper p {
  margin: 0;
}
.sentence-wrapper {
  position: relative;
}

.progress-indicator {
  position: absolute;
  left: 0;
  bottom: 0;
  height: 4px;
  background-color: #4CAF50;
  transition: width 0.3s ease-in-out;
  z-index: 1;
}

.sentence.loading .sentence-wrapper {
  background-color: #d4edda; /* 加载中的背景颜色 */
}

.sentence.highlight .sentence-wrapper {
  background-color: #ffeb3b; /* 或者您喜欢的其他颜色 */
}

.sentence.loading .sentence-wrapper::before {
  content: "加载中...";
  font-size: 0.8em;
  color: #777;
  display: block;
  margin-bottom: 5px;
}
</style>

同步音频文本模拟动画播放

使用 CSS 动画和 JavaScript 来模拟一个渐变填充的效果。
这个效果将从左到右逐渐填充句子背景,以模仿音频播放的过程。
实现步骤:
1 添加 CSS 动画:创建一个 CSS 动画,用于模拟背景颜色的渐进变化。
2 动态设置动画持续时间:根据每个句子的长度(即结束时间减去开始时间),计算出动画应该持续的时间。
3 触发动画:当用户点击某个句子并开始播放时,
4 为对应的 <li> 元素添加特定的类来启动动画;在播放结束或暂停时移除该类。
效果:
音频文件播放同步对应音频文本 点击对应文本可播放可暂停 进行同步音频文件播放时间点
音频同步文本 对应音频文件不仅高亮显示 并且动画模仿音频播放过程

请添加图片描述

<template>
  <div class="dialog-container">
   <div>
     <!-- 音频播放控件 -->
    <audio ref="audioPlayer" @loadedmetadata="onLoadedMetadata" @timeupdate="onTimeUpdate" @play="onPlay" @pause="onPause" @ended="onEnded" controls></audio>
   </div>
    <!-- 文本列表 -->
    <ul class="sentence-list" style="overflow-y: auto;">
      <li v-for="(sentence, index) in sentences" :key="index"
          :class="['sentence', { 'highlight': isActiveSentence(index), 'loading': isLoadingSentence(index), 'playing': isPlayingSentence(index) }, sentence.speaker === 0 ? 'customer' : 'employee']"
          @click="handleSentenceClick(sentence)">
        <div class="sentence-wrapper" :style="getAnimationDuration(sentence)">
          <div class="background-fill"></div> <!-- 新增的 div 用于背景填充 -->
          <span class="speaker-label">{{ sentence.speaker === 0 ? '客户' : '员工' }}</span>
          <span class="timestamp">[{{ formatTime(sentence.start) }} - {{ formatTime(sentence.end) }}]</span>
          <p>{{ sentence.text }}</p>
        </div>
      </li>
    </ul>
  </div>
</template>
<script>
export default {
  data() {
    return {
      currentSentenceIndex: -1,
      loadingSentenceIndex: null,
      playingSentenceIndex: null,
      sentences:[],//对应音频文本数据
      audioLoaded: false // 新增状态,用于跟踪音频是否已加载
    };
  },
  mounted() {
    const audioElement = this.$refs.audioPlayer;
    if (audioElement) {
      audioElement.src = '../20250109.wav'; // 确保路径正确
      audioElement.preload = 'auto';
      audioElement.load();
      
      // 监听 loadedmetadata 事件以设置 audioLoaded 为 true
      audioElement.addEventListener('loadedmetadata', () => {
        this.audioLoaded = true;
      });
    }
  },
  methods: {
    handleSentenceClick(sentence) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement) return;

      const index = this.sentences.findIndex(s => s.start === sentence.start && s.end === sentence.end);

      if (this.currentSentenceIndex === index && !audioElement.paused) {
        audioElement.pause();
      } else {
        this.scrollToSentence(index);
        this.loadingSentenceIndex = index;
        this.seekToSentence(sentence);
      }
    },
    seekToSentence(sentence) {
      const audioElement = this.$refs.audioPlayer;
      if (!audioElement) return;

      audioElement.currentTime = sentence.start / 1000; // 将毫秒转换为秒
      this.currentSentenceIndex = this.sentences.indexOf(sentence);
      this.playingSentenceIndex = this.currentSentenceIndex;
      audioElement.play().then(() => {
        this.loadingSentenceIndex = null;
      }).catch(error => {
        console.error('无法播放音频:', error);
        this.loadingSentenceIndex = null;
        this.playingSentenceIndex = null;
      });
    },
    onLoadedMetadata(event) {
      console.log('音频元数据已加载');
      this.audioLoaded = true; // 当元数据加载完成后设置为 true
    },
    onTimeUpdate(event) {
      const currentTime = event.target.currentTime * 1000; // 将秒转换为毫秒
      let activeIndex = -1;

      for (let i = 0; i < this.sentences.length; i++) {
        if (currentTime >= this.sentences[i].start && currentTime < this.sentences[i].end) {
          activeIndex = i;
          break;
        }
      }

      if (activeIndex !== this.currentSentenceIndex) {
        this.currentSentenceIndex = activeIndex;
        this.playingSentenceIndex = activeIndex;
        this.scrollToSentence(activeIndex);
      }
    },
    onPlay(event) {
      this.playingSentenceIndex = this.currentSentenceIndex;
    },
    onPause(event) {
      this.playingSentenceIndex = null;
    },
    onEnded(event) {
      this.playingSentenceIndex = null;
    },
    isActiveSentence(index) {
      return this.currentSentenceIndex === index;
    },
    isLoadingSentence(index) {
      return this.loadingSentenceIndex === index;
    },
    isPlayingSentence(index) {
      return this.playingSentenceIndex === index;
    },
    formatTime(ms) {
      const totalSeconds = Math.floor(ms / 1000);
      const minutes = Math.floor(totalSeconds / 60).toString().padStart(2, '0');
      const seconds = (totalSeconds % 60).toString().padStart(2, '0');
      return `${minutes}:${seconds}`;
    },
    getAnimationDuration(sentence) {
      if (!this.isPlayingSentence(this.sentences.indexOf(sentence))) return {};
      const duration = (sentence.end - sentence.start) / 1000; // 转换为秒
      return {
        '--animation-duration': `${duration}s`
      };
    },
    scrollToSentence(index) {
      const container = this.$el.querySelector('.sentence-list');
      const sentenceEl = this.$el.querySelectorAll('.sentence')[index];
      if (container && sentenceEl) {
        container.scrollTop = sentenceEl.offsetTop - container.offsetTop;
      }
    }
  }
};
</script>
<style scoped>
/*-- */
.dialog-container {
  border:1px solid red;
  padding:20px;
  display: flex;
  flex-direction: column;
  height: 400px; /* 固定高度 */
}

.sentence-list {
  list-style-type: none;
  padding: 0;
  margin: 0;
  flex-grow: 1;
  overflow-y: auto;
}

.sentence {
  cursor: pointer;
  margin: 5px 0;
  width: 100%;
  display: flex;
  justify-content: flex-start;
}

.customer {
  justify-content: flex-start;
}

.employee {
  justify-content: flex-end;
}

.sentence-wrapper {
  display: inline-block;
  max-width: 45%;
  padding: 10px;
  border-radius: 8px;
  background-color: #f0f0f0;
}

.sentence.highlight .sentence-wrapper {
  background-color: #ffeb3b; /* 或者您喜欢的其他颜色 */
}

.speaker-label {
  font-weight: bold;
}

.timestamp {
  color: #777;
}

.sentence-wrapper p {
  margin: 0;
}
/*-- */

.sentence-wrapper {
  position: relative;
  overflow: hidden;
}

.background-fill {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  right: 0;
  width: 0;
  background-color: #4CAF50;
  z-index: 1; /* 提高 z-index */
  animation: loadBackground var(--animation-duration) linear forwards;
}

@keyframes loadBackground {
  from {
    width: 0;
  }
  to {
    width: 100%;
  }
}

.sentence.loading .sentence-wrapper {
  background-color: #d4edda; /* 加载中的背景颜色 */
}

.sentence.highlight .sentence-wrapper {
  background-color: #ffeb3b; /* 或者您喜欢的其他颜色 */
}

.sentence.loading .sentence-wrapper::before {
  content: "加载中...";
  font-size: 0.8em;
  color: #777;
  display: block;
  margin-bottom: 5px;
}

.sentence.playing .sentence-wrapper > *:not(.background-fill) {
  position: relative;
  z-index: 2; /* 确保文本内容在背景之上 */
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2276500.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析-使用Excel透视图/表分析禅道数据

背景 禅道&#xff0c;是目前国内用得比较多的研发项目管理系统&#xff0c;我们常常会用它进行需求管理&#xff0c;缺陷跟踪&#xff0c;甚至软件全流程的管理&#xff0c;如果能将平台上的数据结公司的实际情况进行合理的分析利用&#xff0c;相信会给我们的项目复盘总结带来…

No. 31 笔记 | Web安全-SQL手工注入技术学习 Part 2

一、研究背景 背景介绍 SQL注入是一种常见且高危的Web安全漏洞。攻击者可以通过构造恶意SQL查询语句来绕过验证机制&#xff0c;执行未授权操作&#xff0c;如获取敏感信息、篡改数据库内容甚至控制服务器。 研究内容 本笔记探讨以下数据库的手工注入技术&#xff1a; MySQLAc…

基于FPGA的多功能数字钟设计

基于FPGA的多功能数字钟设计 前言基础知识按键数码管 系统概述按键使用说明模块描述模块设计button_debouncebutton_controllerclock_controllerdigital_tube 整体资源用量测试视频 前言 本工程主要是数码管、按键、LED的应用开发。 注&#xff1a;本工程所有IP均使用源码开发…

人工智能实验(五)-基于神经网络的模式识别实验

一、实验目的 理解BP神经网络的结构和原理&#xff0c;掌握反向传播算法对神经元的训练过程&#xff0c;了解反向传播公式。通过构建BP网络模式识别实例&#xff0c;熟悉BP网络的原理及结构 二、实验内容 基于提供的数据集&#xff0c;训练1个BP神经网络模型&#xff1a; 1. …

【伪随机数】关于排序算法自测如何生成随机数而引发的……

以 Random 开始 可能一开始&#xff0c;你只是写到了排序算法如何生成随机数 public static void main(String[] args) {Random random new Random();int[] nums new int[10];for (int i 0; i < nums.length; i) {nums[i] random.nextInt(100);}System.out.println(&q…

【LeetCode】力扣刷题热题100道(26-30题)附源码 轮转数组 乘积 矩阵 螺旋矩阵 旋转图像(C++)

目录 1.轮转数组 2.除自身以外数组的乘积 3.矩阵置零 4.螺旋矩阵 5.旋转图像 1.轮转数组 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 class Solution { public:void rotate(vector<int>& nums, int k) …

IDEA中创建maven项目

1. IDEA中创建maven项目 在IDEA中创建Maven项目&#xff0c;前提是已经安装配置好Maven环境。如还未配置安装Maven的&#xff0c;请先下载安装。如何下载安装&#xff0c;可参考我另外篇文章&#xff1a;maven的下载与安装教程本篇教程是以创建基于servlet的JavaWeb项目为例子&…

【PyQt】如何在mainwindow中添加菜单栏

[toc]如何在mainwindow中添加菜单栏 如何在mainwindow中添加菜单栏 主要有两种方法&#xff1a; 1.直接创建mainwindow进行添加 2.使用ui文件加载添加 第二种方法更为常见&#xff0c;可以应用到实际 1.直接创建mainwindow进行添加 import sysfrom PyQt5.QtWidgets import …

Kubernetes1.28 编译 kubeadm修改证书有效期到 100年.并更新k8s集群证书

文章目录 前言一、资源准备1. 下载对应源码2.安装编译工具3.安装并设置golang 二、修改证书有效期1.修改证书有效期2.修改 CA 证书有效期 三、编译kubeadm四、使用新kubeadm方式1.当部署新集群时,使用该kubeadm进行初始化2.替换现有集群kubeadm操作 前言 kubeadm 默认证书为一…

Web前端:JavaScript标识符与变量

JavaScript介绍 JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”&#xff0c;指的是它不具备开发操作系统的能力&#xff0c;而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式&#xff08;embedded&#xff09;语言。它本身提供的核心语法不算…

【从零开始使用系列】StyleGAN2:开源图像生成网络——环境搭建与基础使用篇(附大量测试图)

StyleGAN2 是英伟达团队 NVIDIA 提出的生成对抗网络&#xff08;GAN&#xff09;的一种改进版本。 它通过创新的网络架构&#xff0c;能够生成细节丰富、逼真的图像&#xff0c;特别在高频细节&#xff08;如皮肤纹理、光照等&#xff09;的表现上表现卓越。与传统 GAN 相比&am…

【时时三省】(C语言基础)经典笔试题2

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 题目 这个代码有什么问题&#xff1f; 过程&#xff1a; 从主函数开始进入Test函数&#xff0c;在这个Test函数里面&#xff0c;创建了一个str指针变量&#xff0c;str里面放了一个空指针&…

Therabody 与Garmin联手,共同推进运动恢复与健康科技新突破

本次合作以数据整合、人工智能驱动的数字教练与科学研究为重点&#xff0c;旨在更好地了解科学恢复对运动表现的影响 &#xff08;2025年1月13日&#xff0c;中国上海&#xff09;全球健康领导者Therabody宣布与智能手表品牌Garmin佳明建立战略合作关系&#xff0c;共同致力于…

vue城市道路交通流量预测可视化系统

项目亮点 编号&#xff1a;R09 &#x1f687; 网站大屏管理三大前端、vuespringbootmysql、前后端分离架构 &#x1f687; 流量预测道路查询流量查询 &#x1f687; echarts可视化、地图流量分析、限流分析、站点流量分析等 &#x1f687; 管理员可以进行、用户管理、道路信息…

云集电商:数据库的分布式升级实践|OceanBase案例

电商行业对数据库有哪些需求 云集电商作为一家传统电商企业&#xff0c;业务涵盖了美妆个护、服饰、水果生鲜、健康保健等多个领域&#xff0c;在创立四年后在纳斯达克上市&#xff08;股票代码&#xff1a;YJ&#xff09;。与京东、淘宝、拼多多等电商平台不同&#xff0c;云…

Lianwei 安全周报|2025.1.13

新的一周又开始了&#xff0c;以下是本周「Lianwei周报」&#xff0c;我们总结推荐了本周的政策/标准/指南最新动态、热点资讯和安全事件&#xff0c;保证大家不错过本周的每一个重点&#xff01; 政策/标准/指南最新动态 01 美国国土安全部发布《公共部门生成式人工智能部署手…

【江协STM32】11-2/3 W25Q64简介、软件SPI读写W25Q64

1. W25Q64简介 W25Qxx系列是一种低成本、小型化、使用简单的非易失性存储器&#xff0c;常应用于数据存储、字库存储、固件程序存储等场景存储介质&#xff1a;Nor Flash&#xff08;闪存&#xff09;时钟频率&#xff1a;80MHz / 160MHz (Dual SPI) / 320MHz (Quad SPI)存储容…

RNN之:LSTM 长短期记忆模型-结构-理论详解-及实战(Matlab向)

0.前言 递归&#xff01;循环神经网络Recurrent Neural Network 循环神经网络&#xff08;又称递归神经网络&#xff0c;Recurrent Neural Network&#xff0c;RNN&#xff09;。是一种用于处理序列数据的神经网络结构&#xff0c;具有记忆功能&#xff0c;能够捕捉序列中的时…

SOLID原则学习,接口隔离原则

文章目录 1. 定义2. 为什么要遵循接口隔离原则&#xff1f;3. 违反接口隔离原则的例子4. 遵循接口隔离原则的改进5. 总结 1. 定义 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09; 接口隔离原则是面向对象设计中的五大原则&#xff08;SOLID&#…

Qt WORD/PDF(五)使用Json一键填充Word表格

关于QT Widget 其它文章请点击这里: QT Widget 国际站点 GitHub: https://github.com/chenchuhan 国内站点 Gitee : https://gitee.com/chuck_chee 姊妹篇: 《Qt WORD/PDF&#xff08;一&#xff09;使用 QtPdfium库实现 PDF 操作》 《Qt WORD/PDF&#…