0:00.000–0:04.310
大家好,今天给大家介绍一篇比较新的paper,
0:04.310–0:07.495
也是基于Visper作语音识别的。
0:07.495–0:10.680
这篇论文的题目叫Visper CD,
0:10.680–0:13.491
专门解决长音频的语音识别问题。
0:13.491–0:15.740
如果用一句话来总结的话,
0:15.740–0:21.548
这篇paper它的核心亮点就在于不改变Visper模型的参数,
0:21.548–0:22.672
也无需训练。
0:22.672–0:26.982
只在Visper解码时给它加一个反向的揪片器,
0:26.982–0:29.980
这样专门来压制长音频的语音识别。
0:30.000–0:31.740
音频转写里面的幻觉
0:31.740–0:34.580
重复循环和漏字等问题
0:34.580–0:36.500
这就是这篇论文
0:36.500–0:37.920
它核心要解决的问题
0:37.920–0:39.360
这里面CD代表什么意思
0:39.360–0:40.420
就是一个对比解码
0:40.420–0:41.540
那我们下面来看一下
0:41.540–0:43.360
这篇PayPal它主要解决什么问题
0:43.360–0:45.040
它核心要解决的
0:45.040–0:47.320
就是可能比较长的一些语音
0:47.320–0:48.060
然后呢
0:48.060–0:50.680
以Visper为代表的一些语音识别模型
0:50.680–0:52.280
它面临的幻觉
0:52.280–0:55.220
重复循环和内容遗漏
0:55.220–0:56.500
等错误累积的问题
0:56.500–0:58.080
因为上海文太长了嘛
0:58.080–0:59.340
而且这种Visper
0:59.340–1:02.300
它是自回归的一个模型结构
1:02.300–1:04.540
所以上文的错误会累积到下文
1:04.540–1:08.780
这三种错误基本上可以看成分成以下三类
1:08.780–1:11.100
第一种就是静音区的幻觉
1:11.100–1:14.320
例如在非语音的间隔期间
1:14.320–1:15.400
但是模型呢
1:15.400–1:17.200
它还是错误的生成了文本
1:17.200–1:20.800
第二个就是跨段的重复的循环
1:20.800–1:23.260
就是模型陷入自我强化的重复模式
1:23.260–1:26.320
它会错误的不停的输出相同的字
1:26.320–1:27.760
然后一直循环一直循环
1:27.760–1:29.100
然后永远不停
1:29.100–1:30.740
第三个就是跳过
1:30.740–1:33.960
那就是遗漏了实际的语音内容
1:33.960–1:35.300
导致转路不完整
1:35.300–1:38.360
实际上就是我们语音识别里常见的三类错误
1:38.360–1:41.000
插入删除替换这三类错误
1:41.000–1:42.920
此外这个论文也指出
1:42.920–1:46.380
当前因为是自回归的语音识别模型
1:46.380–1:50.380
它会利用前一段转路的结果作为解码的上下文
1:50.380–1:52.780
那么这样就会带来一个问题
1:52.780–1:54.660
就是上面的错误会被累积
1:54.660–1:57.140
引起后面解码带来更多的错误
1:57.140–1:59.180
这就要形成了新的累积错误
1:59.180–2:01.680
这也是自卫规模型它常见的问题
2:01.680–2:04.760
那这篇paper它是如何解决这个问题的呢
2:04.760–2:06.660
它就提出了叫Visper CD
2:06.660–2:09.000
这种方式啊
2:09.000–2:10.960
不需要训练这个Visper模型的
2:10.960–2:16.460
在推理时对比干净的音频和声学扰动后的音频的一个输出
2:16.460–2:17.420
一个logis
2:17.420–2:18.560
然后从而呢
2:18.560–2:23.260
抑制长形式语音转换中的一些插入删除和替换错误
2:23.260–2:26.000
那我们就来看一下它具体是怎么做的
2:26.000–2:28.380
我们先看右面这张图吧
2:28.380–2:29.820
我把这张图看懂了
2:29.820–2:33.080
那这篇论文最精华最核心的部分也就懂了
2:33.080–2:36.440
首先白色这一部分就是输入的语音
2:36.440–2:37.860
然后这一部分呢
2:37.860–2:39.980
就是粉色的这部分就是Whisper
2:39.980–2:41.560
Whisper我们知道
2:41.560–2:44.140
它就整体过程中就不需要动
2:44.140–2:45.860
那过程是怎么样的呢
2:45.860–2:47.360
我们先看虚线这部分啊
2:47.360–2:50.340
就是上一个30秒已经识别完
2:50.340–2:52.500
识别之后的一个语音片段
2:52.500–2:53.520
那现在呢
2:53.520–2:54.860
我们要识别最新的
2:54.860–2:56.900
这个新的这30秒的语音片段
2:56.900–3:00.820
需要把它给到我们Whisper的encoder
3:00.820–3:02.740
那你看这就是黑色这部分
3:02.740–3:04.280
就是原始的这段
3:04.280–3:05.560
此外呢
3:05.560–3:07.620
我们会对原始的音频
3:07.620–3:09.240
做一些相关的扰动
3:09.240–3:10.580
把它当做复理
3:10.580–3:12.420
原来这段就当做正理
3:12.420–3:14.260
复理第一个种复理呢
3:14.260–3:16.180
就是我们加一些高斯噪声
3:16.180–3:18.280
就是在原始的这段干净音频上
3:18.280–3:19.440
加一些高斯噪声
3:19.440–3:21.020
把它变成第一种复理
3:21.020–3:22.600
也就是这个蓝色这部分
3:22.600–3:24.000
第二种复利呢
3:24.000–3:26.140
就是我们把原始的音频啊
3:26.140–3:28.180
向右稍微偏移一小段
3:28.180–3:30.200
这个就变成shift
3:30.200–3:33.100
就是偏移的这段扰动的音频
3:33.100–3:34.500
第三种音频啊
3:34.500–3:35.760
就是silence
3:35.760–3:37.520
就是完全静音的这段音频
3:37.520–3:38.460
然后呢
3:38.460–3:39.960
我们把这四种音频
3:39.960–3:41.320
同时送给Whisper
3:41.320–3:43.760
它的encoder和decoder去解码
3:43.760–3:45.620
解码之后呢
3:45.620–3:48.860
我们就得到了对应的四个输出
3:48.860–3:51.260
那黑色这部分就是原始的输出
3:51.260–3:55.600
蓝色绿色和红色分别也对应了三个输出
3:55.600–3:56.420
然后呢
3:56.420–3:59.960
我们就把正力的得分输出和负力的得分输出
3:59.960–4:01.140
进行一个整合
4:01.140–4:03.340
以叫我们叫对比的一个解码
4:03.340–4:07.420
解码之后就可以帮助我们得到
4:07.420–4:09.980
更准确的语音识别的结果
4:09.980–4:13.120
那具体它是怎么去做这个对比解码的呢
4:13.120–4:16.060
我们就来看一下论文中的原始
4:16.060–4:17.040
它是怎么说的
4:17.040–4:18.820
其实方式也很简单
4:18.820–4:22.480
正力得到的这个X就是干净的
4:22.480–4:24.020
原始干净的语音
4:24.020–4:26.380
那自回归之后
4:26.380–4:28.360
得到我们正力的一个结果
4:28.360–4:29.320
复利的呢
4:29.320–4:31.520
这个X上面加一个波浪
4:31.520–4:33.780
就是我们经过三种变换
4:33.780–4:34.920
加高斯啊
4:34.920–4:36.340
加偏移啊
4:36.340–4:39.240
和静音的变换之后的这种音频
4:39.240–4:41.060
也经过我们F
4:41.060–4:43.480
也就是Whisper之后
4:43.480–4:45.040
得到我们复利的输出
4:45.040–4:46.080
然后呢
4:46.080–4:48.860
我就通过一个α的一个超三
4:48.860–4:51.260
把这两种得分输出
4:51.260–4:52.720
把它整合在一起
4:52.720–4:56.620
然后就变成我们最终的一个CD的一个输出
4:56.620–4:58.620
那具体是怎么整合的呢
4:58.620–5:01.080
实际上就是1加上α
5:01.080–5:03.120
然后乘以我们正力的输出
5:03.120–5:05.400
减去α乘以我们负力的输出
5:05.400–5:08.020
实际上你如果把这个式子变换一下
5:08.020–5:10.760
其实就是把这个括号拆开啊
5:10.760–5:12.140
就变成正力的输出
5:12.140–5:14.260
加上正力的输出
5:14.260–5:15.480
减去负力的输出
5:15.480–5:17.160
然后再乘一个alpha的参数
5:17.160–5:17.660
对吧
5:17.660–5:21.000
所以这它代表的是什么含义呢
5:21.000–5:24.800
实际上就是我在保持正力输出不变的前提下
5:24.800–5:27.100
我把负力的那些扰动
5:27.100–5:28.440
希望都把它剪掉
5:28.440–5:30.400
然后把这些干扰项去掉
5:30.400–5:32.020
然后让它有一个对比的结果
5:32.020–5:33.980
从而帮助我更好的识别
5:33.980–5:36.060
最终的语音识别结果
5:36.060–5:39.480
这就是这篇paper最重要的
5:39.480–5:41.200
也最核心的一个机制
5:41.200–5:42.020
叫对比解码
5:42.020–5:43.800
那下面我们就来看一下
5:43.800–5:46.220
它声学扰动具体是怎么做的
5:46.220–5:47.340
基本上就是三种
5:47.340–5:49.000
一个是高斯造声的注入
5:49.000–5:50.440
就是我们随机生成
5:50.440–5:52.440
符合正态分布的高斯造声
5:52.440–5:53.740
加到原始信号上
5:53.740–5:55.480
第二个呢就是静音
5:55.480–5:56.820
我就把输入图谱
5:56.820–5:58.180
全都变成零
5:58.180–5:59.180
全零的波形
5:59.180–6:00.160
就是静音
6:00.160–6:02.560
第三个呢就是音频的时序偏移
6:02.560–6:04.680
我就把原始的30秒
6:04.680–6:07.180
向左偏移一些
6:07.180–6:09.080
然后左侧的丢弃
6:09.080–6:10.760
右侧的用零来填充
6:10.760–6:11.620
这就好了
6:11.620–6:14.260
这就是三种升学扰动的策略
6:14.260–6:15.540
然后呢
6:15.540–6:17.760
如果我们有了升学扰动的策略
6:17.760–6:18.980
那这三种策略
6:18.980–6:21.260
它是怎么结合在一起的呢
6:21.260–6:22.680
结合其实也非常简单
6:22.680–6:24.720
大家还记得我原始的诗子吧
6:24.720–6:27.000
就是1加上α乘以正力
6:27.000–6:28.480
减去α乘以负力
6:28.480–6:30.360
这里只不过负力有很多啊
6:30.360–6:32.740
就是有三种扰动策略嘛
6:32.740–6:36.360
所以负力产生的输出结果就有三种
6:36.360–6:38.520
那这三种我怎么整合到一起呢
6:38.520–6:40.940
我就把它在e的指数上
6:40.940–6:41.960
进行一个整合
6:41.960–6:43.760
先求和再求个平均
6:43.760–6:46.280
无非是这里加了一个超次参数
6:46.280–6:47.280
来控制一下
6:47.280–6:47.780
对吧
6:47.780–6:49.200
所以这个超次参数呢
6:49.200–6:50.200
一般也就设为1
6:50.200–6:53.000
那这个1其实就等于没有吗
6:53.000–6:54.100
你除它就等于没有了
6:54.100–6:56.080
那其实在原始的例子上
6:56.080–6:59.600
无非就是把三个负利的输出
6:59.600–7:01.560
进行求和再取平均
7:01.560–7:02.700
就非常简单吧
7:03.927–7:06.307
然后呢,我们再看在推理的时候。
7:06.307–7:07.259
推理的时候,
7:07.259–7:08.052
我们知道,
7:08.052–7:08.552
呃,
7:08.552–7:10.274
其实是可以并行推理的嘛,
7:10.274–7:10.774
对吧?
7:10.774–7:13.606
就是尽管输入的是K条额外的解码路径,
7:13.606–7:16.779
但是我们可以通过P处理来计算控制的开销,
7:16.779–7:18.207
也就是一次处理把它
7:18.207–7:18.927
都做完
7:18.927–7:19.947
然后整体的
7:19.947–7:20.887
它最大的优势
7:20.887–7:21.867
就是无需训练
7:21.867–7:24.047
然后我只需要在后面
7:24.047–7:26.467
只需要在解码的时候
7:26.467–7:27.487
稍加一些
7:27.487–7:30.427
所谓的工程化的处理就够了
7:30.427–7:32.687
那我们可以在这里
7:32.687–7:33.867
做一个形象的比喻
7:33.867–7:34.927
就是如果你上面
7:34.927–7:36.827
听的还不是特别懂的话
7:36.827–7:39.307
如果我们把原始的Whisper
7:39.307–7:40.647
它正常转型的时候
7:40.647–7:41.567
它就是像一个
7:41.567–7:43.007
边听边写的速记员
7:43.007–7:44.867
那这篇paper
7:44.867–7:45.987
它这个Whisper CD
7:45.987–7:47.667
它实际上做的就是
7:47.667–7:50.727
在旁边放了三个捣乱版的监听器
7:50.727–7:51.767
那一个呢
7:51.767–7:52.787
让它听起来很吵
7:52.787–7:54.307
也就是加噪音的
7:54.307–7:55.607
加高斯噪声的
7:55.607–7:57.647
一个让它几乎什么都听不到
7:57.647–8:00.147
然后就是静音的
8:00.147–8:01.027
还有一个呢
8:01.027–8:02.847
是让它错位的
8:02.847–8:04.107
就是这个偏移的
8:04.107–8:05.467
然后如果某个词
8:05.467–8:07.247
在这三种不利的条件下
8:07.247–8:09.107
它仍然特别想写出来
8:09.107–8:12.927
那这个词多半就不是真的想听到的
8:12.927–8:14.467
而是它习惯性脑补的
8:14.467–8:17.007
于是系统就把这些词的分数扣掉
8:17.007–8:18.707
然后这个解释啊
8:18.707–8:19.987
基本上或者这个比喻啊
8:19.987–8:22.127
就是整篇论文方法的本质
8:22.127–8:22.867
嗯
8:22.867–8:25.287
最后我们来看一下它的效果啊
8:25.287–8:25.947
整个论文呢
8:25.947–8:29.707
是在这五个长音频的英文测试机上来做的
8:29.707–8:30.647
然后我们看一下
8:30.647–8:33.407
它这个效果还是很不错的
8:33.407–8:36.347
就是加CD是这次改编之后的吧
8:36.347–8:38.667
然后它在两个VSPR的版本上做
8:38.667–8:40.787
我们看到原始的VSPR
8:40.787–8:42.507
像V3那种
8:42.507–8:43.887
它在这些测试机上
8:43.887–8:45.707
这个凑率都非常高
8:45.707–8:47.427
这都超过100%了
8:47.427–8:48.907
有200多500多
8:48.907–8:53.847
但是呢我们在Visper V3上加了解码上的改进之后
8:53.847–8:54.947
下降非常多
8:54.947–8:57.027
就都从200多变成45
8:57.027–8:58.647
从44变成19
8:58.647–8:59.827
从500多变成57
8:59.827–9:00.327
对吧
9:00.327–9:01.607
第二种方式呢
9:01.607–9:02.927
就是我用更强的版本
9:02.927–9:04.007
用Turbo这个版本
9:04.007–9:05.827
虽然原始的版本
9:05.827–9:07.647
直接用Visper
9:07.647–9:11.587
识别这个长文效果比V3会好一些啊
9:11.587–9:14.067
但是也不尽如人意吧
9:14.067–9:14.967
但是呢
9:14.967–9:16.467
我们加了这种CD之后
9:16.467–9:19.027
你会看到它效果像样的也是非常明显
9:19.027–9:21.747
所以这就是我觉得这篇paper非常
9:21.747–9:24.507
值得分享的吧
9:24.507–9:26.167
就是它用非常小的改动
9:26.167–9:29.607
然后实现了对常文的一个效果非常大的提升
9:29.607–9:32.047
我们最后来总结一下这篇paper
9:32.047–9:34.007
就是长音频的识别
9:34.007–9:36.527
Whisper的话会有很多严重的错误
9:36.527–9:39.987
但这些错误它大概率不是模型不会识别
9:39.987–9:41.647
而是解码的过程中
9:41.647–9:44.847
被之前的识别结果和一些上下文绑架了
9:44.847–9:47.127
导致它越识别越错
9:47.127–9:47.947
越识别越错
9:47.947–9:51.127
所以作者他不是去强化原始模型的能力
9:51.127–9:52.627
也就是没有训练原始的模型
9:52.627–9:56.827
而是直接在token选择的阶段做干预
9:56.827–9:59.267
这个角度就是在工程测作
9:59.267–10:00.387
然后也很聪明
10:00.387–10:03.007
好这期视频就给大家介绍到这
0:00.000–0:04.310
大家好,今天给大家介绍一篇比较新的paper,
0:04.310–0:07.495
也是基于Visper作语音识别的。
0:07.495–0:10.680
这篇论文的题目叫Visper CD,
0:10.680–0:13.491
专门解决长音频的语音识别问题。
0:13.491–0:15.740
如果用一句话来总结的话,
0:15.740–0:21.548
这篇paper它的核心亮点就在于不改变Visper模型的参数,
0:21.548–0:22.672
也无需训练。
0:22.672–0:26.982
只在Visper解码时给它加一个反向的揪片器,
0:26.982–0:29.980
这样专门来压制长音频的语音识别。
0:30.000–0:31.740
音频转写里面的幻觉
0:31.740–0:34.580
重复循环和漏字等问题
0:34.580–0:36.500
这就是这篇论文
0:36.500–0:37.920
它核心要解决的问题
0:37.920–0:39.360
这里面CD代表什么意思
0:39.360–0:40.420
就是一个对比解码
0:40.420–0:41.540
那我们下面来看一下
0:41.540–0:43.360
这篇PayPal它主要解决什么问题
0:43.360–0:45.040
它核心要解决的
0:45.040–0:47.320
就是可能比较长的一些语音
0:47.320–0:48.060
然后呢
0:48.060–0:50.680
以Visper为代表的一些语音识别模型
0:50.680–0:52.280
它面临的幻觉
0:52.280–0:55.220
重复循环和内容遗漏
0:55.220–0:56.500
等错误累积的问题
0:56.500–0:58.080
因为上海文太长了嘛
0:58.080–0:59.340
而且这种Visper
0:59.340–1:02.300
它是自回归的一个模型结构
1:02.300–1:04.540
所以上文的错误会累积到下文
1:04.540–1:08.780
这三种错误基本上可以看成分成以下三类
1:08.780–1:11.100
第一种就是静音区的幻觉
1:11.100–1:14.320
例如在非语音的间隔期间
1:14.320–1:15.400
但是模型呢
1:15.400–1:17.200
它还是错误的生成了文本
1:17.200–1:20.800
第二个就是跨段的重复的循环
1:20.800–1:23.260
就是模型陷入自我强化的重复模式
1:23.260–1:26.320
它会错误的不停的输出相同的字
1:26.320–1:27.760
然后一直循环一直循环
1:27.760–1:29.100
然后永远不停
1:29.100–1:30.740
第三个就是跳过
1:30.740–1:33.960
那就是遗漏了实际的语音内容
1:33.960–1:35.300
导致转路不完整
1:35.300–1:38.360
实际上就是我们语音识别里常见的三类错误
1:38.360–1:41.000
插入删除替换这三类错误
1:41.000–1:42.920
此外这个论文也指出
1:42.920–1:46.380
当前因为是自回归的语音识别模型
1:46.380–1:50.380
它会利用前一段转路的结果作为解码的上下文
1:50.380–1:52.780
那么这样就会带来一个问题
1:52.780–1:54.660
就是上面的错误会被累积
1:54.660–1:57.140
引起后面解码带来更多的错误
1:57.140–1:59.180
这就要形成了新的累积错误
1:59.180–2:01.680
这也是自卫规模型它常见的问题
2:01.680–2:04.760
那这篇paper它是如何解决这个问题的呢
2:04.760–2:06.660
它就提出了叫Visper CD
2:06.660–2:09.000
这种方式啊
2:09.000–2:10.960
不需要训练这个Visper模型的
2:10.960–2:16.460
在推理时对比干净的音频和声学扰动后的音频的一个输出
2:16.460–2:17.420
一个logis
2:17.420–2:18.560
然后从而呢
2:18.560–2:23.260
抑制长形式语音转换中的一些插入删除和替换错误
2:23.260–2:26.000
那我们就来看一下它具体是怎么做的
2:26.000–2:28.380
我们先看右面这张图吧
2:28.380–2:29.820
我把这张图看懂了
2:29.820–2:33.080
那这篇论文最精华最核心的部分也就懂了
2:33.080–2:36.440
首先白色这一部分就是输入的语音
2:36.440–2:37.860
然后这一部分呢
2:37.860–2:39.980
就是粉色的这部分就是Whisper
2:39.980–2:41.560
Whisper我们知道
2:41.560–2:44.140
它就整体过程中就不需要动
2:44.140–2:45.860
那过程是怎么样的呢
2:45.860–2:47.360
我们先看虚线这部分啊
2:47.360–2:50.340
就是上一个30秒已经识别完
2:50.340–2:52.500
识别之后的一个语音片段
2:52.500–2:53.520
那现在呢
2:53.520–2:54.860
我们要识别最新的
2:54.860–2:56.900
这个新的这30秒的语音片段
2:56.900–3:00.820
需要把它给到我们Whisper的encoder
3:00.820–3:02.740
那你看这就是黑色这部分
3:02.740–3:04.280
就是原始的这段
3:04.280–3:05.560
此外呢
3:05.560–3:07.620
我们会对原始的音频
3:07.620–3:09.240
做一些相关的扰动
3:09.240–3:10.580
把它当做复理
3:10.580–3:12.420
原来这段就当做正理
3:12.420–3:14.260
复理第一个种复理呢
3:14.260–3:16.180
就是我们加一些高斯噪声
3:16.180–3:18.280
就是在原始的这段干净音频上
3:18.280–3:19.440
加一些高斯噪声
3:19.440–3:21.020
把它变成第一种复理
3:21.020–3:22.600
也就是这个蓝色这部分
3:22.600–3:24.000
第二种复利呢
3:24.000–3:26.140
就是我们把原始的音频啊
3:26.140–3:28.180
向右稍微偏移一小段
3:28.180–3:30.200
这个就变成shift
3:30.200–3:33.100
就是偏移的这段扰动的音频
3:33.100–3:34.500
第三种音频啊
3:34.500–3:35.760
就是silence
3:35.760–3:37.520
就是完全静音的这段音频
3:37.520–3:38.460
然后呢
3:38.460–3:39.960
我们把这四种音频
3:39.960–3:41.320
同时送给Whisper
3:41.320–3:43.760
它的encoder和decoder去解码
3:43.760–3:45.620
解码之后呢
3:45.620–3:48.860
我们就得到了对应的四个输出
3:48.860–3:51.260
那黑色这部分就是原始的输出
3:51.260–3:55.600
蓝色绿色和红色分别也对应了三个输出
3:55.600–3:56.420
然后呢
3:56.420–3:59.960
我们就把正力的得分输出和负力的得分输出
3:59.960–4:01.140
进行一个整合
4:01.140–4:03.340
以叫我们叫对比的一个解码
4:03.340–4:07.420
解码之后就可以帮助我们得到
4:07.420–4:09.980
更准确的语音识别的结果
4:09.980–4:13.120
那具体它是怎么去做这个对比解码的呢
4:13.120–4:16.060
我们就来看一下论文中的原始
4:16.060–4:17.040
它是怎么说的
4:17.040–4:18.820
其实方式也很简单
4:18.820–4:22.480
正力得到的这个X就是干净的
4:22.480–4:24.020
原始干净的语音
4:24.020–4:26.380
那自回归之后
4:26.380–4:28.360
得到我们正力的一个结果
4:28.360–4:29.320
复利的呢
4:29.320–4:31.520
这个X上面加一个波浪
4:31.520–4:33.780
就是我们经过三种变换
4:33.780–4:34.920
加高斯啊
4:34.920–4:36.340
加偏移啊
4:36.340–4:39.240
和静音的变换之后的这种音频
4:39.240–4:41.060
也经过我们F
4:41.060–4:43.480
也就是Whisper之后
4:43.480–4:45.040
得到我们复利的输出
4:45.040–4:46.080
然后呢
4:46.080–4:48.860
我就通过一个α的一个超三
4:48.860–4:51.260
把这两种得分输出
4:51.260–4:52.720
把它整合在一起
4:52.720–4:56.620
然后就变成我们最终的一个CD的一个输出
4:56.620–4:58.620
那具体是怎么整合的呢
4:58.620–5:01.080
实际上就是1加上α
5:01.080–5:03.120
然后乘以我们正力的输出
5:03.120–5:05.400
减去α乘以我们负力的输出
5:05.400–5:08.020
实际上你如果把这个式子变换一下
5:08.020–5:10.760
其实就是把这个括号拆开啊
5:10.760–5:12.140
就变成正力的输出
5:12.140–5:14.260
加上正力的输出
5:14.260–5:15.480
减去负力的输出
5:15.480–5:17.160
然后再乘一个alpha的参数
5:17.160–5:17.660
对吧
5:17.660–5:21.000
所以这它代表的是什么含义呢
5:21.000–5:24.800
实际上就是我在保持正力输出不变的前提下
5:24.800–5:27.100
我把负力的那些扰动
5:27.100–5:28.440
希望都把它剪掉
5:28.440–5:30.400
然后把这些干扰项去掉
5:30.400–5:32.020
然后让它有一个对比的结果
5:32.020–5:33.980
从而帮助我更好的识别
5:33.980–5:36.060
最终的语音识别结果
5:36.060–5:39.480
这就是这篇paper最重要的
5:39.480–5:41.200
也最核心的一个机制
5:41.200–5:42.020
叫对比解码
5:42.020–5:43.800
那下面我们就来看一下
5:43.800–5:46.220
它声学扰动具体是怎么做的
5:46.220–5:47.340
基本上就是三种
5:47.340–5:49.000
一个是高斯造声的注入
5:49.000–5:50.440
就是我们随机生成
5:50.440–5:52.440
符合正态分布的高斯造声
5:52.440–5:53.740
加到原始信号上
5:53.740–5:55.480
第二个呢就是静音
5:55.480–5:56.820
我就把输入图谱
5:56.820–5:58.180
全都变成零
5:58.180–5:59.180
全零的波形
5:59.180–6:00.160
就是静音
6:00.160–6:02.560
第三个呢就是音频的时序偏移
6:02.560–6:04.680
我就把原始的30秒
6:04.680–6:07.180
向左偏移一些
6:07.180–6:09.080
然后左侧的丢弃
6:09.080–6:10.760
右侧的用零来填充
6:10.760–6:11.620
这就好了
6:11.620–6:14.260
这就是三种升学扰动的策略
6:14.260–6:15.540
然后呢
6:15.540–6:17.760
如果我们有了升学扰动的策略
6:17.760–6:18.980
那这三种策略
6:18.980–6:21.260
它是怎么结合在一起的呢
6:21.260–6:22.680
结合其实也非常简单
6:22.680–6:24.720
大家还记得我原始的诗子吧
6:24.720–6:27.000
就是1加上α乘以正力
6:27.000–6:28.480
减去α乘以负力
6:28.480–6:30.360
这里只不过负力有很多啊
6:30.360–6:32.740
就是有三种扰动策略嘛
6:32.740–6:36.360
所以负力产生的输出结果就有三种
6:36.360–6:38.520
那这三种我怎么整合到一起呢
6:38.520–6:40.940
我就把它在e的指数上
6:40.940–6:41.960
进行一个整合
6:41.960–6:43.760
先求和再求个平均
6:43.760–6:46.280
无非是这里加了一个超次参数
6:46.280–6:47.280
来控制一下
6:47.280–6:47.780
对吧
6:47.780–6:49.200
所以这个超次参数呢
6:49.200–6:50.200
一般也就设为1
6:50.200–6:53.000
那这个1其实就等于没有吗
6:53.000–6:54.100
你除它就等于没有了
6:54.100–6:56.080
那其实在原始的例子上
6:56.080–6:59.600
无非就是把三个负利的输出
6:59.600–7:01.560
进行求和再取平均
7:01.560–7:02.700
就非常简单吧
7:03.927–7:06.307
然后呢,我们再看在推理的时候。
7:06.307–7:07.259
推理的时候,
7:07.259–7:08.052
我们知道,
7:08.052–7:08.552
呃,
7:08.552–7:10.274
其实是可以并行推理的嘛,
7:10.274–7:10.774
对吧?
7:10.774–7:13.606
就是尽管输入的是K条额外的解码路径,
7:13.606–7:16.779
但是我们可以通过P处理来计算控制的开销,
7:16.779–7:18.207
也就是一次处理把它
7:18.207–7:18.927
都做完
7:18.927–7:19.947
然后整体的
7:19.947–7:20.887
它最大的优势
7:20.887–7:21.867
就是无需训练
7:21.867–7:24.047
然后我只需要在后面
7:24.047–7:26.467
只需要在解码的时候
7:26.467–7:27.487
稍加一些
7:27.487–7:30.427
所谓的工程化的处理就够了
7:30.427–7:32.687
那我们可以在这里
7:32.687–7:33.867
做一个形象的比喻
7:33.867–7:34.927
就是如果你上面
7:34.927–7:36.827
听的还不是特别懂的话
7:36.827–7:39.307
如果我们把原始的Whisper
7:39.307–7:40.647
它正常转型的时候
7:40.647–7:41.567
它就是像一个
7:41.567–7:43.007
边听边写的速记员
7:43.007–7:44.867
那这篇paper
7:44.867–7:45.987
它这个Whisper CD
7:45.987–7:47.667
它实际上做的就是
7:47.667–7:50.727
在旁边放了三个捣乱版的监听器
7:50.727–7:51.767
那一个呢
7:51.767–7:52.787
让它听起来很吵
7:52.787–7:54.307
也就是加噪音的
7:54.307–7:55.607
加高斯噪声的
7:55.607–7:57.647
一个让它几乎什么都听不到
7:57.647–8:00.147
然后就是静音的
8:00.147–8:01.027
还有一个呢
8:01.027–8:02.847
是让它错位的
8:02.847–8:04.107
就是这个偏移的
8:04.107–8:05.467
然后如果某个词
8:05.467–8:07.247
在这三种不利的条件下
8:07.247–8:09.107
它仍然特别想写出来
8:09.107–8:12.927
那这个词多半就不是真的想听到的
8:12.927–8:14.467
而是它习惯性脑补的
8:14.467–8:17.007
于是系统就把这些词的分数扣掉
8:17.007–8:18.707
然后这个解释啊
8:18.707–8:19.987
基本上或者这个比喻啊
8:19.987–8:22.127
就是整篇论文方法的本质
8:22.127–8:22.867
嗯
8:22.867–8:25.287
最后我们来看一下它的效果啊
8:25.287–8:25.947
整个论文呢
8:25.947–8:29.707
是在这五个长音频的英文测试机上来做的
8:29.707–8:30.647
然后我们看一下
8:30.647–8:33.407
它这个效果还是很不错的
8:33.407–8:36.347
就是加CD是这次改编之后的吧
8:36.347–8:38.667
然后它在两个VSPR的版本上做
8:38.667–8:40.787
我们看到原始的VSPR
8:40.787–8:42.507
像V3那种
8:42.507–8:43.887
它在这些测试机上
8:43.887–8:45.707
这个凑率都非常高
8:45.707–8:47.427
这都超过100%了
8:47.427–8:48.907
有200多500多
8:48.907–8:53.847
但是呢我们在Visper V3上加了解码上的改进之后
8:53.847–8:54.947
下降非常多
8:54.947–8:57.027
就都从200多变成45
8:57.027–8:58.647
从44变成19
8:58.647–8:59.827
从500多变成57
8:59.827–9:00.327
对吧
9:00.327–9:01.607
第二种方式呢
9:01.607–9:02.927
就是我用更强的版本
9:02.927–9:04.007
用Turbo这个版本
9:04.007–9:05.827
虽然原始的版本
9:05.827–9:07.647
直接用Visper
9:07.647–9:11.587
识别这个长文效果比V3会好一些啊
9:11.587–9:14.067
但是也不尽如人意吧
9:14.067–9:14.967
但是呢
9:14.967–9:16.467
我们加了这种CD之后
9:16.467–9:19.027
你会看到它效果像样的也是非常明显
9:19.027–9:21.747
所以这就是我觉得这篇paper非常
9:21.747–9:24.507
值得分享的吧
9:24.507–9:26.167
就是它用非常小的改动
9:26.167–9:29.607
然后实现了对常文的一个效果非常大的提升
9:29.607–9:32.047
我们最后来总结一下这篇paper
9:32.047–9:34.007
就是长音频的识别
9:34.007–9:36.527
Whisper的话会有很多严重的错误
9:36.527–9:39.987
但这些错误它大概率不是模型不会识别
9:39.987–9:41.647
而是解码的过程中
9:41.647–9:44.847
被之前的识别结果和一些上下文绑架了
9:44.847–9:47.127
导致它越识别越错
9:47.127–9:47.947
越识别越错
9:47.947–9:51.127
所以作者他不是去强化原始模型的能力
9:51.127–9:52.627
也就是没有训练原始的模型
9:52.627–9:56.827
而是直接在token选择的阶段做干预
9:56.827–9:59.267
这个角度就是在工程测作
9:59.267–10:00.387
然后也很聪明
10:00.387–10:03.007
好这期视频就给大家介绍到这
0:00.000–0:04.310
大家好,今天给大家介绍一篇比较新的paper,
大家好,今天给大家介绍一篇比较新的paper,
0:04.310–0:07.495
也是基于Visper作语音识别的。
也是基于Visper作语音识别的。
0:07.495–0:10.680
这篇论文的题目叫Visper CD,
这篇论文的题目叫Visper CD,
0:10.680–0:13.491
专门解决长音频的语音识别问题。
专门解决长音频的语音识别问题。
0:13.491–0:15.740
如果用一句话来总结的话,
如果用一句话来总结的话,
0:15.740–0:21.548
这篇paper它的核心亮点就在于不改变Visper模型的参数,
这篇paper它的核心亮点就在于不改变Visper模型的参数,
0:21.548–0:22.672
也无需训练。
也无需训练。
0:22.672–0:26.982
只在Visper解码时给它加一个反向的揪片器,
只在Visper解码时给它加一个反向的揪片器,
0:26.982–0:29.980
这样专门来压制长音频的语音识别。
这样专门来压制长音频的语音识别。
0:30.000–0:31.740
音频转写里面的幻觉
音频转写里面的幻觉
0:31.740–0:34.580
重复循环和漏字等问题
重复循环和漏字等问题
0:34.580–0:36.500
这就是这篇论文
这就是这篇论文
0:36.500–0:37.920
它核心要解决的问题
它核心要解决的问题
0:37.920–0:39.360
这里面CD代表什么意思
这里面CD代表什么意思
0:39.360–0:40.420
就是一个对比解码
就是一个对比解码
0:40.420–0:41.540
那我们下面来看一下
那我们下面来看一下
0:41.540–0:43.360
这篇PayPal它主要解决什么问题
这篇PayPal它主要解决什么问题
0:43.360–0:45.040
它核心要解决的
它核心要解决的
0:45.040–0:47.320
就是可能比较长的一些语音
就是可能比较长的一些语音
0:47.320–0:48.060
然后呢
然后呢
0:48.060–0:50.680
以Visper为代表的一些语音识别模型
以Visper为代表的一些语音识别模型
0:50.680–0:52.280
它面临的幻觉
它面临的幻觉
0:52.280–0:55.220
重复循环和内容遗漏
重复循环和内容遗漏
0:55.220–0:56.500
等错误累积的问题
等错误累积的问题
0:56.500–0:58.080
因为上海文太长了嘛
因为上海文太长了嘛
0:58.080–0:59.340
而且这种Visper
而且这种Visper
0:59.340–1:02.300
它是自回归的一个模型结构
它是自回归的一个模型结构
1:02.300–1:04.540
所以上文的错误会累积到下文
所以上文的错误会累积到下文
1:04.540–1:08.780
这三种错误基本上可以看成分成以下三类
这三种错误基本上可以看成分成以下三类
1:08.780–1:11.100
第一种就是静音区的幻觉
第一种就是静音区的幻觉
1:11.100–1:14.320
例如在非语音的间隔期间
例如在非语音的间隔期间
1:14.320–1:15.400
但是模型呢
但是模型呢
1:15.400–1:17.200
它还是错误的生成了文本
它还是错误的生成了文本
1:17.200–1:20.800
第二个就是跨段的重复的循环
第二个就是跨段的重复的循环
1:20.800–1:23.260
就是模型陷入自我强化的重复模式
就是模型陷入自我强化的重复模式
1:23.260–1:26.320
它会错误的不停的输出相同的字
它会错误的不停的输出相同的字
1:26.320–1:27.760
然后一直循环一直循环
然后一直循环一直循环
1:27.760–1:29.100
然后永远不停
然后永远不停
1:29.100–1:30.740
第三个就是跳过
第三个就是跳过
1:30.740–1:33.960
那就是遗漏了实际的语音内容
那就是遗漏了实际的语音内容
1:33.960–1:35.300
导致转路不完整
导致转路不完整
1:35.300–1:38.360
实际上就是我们语音识别里常见的三类错误
实际上就是我们语音识别里常见的三类错误
1:38.360–1:41.000
插入删除替换这三类错误
插入删除替换这三类错误
1:41.000–1:42.920
此外这个论文也指出
此外这个论文也指出
1:42.920–1:46.380
当前因为是自回归的语音识别模型
当前因为是自回归的语音识别模型
1:46.380–1:50.380
它会利用前一段转路的结果作为解码的上下文
它会利用前一段转路的结果作为解码的上下文
1:50.380–1:52.780
那么这样就会带来一个问题
那么这样就会带来一个问题
1:52.780–1:54.660
就是上面的错误会被累积
就是上面的错误会被累积
1:54.660–1:57.140
引起后面解码带来更多的错误
引起后面解码带来更多的错误
1:57.140–1:59.180
这就要形成了新的累积错误
这就要形成了新的累积错误
1:59.180–2:01.680
这也是自卫规模型它常见的问题
这也是自卫规模型它常见的问题
2:01.680–2:04.760
那这篇paper它是如何解决这个问题的呢
那这篇paper它是如何解决这个问题的呢
2:04.760–2:06.660
它就提出了叫Visper CD
它就提出了叫Visper CD
2:06.660–2:09.000
这种方式啊
这种方式啊
2:09.000–2:10.960
不需要训练这个Visper模型的
不需要训练这个Visper模型的
2:10.960–2:16.460
在推理时对比干净的音频和声学扰动后的音频的一个输出
在推理时对比干净的音频和声学扰动后的音频的一个输出
2:16.460–2:17.420
一个logis
一个logis
2:17.420–2:18.560
然后从而呢
然后从而呢
2:18.560–2:23.260
抑制长形式语音转换中的一些插入删除和替换错误
抑制长形式语音转换中的一些插入删除和替换错误
2:23.260–2:26.000
那我们就来看一下它具体是怎么做的
那我们就来看一下它具体是怎么做的
2:26.000–2:28.380
我们先看右面这张图吧
我们先看右面这张图吧
2:28.380–2:29.820
我把这张图看懂了
我把这张图看懂了
2:29.820–2:33.080
那这篇论文最精华最核心的部分也就懂了
那这篇论文最精华最核心的部分也就懂了
2:33.080–2:36.440
首先白色这一部分就是输入的语音
首先白色这一部分就是输入的语音
2:36.440–2:37.860
然后这一部分呢
然后这一部分呢
2:37.860–2:39.980
就是粉色的这部分就是Whisper
就是粉色的这部分就是Whisper
2:39.980–2:41.560
Whisper我们知道
Whisper我们知道
2:41.560–2:44.140
它就整体过程中就不需要动
它就整体过程中就不需要动
2:44.140–2:45.860
那过程是怎么样的呢
那过程是怎么样的呢
2:45.860–2:47.360
我们先看虚线这部分啊
我们先看虚线这部分啊
2:47.360–2:50.340
就是上一个30秒已经识别完
就是上一个30秒已经识别完
2:50.340–2:52.500
识别之后的一个语音片段
识别之后的一个语音片段
2:52.500–2:53.520
那现在呢
那现在呢
2:53.520–2:54.860
我们要识别最新的
我们要识别最新的
2:54.860–2:56.900
这个新的这30秒的语音片段
这个新的这30秒的语音片段
2:56.900–3:00.820
需要把它给到我们Whisper的encoder
需要把它给到我们Whisper的encoder
3:00.820–3:02.740
那你看这就是黑色这部分
那你看这就是黑色这部分
3:02.740–3:04.280
就是原始的这段
就是原始的这段
3:04.280–3:05.560
此外呢
此外呢
3:05.560–3:07.620
我们会对原始的音频
我们会对原始的音频
3:07.620–3:09.240
做一些相关的扰动
做一些相关的扰动
3:09.240–3:10.580
把它当做复理
把它当做复理
3:10.580–3:12.420
原来这段就当做正理
原来这段就当做正理
3:12.420–3:14.260
复理第一个种复理呢
复理第一个种复理呢
3:14.260–3:16.180
就是我们加一些高斯噪声
就是我们加一些高斯噪声
3:16.180–3:18.280
就是在原始的这段干净音频上
就是在原始的这段干净音频上
3:18.280–3:19.440
加一些高斯噪声
加一些高斯噪声
3:19.440–3:21.020
把它变成第一种复理
把它变成第一种复理
3:21.020–3:22.600
也就是这个蓝色这部分
也就是这个蓝色这部分
3:22.600–3:24.000
第二种复利呢
第二种复利呢
3:24.000–3:26.140
就是我们把原始的音频啊
就是我们把原始的音频啊
3:26.140–3:28.180
向右稍微偏移一小段
向右稍微偏移一小段
3:28.180–3:30.200
这个就变成shift
这个就变成shift
3:30.200–3:33.100
就是偏移的这段扰动的音频
就是偏移的这段扰动的音频
3:33.100–3:34.500
第三种音频啊
第三种音频啊
3:34.500–3:35.760
就是silence
就是silence
3:35.760–3:37.520
就是完全静音的这段音频
就是完全静音的这段音频
3:37.520–3:38.460
然后呢
然后呢
3:38.460–3:39.960
我们把这四种音频
我们把这四种音频
3:39.960–3:41.320
同时送给Whisper
同时送给Whisper
3:41.320–3:43.760
它的encoder和decoder去解码
它的encoder和decoder去解码
3:43.760–3:45.620
解码之后呢
解码之后呢
3:45.620–3:48.860
我们就得到了对应的四个输出
我们就得到了对应的四个输出
3:48.860–3:51.260
那黑色这部分就是原始的输出
那黑色这部分就是原始的输出
3:51.260–3:55.600
蓝色绿色和红色分别也对应了三个输出
蓝色绿色和红色分别也对应了三个输出
3:55.600–3:56.420
然后呢
然后呢
3:56.420–3:59.960
我们就把正力的得分输出和负力的得分输出
我们就把正力的得分输出和负力的得分输出
3:59.960–4:01.140
进行一个整合
进行一个整合
4:01.140–4:03.340
以叫我们叫对比的一个解码
以叫我们叫对比的一个解码
4:03.340–4:07.420
解码之后就可以帮助我们得到
解码之后就可以帮助我们得到
4:07.420–4:09.980
更准确的语音识别的结果
更准确的语音识别的结果
4:09.980–4:13.120
那具体它是怎么去做这个对比解码的呢
那具体它是怎么去做这个对比解码的呢
4:13.120–4:16.060
我们就来看一下论文中的原始
我们就来看一下论文中的原始
4:16.060–4:17.040
它是怎么说的
它是怎么说的
4:17.040–4:18.820
其实方式也很简单
其实方式也很简单
4:18.820–4:22.480
正力得到的这个X就是干净的
正力得到的这个X就是干净的
4:22.480–4:24.020
原始干净的语音
原始干净的语音
4:24.020–4:26.380
那自回归之后
那自回归之后
4:26.380–4:28.360
得到我们正力的一个结果
得到我们正力的一个结果
4:28.360–4:29.320
复利的呢
复利的呢
4:29.320–4:31.520
这个X上面加一个波浪
这个X上面加一个波浪
4:31.520–4:33.780
就是我们经过三种变换
就是我们经过三种变换
4:33.780–4:34.920
加高斯啊
加高斯啊
4:34.920–4:36.340
加偏移啊
加偏移啊
4:36.340–4:39.240
和静音的变换之后的这种音频
和静音的变换之后的这种音频
4:39.240–4:41.060
也经过我们F
也经过我们F
4:41.060–4:43.480
也就是Whisper之后
也就是Whisper之后
4:43.480–4:45.040
得到我们复利的输出
得到我们复利的输出
4:45.040–4:46.080
然后呢
然后呢
4:46.080–4:48.860
我就通过一个α的一个超三
我就通过一个α的一个超三
4:48.860–4:51.260
把这两种得分输出
把这两种得分输出
4:51.260–4:52.720
把它整合在一起
把它整合在一起
4:52.720–4:56.620
然后就变成我们最终的一个CD的一个输出
然后就变成我们最终的一个CD的一个输出
4:56.620–4:58.620
那具体是怎么整合的呢
那具体是怎么整合的呢
4:58.620–5:01.080
实际上就是1加上α
实际上就是1加上α
5:01.080–5:03.120
然后乘以我们正力的输出
然后乘以我们正力的输出
5:03.120–5:05.400
减去α乘以我们负力的输出
减去α乘以我们负力的输出
5:05.400–5:08.020
实际上你如果把这个式子变换一下
实际上你如果把这个式子变换一下
5:08.020–5:10.760
其实就是把这个括号拆开啊
其实就是把这个括号拆开啊
5:10.760–5:12.140
就变成正力的输出
就变成正力的输出
5:12.140–5:14.260
加上正力的输出
加上正力的输出
5:14.260–5:15.480
减去负力的输出
减去负力的输出
5:15.480–5:17.160
然后再乘一个alpha的参数
然后再乘一个alpha的参数
5:17.160–5:17.660
对吧
对吧
5:17.660–5:21.000
所以这它代表的是什么含义呢
所以这它代表的是什么含义呢
5:21.000–5:24.800
实际上就是我在保持正力输出不变的前提下
实际上就是我在保持正力输出不变的前提下
5:24.800–5:27.100
我把负力的那些扰动
我把负力的那些扰动
5:27.100–5:28.440
希望都把它剪掉
希望都把它剪掉
5:28.440–5:30.400
然后把这些干扰项去掉
然后把这些干扰项去掉
5:30.400–5:32.020
然后让它有一个对比的结果
然后让它有一个对比的结果
5:32.020–5:33.980
从而帮助我更好的识别
从而帮助我更好的识别
5:33.980–5:36.060
最终的语音识别结果
最终的语音识别结果
5:36.060–5:39.480
这就是这篇paper最重要的
这就是这篇paper最重要的
5:39.480–5:41.200
也最核心的一个机制
也最核心的一个机制
5:41.200–5:42.020
叫对比解码
叫对比解码
5:42.020–5:43.800
那下面我们就来看一下
那下面我们就来看一下
5:43.800–5:46.220
它声学扰动具体是怎么做的
它声学扰动具体是怎么做的
5:46.220–5:47.340
基本上就是三种
基本上就是三种
5:47.340–5:49.000
一个是高斯造声的注入
一个是高斯造声的注入
5:49.000–5:50.440
就是我们随机生成
就是我们随机生成
5:50.440–5:52.440
符合正态分布的高斯造声
符合正态分布的高斯造声
5:52.440–5:53.740
加到原始信号上
加到原始信号上
5:53.740–5:55.480
第二个呢就是静音
第二个呢就是静音
5:55.480–5:56.820
我就把输入图谱
我就把输入图谱
5:56.820–5:58.180
全都变成零
全都变成零
5:58.180–5:59.180
全零的波形
全零的波形
5:59.180–6:00.160
就是静音
就是静音
6:00.160–6:02.560
第三个呢就是音频的时序偏移
第三个呢就是音频的时序偏移
6:02.560–6:04.680
我就把原始的30秒
我就把原始的30秒
6:04.680–6:07.180
向左偏移一些
向左偏移一些
6:07.180–6:09.080
然后左侧的丢弃
然后左侧的丢弃
6:09.080–6:10.760
右侧的用零来填充
右侧的用零来填充
6:10.760–6:11.620
这就好了
这就好了
6:11.620–6:14.260
这就是三种升学扰动的策略
这就是三种升学扰动的策略
6:14.260–6:15.540
然后呢
然后呢
6:15.540–6:17.760
如果我们有了升学扰动的策略
如果我们有了升学扰动的策略
6:17.760–6:18.980
那这三种策略
那这三种策略
6:18.980–6:21.260
它是怎么结合在一起的呢
它是怎么结合在一起的呢
6:21.260–6:22.680
结合其实也非常简单
结合其实也非常简单
6:22.680–6:24.720
大家还记得我原始的诗子吧
大家还记得我原始的诗子吧
6:24.720–6:27.000
就是1加上α乘以正力
就是1加上α乘以正力
6:27.000–6:28.480
减去α乘以负力
减去α乘以负力
6:28.480–6:30.360
这里只不过负力有很多啊
这里只不过负力有很多啊
6:30.360–6:32.740
就是有三种扰动策略嘛
就是有三种扰动策略嘛
6:32.740–6:36.360
所以负力产生的输出结果就有三种
所以负力产生的输出结果就有三种
6:36.360–6:38.520
那这三种我怎么整合到一起呢
那这三种我怎么整合到一起呢
6:38.520–6:40.940
我就把它在e的指数上
我就把它在e的指数上
6:40.940–6:41.960
进行一个整合
进行一个整合
6:41.960–6:43.760
先求和再求个平均
先求和再求个平均
6:43.760–6:46.280
无非是这里加了一个超次参数
无非是这里加了一个超次参数
6:46.280–6:47.280
来控制一下
来控制一下
6:47.280–6:47.780
对吧
对吧
6:47.780–6:49.200
所以这个超次参数呢
所以这个超次参数呢
6:49.200–6:50.200
一般也就设为1
一般也就设为1
6:50.200–6:53.000
那这个1其实就等于没有吗
那这个1其实就等于没有吗
6:53.000–6:54.100
你除它就等于没有了
你除它就等于没有了
6:54.100–6:56.080
那其实在原始的例子上
那其实在原始的例子上
6:56.080–6:59.600
无非就是把三个负利的输出
无非就是把三个负利的输出
6:59.600–7:01.560
进行求和再取平均
进行求和再取平均
7:01.560–7:02.700
就非常简单吧
就非常简单吧
7:03.927–7:06.307
然后呢,我们再看在推理的时候。
然后呢,我们再看在推理的时候。
7:06.307–7:07.259
推理的时候,
推理的时候,
7:07.259–7:08.052
我们知道,
我们知道,
7:08.052–7:08.552
呃,
呃,
7:08.552–7:10.274
其实是可以并行推理的嘛,
其实是可以并行推理的嘛,
7:10.274–7:10.774
对吧?
对吧?
7:10.774–7:13.606
就是尽管输入的是K条额外的解码路径,
就是尽管输入的是K条额外的解码路径,
7:13.606–7:16.779
但是我们可以通过P处理来计算控制的开销,
但是我们可以通过P处理来计算控制的开销,
7:16.779–7:18.207
也就是一次处理把它
也就是一次处理把它
7:18.207–7:18.927
都做完
都做完
7:18.927–7:19.947
然后整体的
然后整体的
7:19.947–7:20.887
它最大的优势
它最大的优势
7:20.887–7:21.867
就是无需训练
就是无需训练
7:21.867–7:24.047
然后我只需要在后面
然后我只需要在后面
7:24.047–7:26.467
只需要在解码的时候
只需要在解码的时候
7:26.467–7:27.487
稍加一些
稍加一些
7:27.487–7:30.427
所谓的工程化的处理就够了
所谓的工程化的处理就够了
7:30.427–7:32.687
那我们可以在这里
那我们可以在这里
7:32.687–7:33.867
做一个形象的比喻
做一个形象的比喻
7:33.867–7:34.927
就是如果你上面
就是如果你上面
7:34.927–7:36.827
听的还不是特别懂的话
听的还不是特别懂的话
7:36.827–7:39.307
如果我们把原始的Whisper
如果我们把原始的Whisper
7:39.307–7:40.647
它正常转型的时候
它正常转型的时候
7:40.647–7:41.567
它就是像一个
它就是像一个
7:41.567–7:43.007
边听边写的速记员
边听边写的速记员
7:43.007–7:44.867
那这篇paper
那这篇paper
7:44.867–7:45.987
它这个Whisper CD
它这个Whisper CD
7:45.987–7:47.667
它实际上做的就是
它实际上做的就是
7:47.667–7:50.727
在旁边放了三个捣乱版的监听器
在旁边放了三个捣乱版的监听器
7:50.727–7:51.767
那一个呢
那一个呢
7:51.767–7:52.787
让它听起来很吵
让它听起来很吵
7:52.787–7:54.307
也就是加噪音的
也就是加噪音的
7:54.307–7:55.607
加高斯噪声的
加高斯噪声的
7:55.607–7:57.647
一个让它几乎什么都听不到
一个让它几乎什么都听不到
7:57.647–8:00.147
然后就是静音的
然后就是静音的
8:00.147–8:01.027
还有一个呢
还有一个呢
8:01.027–8:02.847
是让它错位的
是让它错位的
8:02.847–8:04.107
就是这个偏移的
就是这个偏移的
8:04.107–8:05.467
然后如果某个词
然后如果某个词
8:05.467–8:07.247
在这三种不利的条件下
在这三种不利的条件下
8:07.247–8:09.107
它仍然特别想写出来
它仍然特别想写出来
8:09.107–8:12.927
那这个词多半就不是真的想听到的
那这个词多半就不是真的想听到的
8:12.927–8:14.467
而是它习惯性脑补的
而是它习惯性脑补的
8:14.467–8:17.007
于是系统就把这些词的分数扣掉
于是系统就把这些词的分数扣掉
8:17.007–8:18.707
然后这个解释啊
然后这个解释啊
8:18.707–8:19.987
基本上或者这个比喻啊
基本上或者这个比喻啊
8:19.987–8:22.127
就是整篇论文方法的本质
就是整篇论文方法的本质
8:22.127–8:22.867
嗯
嗯
8:22.867–8:25.287
最后我们来看一下它的效果啊
最后我们来看一下它的效果啊
8:25.287–8:25.947
整个论文呢
整个论文呢
8:25.947–8:29.707
是在这五个长音频的英文测试机上来做的
是在这五个长音频的英文测试机上来做的
8:29.707–8:30.647
然后我们看一下
然后我们看一下
8:30.647–8:33.407
它这个效果还是很不错的
它这个效果还是很不错的
8:33.407–8:36.347
就是加CD是这次改编之后的吧
就是加CD是这次改编之后的吧
8:36.347–8:38.667
然后它在两个VSPR的版本上做
然后它在两个VSPR的版本上做
8:38.667–8:40.787
我们看到原始的VSPR
我们看到原始的VSPR
8:40.787–8:42.507
像V3那种
像V3那种
8:42.507–8:43.887
它在这些测试机上
它在这些测试机上
8:43.887–8:45.707
这个凑率都非常高
这个凑率都非常高
8:45.707–8:47.427
这都超过100%了
这都超过100%了
8:47.427–8:48.907
有200多500多
有200多500多
8:48.907–8:53.847
但是呢我们在Visper V3上加了解码上的改进之后
但是呢我们在Visper V3上加了解码上的改进之后
8:53.847–8:54.947
下降非常多
下降非常多
8:54.947–8:57.027
就都从200多变成45
就都从200多变成45
8:57.027–8:58.647
从44变成19
从44变成19
8:58.647–8:59.827
从500多变成57
从500多变成57
8:59.827–9:00.327
对吧
对吧
9:00.327–9:01.607
第二种方式呢
第二种方式呢
9:01.607–9:02.927
就是我用更强的版本
就是我用更强的版本
9:02.927–9:04.007
用Turbo这个版本
用Turbo这个版本
9:04.007–9:05.827
虽然原始的版本
虽然原始的版本
9:05.827–9:07.647
直接用Visper
直接用Visper
9:07.647–9:11.587
识别这个长文效果比V3会好一些啊
识别这个长文效果比V3会好一些啊
9:11.587–9:14.067
但是也不尽如人意吧
但是也不尽如人意吧
9:14.067–9:14.967
但是呢
但是呢
9:14.967–9:16.467
我们加了这种CD之后
我们加了这种CD之后
9:16.467–9:19.027
你会看到它效果像样的也是非常明显
你会看到它效果像样的也是非常明显
9:19.027–9:21.747
所以这就是我觉得这篇paper非常
所以这就是我觉得这篇paper非常
9:21.747–9:24.507
值得分享的吧
值得分享的吧
9:24.507–9:26.167
就是它用非常小的改动
就是它用非常小的改动
9:26.167–9:29.607
然后实现了对常文的一个效果非常大的提升
然后实现了对常文的一个效果非常大的提升
9:29.607–9:32.047
我们最后来总结一下这篇paper
我们最后来总结一下这篇paper
9:32.047–9:34.007
就是长音频的识别
就是长音频的识别
9:34.007–9:36.527
Whisper的话会有很多严重的错误
Whisper的话会有很多严重的错误
9:36.527–9:39.987
但这些错误它大概率不是模型不会识别
但这些错误它大概率不是模型不会识别
9:39.987–9:41.647
而是解码的过程中
而是解码的过程中
9:41.647–9:44.847
被之前的识别结果和一些上下文绑架了
被之前的识别结果和一些上下文绑架了
9:44.847–9:47.127
导致它越识别越错
导致它越识别越错
9:47.127–9:47.947
越识别越错
越识别越错
9:47.947–9:51.127
所以作者他不是去强化原始模型的能力
所以作者他不是去强化原始模型的能力
9:51.127–9:52.627
也就是没有训练原始的模型
也就是没有训练原始的模型
9:52.627–9:56.827
而是直接在token选择的阶段做干预
而是直接在token选择的阶段做干预
9:56.827–9:59.267
这个角度就是在工程测作
这个角度就是在工程测作
9:59.267–10:00.387
然后也很聪明
然后也很聪明
10:00.387–10:03.007
好这期视频就给大家介绍到这
好这期视频就给大家介绍到这
影片筆記:不用训练模型,Whisper性能暴涨!背后只改了一步解码
<!-- VIDEONOTE_PUBLICATION_WARNINGS_BEGIN -->
⚠️ 可先使用,仍有待修正項目
本筆記已完成可閱讀的逐字稿與時間跳轉;下列為待處理問題,建議播放原片確認。
- 待修正:逐字稿全文快速校讀未完成(已保留自動字幕/原始逐字稿並繼續生成筆記。;未完成的全文速讀項目可在精進模式回聽確認。)
<!-- VIDEONOTE_PUBLICATION_WARNINGS_END -->
一句話總結
該影片解析了名為 Visper CD 的論文,介紹了一種在推理階段無需訓練模型、僅需修改解碼步驟的工程化方法。通過引入「對比解碼」(Contrastive Decoding, CD)機制,利用乾淨音頻與經過聲學擾動(如噪聲、靜音、時序偏移)的音頻輸出進行對比,有效抑制了長音頻識別中的幻覺、重複循環和漏字等錯誤,顯著降低了錯誤率。
核心重點
- 無需訓練的優化:該方法不改變模型參數,也不需要重新訓練,僅在推理(Inference)階段的解碼過程中進行工程化干預。
- 解決長音頻識別痛點:針對自回歸模型(如 Whisper/Visper)在長音頻識別中容易出現的「錯誤累積」問題,特別是幻覺(Hallucination)、重複循環(Looping)和內容遺漏(Skipping)。
- 對比解碼機制 (CD):
- 核心邏輯是計算「正例」(乾淨音頻)與「負例」(聲學擾動後的音頻)的 Logits 差異。
- 公式概念:
(1 + α) * 正例輸出 - α * 負例輸出。
- 目的:保留乾淨音頻的正確預測,同時減去受擾動影響的錯誤預測項。
- 三種聲學擾動策略(負例生成):
- 高斯噪聲注入:加入符合正態分布的隨機噪聲。
- 靜音(Silence):將輸入圖譜變為全零(無聲信號)。
- 時序偏移(Shift):將音頻向左偏移,左側丟棄,右側補零。
- 效率與效果:
- 支持並行推理,計算開銷可控。
- 實驗顯示,在長音頻測試集上,錯誤率從 200-500+ 大幅下降至 45-57 左右。
- 被比喻為:在速記員旁邊放置三個「搗亂版監聽器」,若某詞在搗亂條件下仍被強烈輸出,則視為腦補並扣除分數。
詳細大綱
1. 論文背景與核心亮點
- 論文名稱:Visper CD。
- 核心優勢:
- 不改變 Visper 模型的參數。
- 無需進行訓練(Training-free)。
- 僅需在推理階段進行工程化處理。
- 核心機制:在解碼時加入反向的揪片器(即對比解碼機制)。
- 解決問題:長音頻語音識別中的幻覺、重複循環、漏字。
2. Visper 模型面臨的錯誤類型
- 背景:Visper 為自回歸模型結構,上文錯誤會累積至下文。
- 錯誤分類:
- 靜音區幻覺:在非語音間隔期間錯誤生成文本。
- 跨段重複循環:模型陷入自我強化的重複模式,不停輸出相同字詞。
- 跳過(內容遺漏):遺漏實際語音內容,導致轉寫不完整。
3. Visper CD 的具體實現機制
- 對比解碼(Contrastive Decoding, CD):
- 對比乾淨音頻(正例)與聲學擾動後音頻(負例)的輸出 Logits。
- 公式邏輯:
(1 + α) * 正例輸出 - α * 負例輸出。
- 目的:在保持正例輸出不變的前提下,剪掉負例中的擾動干擾項。
- 聲學擾動策略(三種負例生成方式):
- 高斯噪聲注入:隨機生成符合正態分布的高斯噪聲加到原始信號上。
- 靜音(Silence):將輸入圖譜全變為零(全零波形)。
- 時序偏移(Shift):將原始音頻向左偏移,左側丟棄,右側用零填充。
- 整合方式:
- 將三種負例輸出在指數上求和並取平均。
- 引入超參數 α 進行控制(通常設為 1)。
4. 推理效率與優勢
- 支持並行推理:儘管輸入 K 條額外的解碼路徑,但可通過並行處理計算控制開銷。
- 最大優勢:無需訓練,僅需解碼時的工程化處理。
5. 形象比喻
- 原始 Whisper:像邊聽邊寫的速記員。
- Visper CD:旁邊放了三個「搗亂版的監聽器」(聽起來很吵、幾乎聽不到、聽錯位的)。
- 原理:若某詞在負例條件下仍被強烈輸出,則視為習慣性腦補,系統將該詞分數扣除。
6. 實驗效果
- 測試環境:五個長音頻英文測試集。
- 結果對比:
- Visper V3:錯誤率從 200-500 多大幅下降至 45-57。
- Visper Turbo:效果提升同樣明顯。
- 結論:用很小的改動實現對長文識別效果的巨大提升。
7. 總結
- 長音頻識別錯誤多因解碼過程中被之前結果和上下文「綁架」,導致越識別越錯。
- 作者未強化原始模型能力(無訓練),而是在 Token 選擇階段進行干預(工程側操作)。
工具 / 模型 / 名詞整理
- Visper / Whisper:影片中交替使用,指代同一個基礎語音識別模型。根據上下文推測應為 OpenAI 的 Whisper 模型,但筆記中保留原稱「Visper」並列為疑點。
- Visper CD:論文名稱,指代引入對比解碼機制的 Visper 變體。
- Visper V3 / Visper Turbo:模型的不同版本或變體。
- 對比解碼 (Contrastive Decoding, CD):核心算法機制,通過對比正負樣本的輸出 Logits 來抑制錯誤。
- 正例 (Positive Example):指乾淨音頻的輸出。
- 負例 (Negative Example):指經過聲學擾動後的音頻輸出。
- 聲學擾動 (Acoustic Perturbation):包括高斯噪聲、靜音、時序偏移等干擾手段。
- 超參數 (Hyperparameter) α:用於控制正負例權重的參數,通常設為 1。
- Logits:模型輸出的未歸一化對數概率值。
操作流程整理
- 輸入準備:獲取原始音頻信號。
- 生成正例:將乾淨音頻輸入模型,獲得正例輸出 Logits。
- 生成負例(三種擾動):
- 路徑 A:對原始音頻注入高斯噪聲,輸入模型獲得輸出。
- 路徑 B:將音頻變為全零(靜音),輸入模型獲得輸出。
- 路徑 C:將音頻向左偏移並補零,輸入模型獲得輸出。
- 整合負例:將三種負例輸出在指數上求和並取平均。
- 計算最終解碼:
- 應用公式:
(1 + α) * 正例輸出 - α * 負例平均輸出。
- 其中 α 為超參數(通常為 1)。
- Token 選擇:根據計算後的結果選擇下一個 Token,完成解碼。
- 並行處理:上述過程可並行執行以減少推理延遲。
值得注意的限制或風險
- 模型名稱混淆:影片中大量使用「Visper」一詞,與業界通用的「Whisper」名稱不一致,可能影響資料檢索與理解。
- 聲學擾動的選擇:負例的生成依賴於特定的聲學擾動策略(噪聲、靜音、偏移),不同類型的音頻可能對不同擾動的敏感度不同。
- 超參數 α 的設定:雖然通常設為 1,但具體應用中可能需要調整以適應不同場景。
- 計算開銷:雖然支持並行推理,但同時計算多條解碼路徑仍會增加一定的計算資源消耗。
逐字稿辨識疑點
- Visper:逐字稿開頭及大部分內容使用「Visper」,後段出現「Whisper」。考慮到語音識別領域常見模型為 Whisper,且文中提到「基于Visper作语音识别」及「Whisper的encoder」,此處「Visper」極大機率為聽寫錯誤,但依規則標為疑點,不自行更正。
- PayPal:文中提到「这篇PayPal它主要解决什么问题」,結合上下文應指「Paper」(論文),此處為聽寫錯誤。
- 上海文太長:文中提到「因为上海文太长了嘛」,結合上下文應指「長音頻」或「長文本」,此處為聽寫錯誤。
- 转路 / 转路不完整:文中提到「导致转路不完整」,應指「轉寫」或「轉錄」。
- 自卫规模型:文中提到「这也是自卫规模型它常见的问题」,應指「Visper 模型」或相關模型名稱。
- 复理 / 复利:文中多次提到「当做复理」、「复理第一个种复理呢」、「复利的呢」、「复利的输出」,應指「負例」(Negative Example)。
- 正力:文中提到「正力得到的这个X」、「正力的得分输出」、「正力的输出」,應指「正例」(Positive Example)。
- 超三 / 超次参数 / 超次:文中提到「通过一个α的一个超三」、「这里加了一个超次参数」、「超次参数呢,一般也就设为1」,應指「超參數」(Hyperparameter)。
- 升学扰动:文中提到「这就是三种升学扰动的策略」,應指「聲學擾動」。
- 原始的诗子:文中提到「大家还记得我原始的诗子吧」,應指「原始的式子」(公式)。
- 工程测作:文中提到「这个角度就是在工程测作」,應指「工程側操作」或「工程措施」。
- 凑率:文中提到「这个凑率都非常高」,應指「錯誤率」(WER/CER)。
- 这次改编:文中提到「加CD是这次改编之后的吧」,應指「加 CD 是這次改進之後的」。
可延伸追問
- Visper CD 方法是否適用於其他類型的自回歸模型(如 LLM)?
- 三種聲學擾動策略中,哪一種對抑制特定類型的錯誤(如幻覺 vs. 重複)最有效?
- 超參數 α 在不同語言或不同音頻質量下的最佳設定值是多少?
- 該方法對實時語音識別(Real-time ASR)的延遲影響具體是多少毫秒?
尚未產生學習筆記
請在 Telegram 指令最後加上「學習」,例如:videonote 網址 英文 雙語 學習