语音识别笔记(6)-解码器和WFST
解码任务
给定声学观测O=o1,o2,…,oTO = o_1, o_2, … , o_TO=o1,o2,…,oT,找到最可能的词序列W=w1,w2,…,wNW = w_1, w_2, … , w_NW=w1,w2,…,wN,这一过程称为解码,即把观测到的声音信号,转换为对应的文字的过程。
解码公式
W^=argmaxwP(W∣O)=argmaxwP(O∣W)∗P(W)\hat { W }=\underset{w}{\arg \max } P\left(W | O \right) \\
= \underset{w}{\arg \max } P\left(O | W \right) * P\left(W\right)
W^=wargmaxP(W∣O)=wargmaxP(O∣W)∗P(W)
式中,W^\hat { W }W^是解码的结果,$ P\left(O | W \right)使用声学模型来刻画,使用声学模型来刻画,使用声学模型来刻画,P\left(W\right)$使用语言模型来刻画。
维特比算法根据观测的声学特征,确定概率最大的HMM状态序列,有了状态序列,就 ...
语音识别笔记(5)-语言模型LM
统计语言模型
一个统计语言模型包含一个有限集合V,和一个函数p(x1,x2,...xn)p(x_1,x_2,...x_n)p(x1,x2,...xn),满足:
对于任意(x1,x2,...xn)∈v+(x_1,x_2,...x_n)\in v^+(x1,x2,...xn)∈v+,有p(x1,x2,...xn)≥0p(x_1,x_2,...x_n) \ge 0p(x1,x2,...xn)≥0
所有词序列的概率之和为1
∑(x1,…,xn,⟩∈v+p(x1,x2,…,xn)=1\sum_{\left( x_{1}, \ldots, x_{n}, \right\rangle \in v^{+}} p\left(x_{1}, x_{2}, \ldots, x_{n}\right)=1
(x1,…,xn,⟩∈v+∑p(x1,x2,…,xn)=1
统计语言模型是所有词序列上的一个概率分布
计算方法
统计语言模型概率的计算方法:
P(S)=P(x1=w1,…xn=wn)=P(w1n)=P(w1)P(w2∣w1)P(w3∣w12)…P(wn∣w1n−1)=∏k=1n ...
语音识别笔记(4)-GMM-HMM模型
框架
基于GMM-HMM模型的语音识别的框架如下图所示:
在数据准备阶段,需要获得的数据包括:音频、文本,以及词典、音素集、问题集等
在特征提取阶段,根据前文所述的方法,对原始音频数据进行分帧等操作,提取MFCC特征
在单音素GMM-HMM建模阶段,使用单音素作为基本的识别单元,进行模型训练
在三音素GMM-HMM建模阶段,使用三音素作为基本的识别单元,进行模型训练
在解码阶段,根据训练得到的模型参数,从wav推出txt
几种模型
根据识别单元的不同,可将GMM-HMM模型划分为几种类型
基于孤立词的GMM-HMM
目标
为词表中的每个词建立一个GMM-HMM模型,对于待识别音频,找出使该观测值概率最大的模型,识别结果就是该模型对应的单词。用公式表示如下:
answer =argmaxw∈ vocab Pw(Xtest )\text { answer }=\underset{w \in \text { vocab }}{\arg \max } P_{w}\left(\boldsymbol{X}_{\text {test }}\right)
answer =w∈ vocab ...
语音识别笔记(3)-隐马尔可夫模型(HMM)
基本概念
定义
隐马尔可夫模型是关于时间序列的概率模型
由隐藏的马尔可夫链生成不可观测的隐藏状态序列,再由每个状态生成一个观测而产生观测序列的过程。
组成
符号
含义
Q={q1,q2,...qN}Q=\{q_1, q_2, ... q_N\}Q={q1,q2,...qN}
状态的集合(共N个)
V={v1,v2,...vM}V=\{v_1, v_2, ... v_M\}V={v1,v2,...vM}
观测的集合(共M个)
I={i1,i2,...iT}I=\{i_1, i_2, ... i_T\}I={i1,i2,...iT}
长度为T的状态序列
O={o1,o2,...oT}O=\{o_1, o_2, ... o_T\}O={o1,o2,...oT}
长度为T的观测序列
A=[aij]N∗NA = [a_{ij}]_{N*N}A=[aij]N∗N
状态转移概率矩阵,其中,$a_{ij} = P(i_{t+1} = q_j
B=[bj(ot)]N∗MB = [b_{j}(o_t)]_{N*M}B=[bj(ot)]N ...
Butterfly主题美化
2021.11.30 增加algolia全局搜索 https://www.algolia.com/
2021.11.23 样式美化 https://butterfly.lete114.top/article/Butterfly-config.html
2021.11.22 字体美化 https://www.trann.cn/2020/07/31/font/
2021.11.18 新增说说发布系统bber 魔改后绑定个人微信公众号 部署在Vercel上 https://immmmm.com/bb-by-wechat-pro https://github.com/lmm214/bber-weixin https://github.com/lmm214/bber https://gitlab.com/yuto_zh/bber_vercel
2021.11.17 新增评论系统 Twikoo 部署在Vercel上 https://twikoo.js.org/quick-start.html
2021.11.15 新增博客文章统计图 Echarts图表 https://blog.eurko ...
语音识别笔记(2)-GMM模型和EM算法
GMM模型
高斯分布
高斯分布也称为正态分布,是在自然界中广泛存在的一种分布。根据中心极限定理,大量相互独立随机变量的均值依分布收敛于正态分布。因此使用正态分布描述语音特征的概率分布是合适的。
D维随机变量的高斯分布的概率密度函数为:
N(x∣μ,Σ)=1(2π)D/21∣Σ∣1/2exp(−12(x−μ)TΣ−1(x−μ))\mathcal{N}(\boldsymbol{x}|\boldsymbol{\mu},\boldsymbol{\Sigma}) = \frac{1}{(2\pi)^{D/2}} \frac{1}{\left|\boldsymbol{\Sigma}\right| ^{1/2}} \exp(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^T\Sigma^{-1}(\boldsymbol{x}-\boldsymbol{\mu}))
N(x∣μ,Σ)=(2π)D/21∣Σ∣1/21exp(−21(x−μ)TΣ−1(x−μ))
其中,μ\muμ是D维向量,表示该高斯分布的均值;Σ\SigmaΣ是D*D的矩阵,表示该高斯分 ...
语音识别笔记(1)-语音信号处理与特征提取
基础知识
音频信号
音频信号是本质上是一种波,是空气等介质受挤压振动而产生的。和其他类型的波一样,声波也可以使用振动曲线图进行表示,横坐标是时间,纵坐标是振幅。
采样
音频型号是连续的,但是计算机只能处理离散的数据,因此需要对其进行采样。
用sin(ωt)=sin(2πf0t)sin(ωt)=sin(2πf_0t)sin(ωt)=sin(2πf0t)表示一个正弦波的振动幅度变化,设采样间隔为tst_sts,则离散信号可表示为:
x(n)=sin(2πf0nts)x(n) = sin(2πf_0nt_s)x(n)=sin(2πf0nts)
其中,n=0,1,2…表示采样点序号
奈奎斯特采样定律
采样频率大于信号中最大频率的两倍,才能恢复原始信号:
fs>2∗fmaxf_s > 2 * f_{max}
fs>2∗fmax
即一个周期内至少有两个采样点
离散傅里叶变换
将时域信号转换到频率域
定义
给定一个长度为N的时域离散信号x(n), 对应的离散频域序列X(m)
X(m)=∑n=0N−1x(n)e−j2πnm/N,m=0,1,2,...N−1X(m) = \ ...
Geomesa-索引
在之前的文章中,已经对Geomesa的基本功能和基本查询与写入操作做了介绍。我们了解到Geomesa是一个分布式地理大数据存储框架,它通过与许多分布式数据库整合,并提供标准化的接口,使得用户能方便、高效地在这些分布式数据库中查询、检索、处理时空大数据。在使用时,我们只需调用Geomesa提供的接口,而无需关心数据在底层数据库中的存储方式。但是,理解Geomesa数据存储方式,特别是其建立索引的方式,对我们更好的设计数据表结构,从而获得更高效的性能是很有帮助的。
Geomesa索引类别
GeoMesa提供多种索引以满足不同类型数据的检索需要:
Z2与Z3索引
Z2与Z3索引分别使用二维和三维的Z曲线进行时空索引。Z曲线是一种空间填充曲线,可以将高维的空间用一维的折线表示。下图展示了二维和三维Z曲线的示意图:
Geohash是Z曲线的一种实现,它的原理简单来说就是将经纬度划分并用二进制表示,经度和纬度的二进制交错合并,形成每一个区块的编号,将这些区块的中心按编号从小到大连接起来,就形成了Z曲线,而这些编号,就是各个区块的Geohash编码。
三维的Z曲线也类似,只不过Geomesa将 ...
使用python-matplotlib绘制混淆矩阵
使用python matplotlib绘制混淆矩阵
今天使用了python matplotlib包,绘制混淆矩阵。基本代码参考官网教程,在此基础上增加了格网显示。
代码说明:
cm - 混淆矩阵的数值, 是一个二维numpy数组
classes - 各个类别的标签(label)
title - 图片标题
cmap - 颜色图
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748def plot_Matrix(cm, classes, title=None, cmap=plt.cm.Blues): plt.rc('font',family='Times New Roman',size='8') # 设置字体样式、大小 # 按行进行归一化 cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis] pr ...
机器学习中的常用评价指标汇总
前言
简要介绍精度、精确率、召回率、P-R曲线、F1 值、TPR、FPR、ROC、AUC等指标,还有在生物领域常用的敏感性、特异性指标。
指标计算基础
在分类任务中,各指标的计算基础都来自于对正负样本的分类结果,用混淆矩阵表示为:
机器学习中的评价指标
精度
Accuracy
定义:(TP+TN)/(TP+FN+FP+TN)
即所有分类正确的样本占全部样本的比例
精确率
Precision、查准率
定义:(TP)/(TP+FP)
即预测是正例的结果中,确实是正例的比例
召回率
Recall、查全率
定义:(TP)/(TP+FN)
即所有正例的样本中,被找出的比例
P-R曲线
PRC
定义:根据预测结果将预测样本排序,最有可能为正样本的在前,最不可能的在后,依次将样本预测为正样本,分别计算当前的精确率和召回率,绘制P-R曲线。
F1 值
定义:(2 * P * R)/(P + R)
TPR
真正例率,与召回率相同
定义:(TP)/(TP+FN)
FPR
假正例率
定义:(FP)/(TN+FP)
ROC
受试者工作特征
定义:根据预测结果将预测样本排序,最有 ...




