WEBVTT

00:00:00.520 --> 00:00:07.160
大家好,今天我們給大家講解Voice Agent的這個適時語音識別ASR的一個原理。

00:00:07.940 --> 00:00:22.780
我們從頭到尾把它捋一遍,要知道它背後的原理是什麼。當然具體的這個技術實現,肯定是由對應的這個供應商已經實現了。但是我們了解原理的話,對我們理解Voice Agent是有幫助的。

00:00:23.300 --> 00:00:23.800
好

00:00:24.320 --> 00:00:25.860
那么ASR呢

00:00:26.100 --> 00:00:28.920
其实我们一般会说ICTT

00:00:29.180 --> 00:00:30.720
就是语音转文字

00:00:31.480 --> 00:00:35.320
但是更专业的说法可以说ASR

00:00:35.580 --> 00:00:37.880
并且在这个voice agent里面

00:00:38.140 --> 00:00:39.420
一定要用

00:00:40.440 --> 00:00:41.460
实施语音

00:00:41.720 --> 00:00:42.500
实施语音的转换

00:00:42.740 --> 00:00:45.060
你整段语音的转文本

00:00:45.300 --> 00:00:47.100
对于这个voice agent意义不大

00:00:47.360 --> 00:00:49.140
因为你无法做这些

00:00:49.660 --> 00:00:50.940
打断了这个处理

00:00:51.700 --> 00:00:51.960
好

00:00:52.780 --> 00:00:55.780
那么他不是听懂了整句在翻译

00:00:55.780 --> 00:00:58.820
而是把音频声音切成一帧帧的逐帧

00:00:58.820 --> 00:01:01.900
拆这个什么音再把它串成

00:01:01.900 --> 00:01:05.020
这个再串成这个字

00:01:05.020 --> 00:01:06.080
是这么来的

00:01:06.080 --> 00:01:13.240
然后第一步把声音变成模型能吃的东西

00:01:13.240 --> 00:01:16.020
比如说声波到一串数字

00:01:16.020 --> 00:01:20.020
每秒采集16000个点

00:01:20.020 --> 00:01:22.740
气压变化变成一串整数

00:01:22.740 --> 00:01:24.520
第二部分呢

00:01:24.520 --> 00:01:25.740
就是切成一帧一帧的

00:01:25.740 --> 00:01:27.120
每帧20秒

00:01:27.120 --> 00:01:28.200
这么短的时间内

00:01:28.200 --> 00:01:29.740
声音特征基本不变

00:01:29.740 --> 00:01:30.680
那就是20毫秒

00:01:30.680 --> 00:01:32.260
20毫秒切变成一帧

00:01:32.260 --> 00:01:36.720
所以我们说之前说了一个40毫秒

00:01:36.720 --> 00:01:37.600
其实就是两帧嘛

00:01:37.600 --> 00:01:42.880
第三个是每帧算出频谱指纹

00:01:42.880 --> 00:01:43.920
不看波形

00:01:43.920 --> 00:01:46.000
看频率成分

00:01:46.000 --> 00:01:47.280
人耳听的就是这个

00:01:47.280 --> 00:01:50.300
其实这个是声学的里面

00:01:50.300 --> 00:01:51.360
最基本的原理

00:01:51.360 --> 00:01:51.900
这个呢

00:01:51.900 --> 00:01:52.220
其实

00:01:52.220 --> 00:01:54.000
我们不用过去顺究

00:01:54.000 --> 00:01:55.100
我们简单了解就行了

00:01:55.100 --> 00:01:57.180
为本要转成平谱了

00:01:57.180 --> 00:01:58.380
同一个R

00:01:58.380 --> 00:02:00.260
你说和我说

00:02:00.260 --> 00:02:01.580
大声说和小声说

00:02:01.580 --> 00:02:02.520
波形完全不同

00:02:02.520 --> 00:02:06.480
但平谱成分分布是相似的

00:02:06.480 --> 00:02:07.720
换成平谱模型

00:02:07.720 --> 00:02:09.440
要认的东西就稳定多了

00:02:09.440 --> 00:02:10.220
说白就说

00:02:10.220 --> 00:02:11.120
你说R

00:02:11.120 --> 00:02:12.160
我说R

00:02:12.160 --> 00:02:12.540
是吧

00:02:12.540 --> 00:02:13.540
那两个声音大小

00:02:13.540 --> 00:02:14.320
可能是不同的

00:02:14.320 --> 00:02:15.320
波形是不同的

00:02:15.320 --> 00:02:16.880
所以用通过波形是不行的

00:02:16.880 --> 00:02:18.360
要把它换成平谱

00:02:18.360 --> 00:02:20.960
模型才能更好的识别

00:02:20.960 --> 00:02:22.060
好

00:02:22.060 --> 00:02:25.400
第二步就是升学模型逐针猜

00:02:25.400 --> 00:02:26.680
这一针是什么音

00:02:26.680 --> 00:02:29.360
比如说你好

00:02:29.360 --> 00:02:30.120
对吧

00:02:30.120 --> 00:02:30.440
为例

00:02:30.440 --> 00:02:33.260
那模型对每一针独立给出一个猜测

00:02:33.260 --> 00:02:35.620
他不知道这个字

00:02:35.620 --> 00:02:37.720
只知道这一针最像什么

00:02:37.720 --> 00:02:39.480
那每一针猜测

00:02:39.480 --> 00:02:39.980
比如理

00:02:39.980 --> 00:02:40.740
这个是空格

00:02:40.740 --> 00:02:42.220
空的空白的

00:02:42.220 --> 00:02:43.200
理理理

00:02:43.200 --> 00:02:45.200
空白好好好

00:02:45.200 --> 00:02:46.060
空白

00:02:46.060 --> 00:02:47.980
灰色是空白的符号

00:02:47.980 --> 00:02:50.020
意思是这一针没有内容输出

00:02:50.020 --> 00:02:50.460
有了它

00:02:50.460 --> 00:02:51.540
模型就不用纠结

00:02:51.540 --> 00:02:53.140
一个音到底跨几帧

00:02:53.140 --> 00:02:55.560
说了长就多图几帧

00:02:55.560 --> 00:02:57.440
同样字交给下一步收拾

00:02:57.440 --> 00:02:59.120
所以说我们可以看到

00:02:59.120 --> 00:02:59.960
可能是这么个情况

00:02:59.960 --> 00:03:02.320
这个是每一帧的情况

00:03:02.320 --> 00:03:02.880
每一帧

00:03:02.880 --> 00:03:04.520
每一帧我们说了20毫秒

00:03:04.520 --> 00:03:06.360
第三步就解码

00:03:06.360 --> 00:03:09.140
合并重复去掉空白

00:03:09.140 --> 00:03:10.580
比如说我们可以看到

00:03:10.580 --> 00:03:11.780
有理理理好好好

00:03:11.780 --> 00:03:14.780
那肯定是合并成理好就行了

00:03:14.780 --> 00:03:18.080
然后再把这些空白的地方

00:03:18.080 --> 00:03:19.420
再把它去掉就变成理好

00:03:19.420 --> 00:03:20.880
其实就是用户就说了个理好

00:03:20.880 --> 00:03:22.640
好好好

00:03:22.640 --> 00:03:23.480
你好

00:03:25.640 --> 00:03:27.680
那么连续的这个

00:03:28.480 --> 00:03:29.560
空白的哈

00:03:30.080 --> 00:03:31.120
这段没人说话

00:03:31.120 --> 00:03:32.600
所以很多流色ASR

00:03:32.600 --> 00:03:34.400
根本不用单独跑一个VED

00:03:35.040 --> 00:03:37.600
直接读升学模型空白输出就行

00:03:37.600 --> 00:03:38.760
判断依据识别

00:03:38.760 --> 00:03:39.760
本身天然一致

00:03:40.240 --> 00:03:41.600
那你说白了就是有

00:03:41.600 --> 00:03:43.920
你这个针里面有这么多空白的符号

00:03:43.920 --> 00:03:45.600
那肯定就是你没说话

00:03:45.600 --> 00:03:46.320
对吧

00:03:46.480 --> 00:03:49.000
那这个就相当于做了一个VED的判断

00:03:49.560 --> 00:03:50.680
就是你没说话

00:03:51.880 --> 00:03:56.320
这就是断句原理那张图里第二步的最常见的实验方式之一

00:03:57.520 --> 00:03:58.360
空白符嘛

00:03:58.360 --> 00:03:59.240
那不就断句了吗

00:03:59.240 --> 00:04:00.200
我就认为你没说话

00:04:01.440 --> 00:04:02.920
比如说你这里面

00:04:02.920 --> 00:04:04.360
如果你这空白的地方

00:04:04.640 --> 00:04:05.600
并且时间呢

00:04:06.560 --> 00:04:07.560
这个比如说

00:04:08.520 --> 00:04:09.920
这个超过300毫秒了

00:04:09.920 --> 00:04:10.840
那我们认为

00:04:11.520 --> 00:04:12.600
你这句话说完了

00:04:13.040 --> 00:04:13.560
这个意思

00:04:15.560 --> 00:04:19.480
那么为什么牛市的识别会边缩边改呢

00:04:19.480 --> 00:04:20.840
对吧

00:04:20.840 --> 00:04:22.760
为什么他会边说边改

00:04:22.760 --> 00:04:26.200
比如他听到0.3秒

00:04:26.200 --> 00:04:27.520
离

00:04:27.520 --> 00:04:30.440
听到0.7秒

00:04:30.440 --> 00:04:30.900
离好

00:04:30.900 --> 00:04:32.880
听到1.2秒

00:04:32.880 --> 00:04:33.440
离好吗

00:04:33.440 --> 00:04:36.480
那么在这个时候

00:04:36.480 --> 00:04:37.680
他静音不是很久

00:04:37.680 --> 00:04:38.220
也就是说

00:04:38.220 --> 00:04:39.480
他是低于300毫秒的

00:04:40.160 --> 00:04:43.160
其实这句话就没说完

00:04:43.160 --> 00:04:45.420
离好这时候也没说完

00:04:45.420 --> 00:04:47.940
但是到这个时候

00:04:47.940 --> 00:04:49.020
可能后面的静音

00:04:49.020 --> 00:04:50.260
已经超过300毫秒了

00:04:50.860 --> 00:04:51.660
就final了

00:04:51.780 --> 00:04:53.380
就静音够久定稿了

00:04:56.260 --> 00:04:58.980
我们来看右边这段话

00:05:08.220 --> 00:05:09.420
我们看右边的解释

00:05:09.860 --> 00:05:12.460
流失模型只看过去看不到未来

00:05:13.420 --> 00:05:15.100
比如像理解的模型whisper

00:05:15.380 --> 00:05:16.380
拿到整段音频

00:05:16.380 --> 00:05:19.120
可以前后互相印证

00:05:19.120 --> 00:05:20.220
牛4必须在

00:05:20.920 --> 00:05:22.220
这个前后互相印证是什么意思

00:05:22.220 --> 00:05:24.480
就是他有一段完整的音频

00:05:24.480 --> 00:05:27.520
他已经把一个逐字稿全部练完了

00:05:27.720 --> 00:05:29.720
那你当然知道前后有什么

00:05:30.420 --> 00:05:32.380
语言他会把它改掉的

00:05:32.380 --> 00:05:33.820
但牛4必须在

00:05:34.180 --> 00:05:36.880
我想聊聊乒乓的时候就输出

00:05:37.180 --> 00:05:39.040
而后面是球还是球拍

00:05:39.040 --> 00:05:39.920
根本没有发生

00:05:40.180 --> 00:05:41.740
他也不知道你是聊乒乓球

00:05:41.740 --> 00:05:43.040
还是聊乒乓球猪

00:05:43.240 --> 00:05:44.380
还是聊乒乓球技术

00:05:44.380 --> 00:05:45.480
还是聊乒乓球拍

00:05:46.000 --> 00:05:46.500
对吧

00:05:47.780 --> 00:05:49.840
那这个牛市的就需要解决这种问题

00:05:50.340 --> 00:05:52.640
所以他边拆边改,改的过程呢

00:05:54.180 --> 00:05:54.960
就是这个

00:05:55.720 --> 00:05:57.760
就是我们前面说的这两段对吧

00:06:01.100 --> 00:06:01.860
就是in term

00:06:02.380 --> 00:06:03.920
那么确定不了的就是final的

00:06:04.940 --> 00:06:08.260
那么前面这一部分他就逐字就是在屏幕上了

00:06:09.040 --> 00:06:09.540
是吧

00:06:09.540 --> 00:06:10.820
用户才能看到他的听

00:06:11.340 --> 00:06:12.620
那我们经常看到这个

00:06:12.880 --> 00:06:14.920
比如说你在用豆包的经常就说你

00:06:14.920 --> 00:06:16.520
你问他问题干什么

00:06:16.520 --> 00:06:17.120
就是他

00:06:17.400 --> 00:06:18.600
或者说别的这种

00:06:19.680 --> 00:06:20.480
语音的这种工具

00:06:20.480 --> 00:06:22.520
你会发现他的字在逐步在出是吧

00:06:22.760 --> 00:06:23.680
就是这个意思

00:06:24.520 --> 00:06:26.200
他在编出还帮你改

00:06:27.120 --> 00:06:30.000
中文尤其是没有词的编辑

00:06:30.000 --> 00:06:31.080
同音字扎堆

00:06:31.280 --> 00:06:31.560
对吧

00:06:31.560 --> 00:06:32.720
他同音字特别多

00:06:32.920 --> 00:06:34.240
全靠上下文区分

00:06:34.360 --> 00:06:36.440
而上下文恰恰是流是最缺的部分

00:06:36.600 --> 00:06:38.160
这也就是中文识别了

00:06:38.280 --> 00:06:39.160
既然用阿里云

00:06:39.160 --> 00:06:40.320
而不是用deepgram

00:06:40.400 --> 00:06:41.080
那么deepgram

00:06:41.080 --> 00:06:42.360
他是对英文字是特别好

00:06:42.360 --> 00:06:43.680
包括Yenion Live这些

00:06:43.680 --> 00:06:48.080
所以你中文的话你还是用阿里云、火山、腾讯

00:06:48.080 --> 00:06:49.040
像这些是吧

00:06:49.040 --> 00:06:50.320
他肯定中文制作的好一些

00:06:50.320 --> 00:06:51.760
好

00:06:51.760 --> 00:06:58.400
那我们上面讲了学会之后怎么用

00:06:58.400 --> 00:06:59.080
推理

00:06:59.080 --> 00:07:01.440
那他是怎么学会的

00:07:01.440 --> 00:07:04.700
他为什么能识别呢

00:07:04.700 --> 00:07:07.160
为什么他能识别出来了

00:07:07.160 --> 00:07:08.640
背后的原理是什么

00:07:08.640 --> 00:07:11.040
第一个就是为他配好的

00:07:11.040 --> 00:07:12.460
对的数据

00:07:12.460 --> 00:07:14.040
训练数据标注预料

00:07:29.192 --> 00:07:31.492
有东北画,对吧,天津画

00:07:31.752 --> 00:07:33.792
等等,比如说上海画

00:07:34.312 --> 00:07:36.352
那你有这么多这个

00:07:36.872 --> 00:07:38.412
方言,普通话

00:07:38.912 --> 00:07:39.952
等等这些画

00:07:40.192 --> 00:07:41.232
你录给他

00:07:42.512 --> 00:07:44.032
他去训练这个数据

00:07:45.072 --> 00:07:46.352
这个是和其他的

00:07:46.852 --> 00:07:48.912
这个模型是一样的,你得有训练数据

00:07:50.692 --> 00:07:55.312
让他自己找规律,然后就训练嘛,就推理嘛,这个是为数据嘛,然后这个就是推理

00:07:55.552 --> 00:07:56.072
反向

00:07:56.072 --> 00:07:59.192
反向传播掉参数

00:07:59.192 --> 00:08:01.452
反复对照这几百万条

00:08:01.452 --> 00:08:03.472
没有人告诉他

00:08:03.472 --> 00:08:04.652
你这个音长什么样

00:08:04.652 --> 00:08:07.372
规律是他自己从数据里总结出来的

00:08:07.372 --> 00:08:08.612
学出来是两样东西

00:08:08.612 --> 00:08:09.432
升线模型

00:08:09.432 --> 00:08:11.312
认这一针是什么音

00:08:11.312 --> 00:08:13.352
语言模型

00:08:13.352 --> 00:08:15.492
同音字里挑哪个更适合上下文

00:08:15.492 --> 00:08:17.212
说白了

00:08:17.212 --> 00:08:18.512
就你的这个模型

00:08:18.512 --> 00:08:20.452
给他的数据越多

00:08:20.452 --> 00:08:21.252
训练的越

00:08:21.252 --> 00:08:23.992
找的规律越好

00:08:23.992 --> 00:08:24.592
对吧

00:08:24.592 --> 00:08:26.192
你的参数越多

00:08:26.192 --> 00:08:27.872
那当然你的这个识别

00:08:27.872 --> 00:08:28.972
可能越准

00:08:28.972 --> 00:08:33.112
那么学会了就可以放话

00:08:33.112 --> 00:08:33.532
对吧

00:08:33.532 --> 00:08:35.612
和推理

00:08:35.612 --> 00:08:37.272
那这一段

00:08:37.272 --> 00:08:39.132
从没听过的录音

00:08:39.132 --> 00:08:41.092
换一个没听过的人来说

00:08:41.092 --> 00:08:41.852
他也认得出

00:08:41.852 --> 00:08:45.412
这就是上边言那个逐针猜的

00:08:45.412 --> 00:08:45.992
用的模型

00:08:45.992 --> 00:08:47.452
逐针猜嘛

00:08:47.452 --> 00:08:48.612
对吧

00:08:48.612 --> 00:08:49.572
他要逐针猜

00:08:49.572 --> 00:08:50.852
比如说你说

00:08:50.852 --> 00:08:52.372
我要去打乒乓

00:08:52.372 --> 00:08:53.792
他会猜出乒乓球

00:08:53.792 --> 00:08:56.872
乒乓球球拍 乒乓球桌 乒乓球技术

00:08:57.632 --> 00:08:58.652
这属于这个

00:08:59.932 --> 00:09:01.732
我们说这个ASR用的对应的

00:09:01.992 --> 00:09:03.512
背后用的这种声学模型

00:09:03.772 --> 00:09:04.032
对吧

00:09:04.552 --> 00:09:05.832
或者说这个语言模型

00:09:06.332 --> 00:09:08.132
它就具备了这个能力了

00:09:08.392 --> 00:09:09.152
它也能猜

00:09:09.412 --> 00:09:10.172
能猜你

00:09:10.432 --> 00:09:10.952
说什么

00:09:11.712 --> 00:09:14.532
就像教小孩真智 你不会给他

00:09:14.792 --> 00:09:15.812
讲字形

00:09:16.312 --> 00:09:18.112
学理论 就是反复指的说

00:09:18.372 --> 00:09:19.132
这是礼

00:09:19.912 --> 00:09:20.412
是吧

00:09:20.672 --> 00:09:21.952
礼子多了

00:09:21.952 --> 00:09:24.252
他以后就会见过了字体语言的粗

00:09:24.252 --> 00:09:26.052
模型学的不是规则是见的多

00:09:26.052 --> 00:09:27.072
所以训练时

00:09:27.332 --> 00:09:28.872
见的少的东西

00:09:28.872 --> 00:09:31.432
专业术语人民方言他有容易出错

00:09:31.932 --> 00:09:34.492
这也是供应商为什么提供热词表

00:09:35.012 --> 00:09:36.552
所以说就算你的中文呢

00:09:36.552 --> 00:09:38.852
当然我们用中文的这种

00:09:39.352 --> 00:09:40.392
模型更好对吧

00:09:40.392 --> 00:09:41.672
英文就用英文的模型

00:09:42.432 --> 00:09:42.952
是吧

00:09:43.192 --> 00:09:44.732
你别的语言当然也是

00:09:45.752 --> 00:09:47.032
这个所以说是有区别的

00:09:47.032 --> 00:09:47.552
这么你

00:09:47.812 --> 00:09:49.592
你在你的这个voice in的这个项目的时候

00:09:49.592 --> 00:09:51.652
你在挑选来一家供应商的时候

00:09:51.652 --> 00:09:53.652
那肯定是根据你的业务场景来的

00:09:53.652 --> 00:09:55.492
你是什么语言为主

00:09:55.492 --> 00:09:57.112
比如说你是粤语的

00:09:57.112 --> 00:10:01.672
那当然你要考虑他这个模型对粤语的识别的怎么样

00:10:01.672 --> 00:10:03.012
识别好你才用它

00:10:03.012 --> 00:10:05.572
而不是说随便拿一个provider

00:10:05.572 --> 00:10:06.912
就行不行了

00:10:06.912 --> 00:10:09.652
然后我们理解了原理之后

00:10:09.652 --> 00:10:14.772
你对去挑选你的ASR的对应的服务

00:10:14.772 --> 00:10:16.292
甚至你在做本地的

00:10:16.292 --> 00:10:18.012
比如我们有欧拉玛去接本地的模型

00:10:18.012 --> 00:10:19.152
你挑哪个模型

00:10:19.152 --> 00:10:20.732
那都是有帮助的

00:10:20.732 --> 00:10:24.232
好那么关于语音识别的原理的

00:10:24.232 --> 00:10:26.192
这个分享了

00:10:26.192 --> 00:10:27.932
我们就讲到这里

00:10:27.932 --> 00:10:28.732
谢谢大家观看
