智能语音
文章平均质量分 85
david_tym
这个作者很懒,什么都没留下…
展开
-
飞桨paddlespeech语音唤醒推理C INT8 定点实现
激活值的分布范围一般都比较广, 这种情况下如果直接使用最大值非饱和量化, 就会把离散点噪声给放大从而影响模型的精度,最好是找到合适的阈值|T|,将|T|/127作为量化scale,把识别率等指标的降幅控制在一个较小的范围内,这就是饱和量化。这个方法用的是饱和量化。发现它不是一个纯定点的实现,即里面有部分是float的,当时觉得里面最关键的权重和激活值都是定点运算了,部分浮点运算可以接受, 我也先做一个非纯定点的实现,把参数个数较少的bias用浮点表示。在函数里根据激活值的量化scale只做激活值的量化。原创 2024-01-31 11:28:19 · 1284 阅读 · 0 评论 -
飞桨paddlespeech语音唤醒推理C定点实现
即算出的浮点的fbank值作为浮点实现模型的输入,将浮点的Fbank值根据定标转换成定点值作为定点实现模型的输入,然后每层的浮点实现和定点实现并行运行。需要说明的是目前完成的是16bit的定点实现,后面会在此基础上做8bit的定点实现。1, 在python下根据paddlepaddle提供的API(named_parameters)得到模型每层的参数(weight & bias),同时看每层的weight和bias的绝对值的最大值,从而确定参数的Q格式,再以这个Q格式对weight 和bias做量化。原创 2023-07-21 07:35:46 · 638 阅读 · 0 评论 -
基于飞桨paddlespeech训练中文唤醒词模型
一边训练模型,一边请更多的人用手机录“你好米雅”的唤醒词音频,还要对这些录好的做7k HZ处的低通滤波处理。整个数据集是由3个子数据集(“你好米雅”数据集,“你好米雅”相似词数据集,AIDATATANG数据集)组成的,前两个是同一出品方且用相同的设备录的。又想试试真实录音的wav的准确率如何,请了几个人在办公室环境下用手机录了“你好米雅”的音频,在得到的模型下去测试,结果让我大失所望,识别率特别低。等做产品时用的数据集是私有的,把找到的方法用到模型训练上,就能出一个性能不错的语音唤醒方案。原创 2023-06-08 07:56:44 · 1617 阅读 · 6 评论 -
将音频格式从flac转到wav的两种方法
将音频格式从flac转到wav的两种方法原创 2023-05-08 08:14:30 · 926 阅读 · 1 评论 -
飞桨paddlespeech语音唤醒推理C浮点实现
paddlespeech kws C deployment原创 2023-04-18 08:09:07 · 975 阅读 · 2 评论 -
飞桨paddlespeech 语音唤醒初探
PaddleSpeech提供了MDTC模型在Hey Snips数据集上的语音唤醒(KWS)的实现。这篇论文是用空洞时间卷积网络(dilated temporal convolution network, DTCN)的方法来做的,曾获the 2020 personalized voice trigger challenge (PVTC2020)的第二名,可见这个方案是比较优秀的。想看看到底是怎么做的,于是我对其做了一番初探。原创 2023-03-03 18:37:59 · 2364 阅读 · 6 评论 -
智能语音之远场关键词识别实践(二)
远场关键词识别 前端实践 完整方案原创 2022-12-18 12:55:52 · 794 阅读 · 0 评论 -
智能语音之远场关键词识别实践(一)
语音识别主要分两大类:大词汇量连续语音识别技术(Large Vocabulary Continuous Speech Recognition,LVCSR)和关键词识别(keyword Spotting,KWS)。LVCSR由于对算力要求较高,一般在云端(服务器侧)做,而KWS对算力的要求相对较小,可以在终端上做。我们公司是芯片设计公司,主要设计终端上的芯片,想要在语音识别上做点事情,最可能的是做KWS,于是我们就选择KWS来实践语音识别。按距离远近,语音识别可分为近场识别和远场识别,远场的应用场景更丰富些,原创 2022-03-03 08:18:10 · 2044 阅读 · 0 评论 -
基于混合模型的语音降噪效果提升
上篇文章(基于混合模型的语音降噪实践)实践了基于混合模型的算法来做语音降噪,有了一定的降噪效果。本篇说说怎么样来提升降噪效果。算法里会算每个音素的高斯模型参数,也会建一个音素分类的神经网络模型。这些都是依赖于音素对齐的,音素对齐做的越好,每个音素的高斯模型越准确,音素分类模型越收敛准确率越高,从而算法的降噪效果越好。先前做音素对齐用的是开源工具speech-aligner,怎么样让音素对齐做的更好呢?自己做不太现实(不仅周期长,而且相关专业知识积累有限),还得依赖专业工具。调研下来MFA(Montr原创 2021-07-19 08:01:54 · 581 阅读 · 3 评论 -
深度学习中神经网络模型的量化
1,什么是量化2,为什么要量化3,神经网络模型的量化神经网络模型在训练时都是浮点运算的,得到的模型参数也是浮点的。通常模型参数较多,在inference时也有非常多的乘累加运算。如果处理器的算力有限,在inference时用浮点运算将导致CPU load很高,极大影响性能。而且通常一个参数用浮点数表示占四个字节,而如果用8比特量化的话,一个参数只占一个字节,memory得到了极大的节约,在memory紧张的处理器上尤为重要。所以通常都要对神经网络模型进行量化,来降低CPU load和..原创 2021-02-21 21:03:10 · 1798 阅读 · 1 评论 -
嵌入式设备上卷积神经网络推理时memory的优化
以前的神经网络几乎都是部署在云端(服务器上),设备端采集到数据通过网络发送给服务器做inference(推理),结果再通过网络返回给设备端。如今越来越多的神经网络部署在嵌入式设备端上,即inference在设备端上做。嵌入式设备的特点是算力不强、memory小。可以通过对神经网络做量化来降load和省memory,但有时可能memory还吃紧,就需要对神经网络在memory使用上做进一步优化。本文就以一维卷积神经网络为例谈谈怎么来进一步优化卷积神经网络使用的memory。文章(卷积神经网络中一维卷.原创 2021-02-06 21:18:23 · 905 阅读 · 0 评论 -
智能语音卷积神经网络中一维卷积的处理
卷积神经网络(CNN)是深度学习中常用的网络架构,在智能语音中也不例外,比如语音识别。语音中是按帧来处理的,每一帧处理完就得到了相对应的特征向量,常用的特征向量有MFCC等,通常处理完一帧得到的是一个39维的MFCC特征向量。假设一段语音有N帧,则处理完这段语音后得到的是一个39行N列(行表示特征维度,列表示帧数)的矩阵,这个矩阵是一个平面,是CNN的输入。应用在图像问题上的CNN通常是二维卷积(因为图像有RGB三个通道),而语音问题上的CNN输入是一个矩阵平面,可以用一维卷积。本文就讲讲一维卷积是怎么处理原创 2021-01-23 20:58:16 · 3335 阅读 · 5 评论 -
深度学习分类问题中accuracy等评价指标的理解
在处理深度学习分类问题时,会用到一些评价指标,如accuracy(准确率)等。刚开始接触时会感觉有点多有点绕,不太好理解。本文写出我的理解,同时以语音唤醒(唤醒词识别)来举例,希望能加深理解这些指标。1,TP / FP / TN / FN下表表示为一个二分类的混淆矩阵(多分类同理,把不属于当前类的都认为是负例),图中的四个参数均用两个字母表示,第一个字母表示判断结果正确与否(正确用T(True),错误用F(False),第二个字母表示判定结果(正例用P(Positive),负例用N(Negat.原创 2021-01-16 21:51:04 · 7973 阅读 · 0 评论 -
我们基于kaldi开发的嵌入式语音识别系统升级成深度学习啦
先前的文章《三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的 》说我们花了不到三个月的时间搭了一个基于kaldi的嵌入式语音识别系统,不过它是基于传统的GMM-HMM的,是给我们练手用的,通过搭这个系统我们累积了一定的语音识别领域的经验,接下来我们就要考虑做什么形态的产品了。语音识别可以分大词汇量连续语音识别(Large Vocabulary Continuous Speec...原创 2019-12-28 21:34:49 · 2455 阅读 · 3 评论 -
kaldi中CD-DNN-HMM网络参数更新公式手写推导
在基于DNN-HMM的语音识别中,DNN的作用跟GMM是一样的,即它是取代GMM的,具体作用是算特征值对每个三音素状态的概率,算出来哪个最大这个特征值就对应哪个状态。只不过以前是用GMM算的,现在用DNN算了。这是典型的多分类问题,所以输出层用的激活函数是softmax,损失函数用的是cross entropy(交叉熵)。不用均方差做损失函数的原因是在分类问题上它是非凸函数,不能保证全局最优解(只...原创 2019-11-03 22:12:54 · 1337 阅读 · 0 评论 -
机器学习中梯度下降法原理及用其解决线性回归问题的C语言实现
本文讲梯度下降(Gradient Descent)前先看看利用梯度下降法进行监督学习(例如分类、回归等)的一般步骤:1, 定义损失函数(Loss Function)2, 信息流forward propagation,直到输出端3, 误差信号back propagation。采用“链式法则”,求损失函数关于参数Θ的梯度4, 利用最优化方法(比如梯度下降法),进行参数更新5, 重复...原创 2019-10-17 18:30:05 · 1254 阅读 · 2 评论 -
语音识别中唤醒技术调研
上篇博客(语音识别传统方法(GMM+HMM+NGRAM)概述)说到我们team要做语音识别相关的项目,而我们公司的芯片是用在终端上的,即我们要做终端上的语音识别。由于目前终端(如手机)上的CPU还不足够强劲,不能让语音识别的各种算法跑在终端上,尤其现在语音识别都是基于深度学习来做了,更加不能跑在终端上,所以目前主流的语音识别方案是声音采集和前处理在终端上做,语音识别算法则放在服务器(即云端)上跑。...原创 2019-05-28 22:30:40 · 2861 阅读 · 1 评论 -
基于WFST的语音识别解码器
学习语音识别有些时间了。老板要求我们基于Kaldi搭一个语音识别系统,在设备上通过MIC讲话,连着设备的PC的console上就能基本实时显示出讲话的内容。由于我们都是小白,刚开始可以要求低些,就用传统的GMM-HMM,能实现孤立词识别就算达标了,后面随着这方面能力的提高,再做更难一点的。任务下达后我根据之前对kaldi的简单理解把模块分成了三部分:数据准备和MFCC、GMM-HMM、解码网络创建...原创 2019-06-23 22:58:00 · 3259 阅读 · 1 评论 -
机器学习中K-means聚类算法原理及C语言实现
本人以前主要focus在传统音频的软件开发,接触到的算法主要是音频信号处理相关的,如各种编解码算法和回声消除算法等。最近切到语音识别上,接触到的算法就变成了各种机器学习算法,如GMM等。K-means作为其中比较简单的一种肯定是要好好掌握的。今天就讲讲K-means的基本原理和代码实现。其中基本原理简述(主要是因为:1,K-means比较简单;2,网上有很多讲K-means基本原理的),重点放在代...原创 2019-07-05 18:46:01 · 2404 阅读 · 1 评论 -
以kaldi中的yesno为例谈谈transition
在基于GMM-HMM的传统语音识别里,比音素(phone)更小的单位是状态(state)。一般每个音素由三个状态组成,特殊的是静音(SIL)由五个状态组成。这里所说的状态就是指HMM里的隐藏的状态,而每帧数据就是指HMM里的观测值。每个状态可以用一个GMM模型表示(这个GMM模型的参数是通过训练得到的)。在识别时把每帧数据对应的特征值放进每个状态的GMM里算概率,概率最大的那个就是这帧对应的状态。...原创 2019-08-09 21:42:03 · 1207 阅读 · 1 评论 -
三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的
前面的博客里说过最近几个月我从传统语音(语音通信)切到了智能语音(语音识别)。刚开始是学语音识别领域的基础知识,学了后把自己学到的写了PPT给组内同学做了presentation(语音识别传统方法(GMM+HMM+NGRAM)概述)。一段时间后老板就布置了具体任务:在我们公司自己的ARM芯片上基于kaldi搭建一个在线语音识别系统,三个人花三个月左右的时间完成。由于我们都是语音识别领域的小白,要求...原创 2019-09-08 21:58:23 · 2542 阅读 · 1 评论 -
语音识别传统方法(GMM+HMM+NGRAM)概述
春节后到现在近两个月了,没有更新博客,主要是因为工作的关注点正从传统语音(语音通信)转向智能语音(语音识别)。部门起了个新项目,要用到语音识别(准备基于Kaldi来做)。我们之前做的传统音频已基本成熟,就开始关注在语音识别上了。对于我们来说,这是个全新的领域(虽然都是语音相关的,但是语音通信偏信号处理,传统语音识别方法偏概率统计),需要学习的知识很多,所以这段时间主要是在学习新知识了,主要学习了数...原创 2019-04-02 19:07:19 · 4929 阅读 · 5 评论