大家好,今天我們給大家講解Voice Agent的這個適時語音識別ASR的一個原理。 我們從頭到尾把它捋一遍,要知道它背後的原理是什麼。當然具體的這個技術實現,肯定是由對應的這個供應商已經實現了。但是我們了解原理的話,對我們理解Voice Agent是有幫助的。 好 那么ASR呢 其实我们一般会说ICTT 就是语音转文字 但是更专业的说法可以说ASR 并且在这个voice agent里面 一定要用 实施语音 实施语音的转换 你整段语音的转文本 对于这个voice agent意义不大 因为你无法做这些 打断了这个处理 好 那么他不是听懂了整句在翻译 而是把音频声音切成一帧帧的逐帧 拆这个什么音再把它串成 这个再串成这个字 是这么来的 然后第一步把声音变成模型能吃的东西 比如说声波到一串数字 每秒采集16000个点 气压变化变成一串整数 第二部分呢 就是切成一帧一帧的 每帧20秒 这么短的时间内 声音特征基本不变 那就是20毫秒 20毫秒切变成一帧 所以我们说之前说了一个40毫秒 其实就是两帧嘛 第三个是每帧算出频谱指纹 不看波形 看频率成分 人耳听的就是这个 其实这个是声学的里面 最基本的原理 这个呢 其实 我们不用过去顺究 我们简单了解就行了 为本要转成平谱了 同一个R 你说和我说 大声说和小声说 波形完全不同 但平谱成分分布是相似的 换成平谱模型 要认的东西就稳定多了 说白就说 你说R 我说R 是吧 那两个声音大小 可能是不同的 波形是不同的 所以用通过波形是不行的 要把它换成平谱 模型才能更好的识别 好 第二步就是升学模型逐针猜 这一针是什么音 比如说你好 对吧 为例 那模型对每一针独立给出一个猜测 他不知道这个字 只知道这一针最像什么 那每一针猜测 比如理 这个是空格 空的空白的 理理理 空白好好好 空白 灰色是空白的符号 意思是这一针没有内容输出 有了它 模型就不用纠结 一个音到底跨几帧 说了长就多图几帧 同样字交给下一步收拾 所以说我们可以看到 可能是这么个情况 这个是每一帧的情况 每一帧 每一帧我们说了20毫秒 第三步就解码 合并重复去掉空白 比如说我们可以看到 有理理理好好好 那肯定是合并成理好就行了 然后再把这些空白的地方 再把它去掉就变成理好 其实就是用户就说了个理好 好好好 你好 那么连续的这个 空白的哈 这段没人说话 所以很多流色ASR 根本不用单独跑一个VED 直接读升学模型空白输出就行 判断依据识别 本身天然一致 那你说白了就是有 你这个针里面有这么多空白的符号 那肯定就是你没说话 对吧 那这个就相当于做了一个VED的判断 就是你没说话 这就是断句原理那张图里第二步的最常见的实验方式之一 空白符嘛 那不就断句了吗 我就认为你没说话 比如说你这里面 如果你这空白的地方 并且时间呢 这个比如说 这个超过300毫秒了 那我们认为 你这句话说完了 这个意思 那么为什么牛市的识别会边缩边改呢 对吧 为什么他会边说边改 比如他听到0.3秒 离 听到0.7秒 离好 听到1.2秒 离好吗 那么在这个时候 他静音不是很久 也就是说 他是低于300毫秒的 其实这句话就没说完 离好这时候也没说完 但是到这个时候 可能后面的静音 已经超过300毫秒了 就final了 就静音够久定稿了 我们来看右边这段话 我们看右边的解释 流失模型只看过去看不到未来 比如像理解的模型whisper 拿到整段音频 可以前后互相印证 牛4必须在 这个前后互相印证是什么意思 就是他有一段完整的音频 他已经把一个逐字稿全部练完了 那你当然知道前后有什么 语言他会把它改掉的 但牛4必须在 我想聊聊乒乓的时候就输出 而后面是球还是球拍 根本没有发生 他也不知道你是聊乒乓球 还是聊乒乓球猪 还是聊乒乓球技术 还是聊乒乓球拍 对吧 那这个牛市的就需要解决这种问题 所以他边拆边改,改的过程呢 就是这个 就是我们前面说的这两段对吧 就是in term 那么确定不了的就是final的 那么前面这一部分他就逐字就是在屏幕上了 是吧 用户才能看到他的听 那我们经常看到这个 比如说你在用豆包的经常就说你 你问他问题干什么 就是他 或者说别的这种 语音的这种工具 你会发现他的字在逐步在出是吧 就是这个意思 他在编出还帮你改 中文尤其是没有词的编辑 同音字扎堆 对吧 他同音字特别多 全靠上下文区分 而上下文恰恰是流是最缺的部分 这也就是中文识别了 既然用阿里云 而不是用deepgram 那么deepgram 他是对英文字是特别好 包括Yenion Live这些 所以你中文的话你还是用阿里云、火山、腾讯 像这些是吧 他肯定中文制作的好一些 好 那我们上面讲了学会之后怎么用 推理 那他是怎么学会的 他为什么能识别呢 为什么他能识别出来了 背后的原理是什么 第一个就是为他配好的 对的数据 训练数据标注预料 有东北画,对吧,天津画 等等,比如说上海画 那你有这么多这个 方言,普通话 等等这些画 你录给他 他去训练这个数据 这个是和其他的 这个模型是一样的,你得有训练数据 让他自己找规律,然后就训练嘛,就推理嘛,这个是为数据嘛,然后这个就是推理 反向 反向传播掉参数 反复对照这几百万条 没有人告诉他 你这个音长什么样 规律是他自己从数据里总结出来的 学出来是两样东西 升线模型 认这一针是什么音 语言模型 同音字里挑哪个更适合上下文 说白了 就你的这个模型 给他的数据越多 训练的越 找的规律越好 对吧 你的参数越多 那当然你的这个识别 可能越准 那么学会了就可以放话 对吧 和推理 那这一段 从没听过的录音 换一个没听过的人来说 他也认得出 这就是上边言那个逐针猜的 用的模型 逐针猜嘛 对吧 他要逐针猜 比如说你说 我要去打乒乓 他会猜出乒乓球 乒乓球球拍 乒乓球桌 乒乓球技术 这属于这个 我们说这个ASR用的对应的 背后用的这种声学模型 对吧 或者说这个语言模型 它就具备了这个能力了 它也能猜 能猜你 说什么 就像教小孩真智 你不会给他 讲字形 学理论 就是反复指的说 这是礼 是吧 礼子多了 他以后就会见过了字体语言的粗 模型学的不是规则是见的多 所以训练时 见的少的东西 专业术语人民方言他有容易出错 这也是供应商为什么提供热词表 所以说就算你的中文呢 当然我们用中文的这种 模型更好对吧 英文就用英文的模型 是吧 你别的语言当然也是 这个所以说是有区别的 这么你 你在你的这个voice in的这个项目的时候 你在挑选来一家供应商的时候 那肯定是根据你的业务场景来的 你是什么语言为主 比如说你是粤语的 那当然你要考虑他这个模型对粤语的识别的怎么样 识别好你才用它 而不是说随便拿一个provider 就行不行了 然后我们理解了原理之后 你对去挑选你的ASR的对应的服务 甚至你在做本地的 比如我们有欧拉玛去接本地的模型 你挑哪个模型 那都是有帮助的 好那么关于语音识别的原理的 这个分享了 我们就讲到这里 谢谢大家观看