用HTK搭建语音识别器实录(TIDigits数据库)

Kaldi学习笔记:跑tidigits样例 1、语料库----TIDIGITS(LDC93S10) 这个语料库分为Adults和Chidlren两部分 里面均有TIDIGITS子目录 TIDIGITS子目录中有TEST和TRAIN数据 TEST和TRAIN目录下分别有按照性别和说话人分类的WAV文件,是我们需要的训练和测试数据。接下来要使用Kaldi下egs中的tidigits样例来处理这些数据。 阅读详情

TIDIGITS数据库包含11个孤立数字,分别为one,two,three,four ,five,six,seven,eight,nine,oh,zero.

1.数据准备

1.1.1 建立任务语法

它的任务语法如下:

$digit= ( one | two | three | four | five |six | seven | eight | nine | zero | oh );

([sil] <$digit sp> [sil])

将上面内容保存为digit.gram文件

注:|竖线表示可选择。尖括号<>表示一次和多次重复,[]中括号表示:可选择

HTK识别器需要一个用Standard Lattice Format (SLF)建立的词的网络。该网络描述词与词之间的转移。该词的网络可以用Hparse命令进行创建。

Hparsedigit.gram digit.net

其中digit.gram为任务语法,digit.net为生成的词网络。

digit.gram为手工编辑。

1.1.2 建立词典

建立词典之前需要一个词列表,对于简单的任务,可以用用手工的方法建立所需的词列表。这里用手工的方法制作。如下:保存为digitlist文件

one

two

three

four

five

six

seven

eight

nine

zero

oh

sil

sp

注:创建字典之前,需要创建一个词的列表文件,在本实验中,可以很方便的用手工制作这样一个文件。如果任务非常复杂的识别,需要从训练数据的句子中生成词的列表。可以从句子集sentence prompts中建立词列表 word list。

这里以词作为HMM模型,所以发音模型为整词。对于连续语音识别要用音素。

beep文件用手工编写,如下:

eight eight

five five

four four

nine nine

oh oh

one one

seven seven

sil sil

six six

sp sp

three three

two two

zero zero

我在实现的过程中出现错误:

主要原因是beep中的词不是按字母顺序排列,一定要按字母顺序排列,要不然出错。

有了词列表和发音表,就可以生成词典了。用HDMan建立词典。

HDMan -m -w wlist -n monophones1 -l dlog dict beep names

上面命令通过查找词典beep,names,生成wlist每个词的发音,创建了一个名为dict的字典。

Wlist为在任务语法中词的列表。names是手工建的一个文件,包括上面任务语法当中某些名字的发音。可以不用,当beep中的发音不全,即不包含任务语法中所有词的发音,可以手工某些发音。下图为区别,没有names的时候有三个词丢失,找不到发音。

-l选项是是告诉HDman命令生成一个日志文件dlog,它包括生成词典过程中的一些统计数据。HDMan命令还可以生成该过程中用到的发音列表,名为:monophones1,当训练数据和测试数据录好后,就要为monophones1列表的每个音素建立HMM模型。

生成的字典dict.txt内容格式如下:

WORD [outsym] p1 p2 p3 ....

代表的含义:which means that the word WORD is pronounced as the sequence of phones p1 p2 p3 ....

方括号中的词表示识别后输出的结果。如果为空,则输出WORD

当 WORD []时,输出为空。

本实验的词列表为:wlist为词列表。词对应的发音为:beep,生成用到的发音词典。monophones1,这里monophones1与wlist的内容相同,原因是用音节作为模型。后面要为monophones1中对应的发音列表建立模型。

具体命令如下:HDMan -m -w wlist/digitlist –n monophones –l dlog dict/digit.dict

beep

生成文件:digit.dict 其中包含wlist中对应词的发音

monophones 其中包含所有词用到的发音列表,等会要对该文件中的所有列表建立HMM模型。

提供的文件:wlist,词列表。由词网络digit.net生成。 beep发音词典库。

生成的字典digit.dict内容格式如下:

WORD [outsym] p1 p2 p3 ....

代表的含义:which means that the word WORD is pronounced as the sequence of phones p1 p2 p3 ....

方括号中的词表示识别后输出的结果。如果为空,则输出WORD

当 WORD []时,输出为空。

本实验中digit.dict的内容如下:

eight eight

five five

four four

nine nine

oh oh

one one

seven seven

sil sil

six six

sp sp

three three

two two

zero zero

1.1.3 建立特征提取列表文件Wav2Scp

如下格式:

data\train\wav\MAN\AE\1A_endpt.wav data\train\feature\MAN\AE\1A_endpt.mfc

data\train\wav\MAN\AE\1B_endpt.wav data\train\feature\MAN\AE\1B_endpt.mfc

data\train\wav\MAN\AE\2A_endpt.wav data\train\feature\MAN\AE\2A_endpt.mfc

data\train\wav\MAN\AE\2B_endpt.wav data\train\feature\MAN\AE\2B_endpt.mfc

data\train\wav\MAN\AE\3A_endpt.wav data\train\feature\MAN\AE\3A_endpt.mfc

data\train\wav\MAN\AE\3B_endpt.wav data\train\feature\MAN\AE\3B_endpt.mfc

1.1.4 .建立训练数据的标注文件trainwords.mlf

如下

#!MLF!#

"data\train\feature\MAN\AE\1A_endpt.lab"

one

.

"data\train\feature\MAN\AE\1B_endpt.lab"

one

.

然后将trainwords.mlf转换成音素级别的mlf

命令如下:

HLEd -l '*' -d dict/dict.txt -i lists/phones0.mlf edfiles/mkphones0.led lists/trainwords.mlf

其中-l是为了设置路径,dict为词典,-n命令输出所用到的音素.保存在扩展名位mnl的文件名中。phones0.mlf为生成的音素级的MLF文件。mkphones0.led为一些命令,内容如下:

EX //用dict词典中的发音替换word.mlf文件中每个词

IS sil sil // IS命令是在每个句子前面和后面加上一个静音sil模型

DE sp// DE命令删除发音词典标签中所有的sp,因为在音素级的标记文件不需要这些标记

本实验为孤立词识别,不需要上面过程。

1.1.5.提取语音特征参数

用HCopy命令。

提取参数配置文件:

# Coding parameters

TARGETKIND = MFCC_0

TARGETRATE = 100000.0

SAVECOMPRESSED = T //以压缩的方式存储,并且增加循环冗余检查

SAVEWITHCRC = T

WINDOWSIZE = 250000.0//窗口长度:25ms

USEHAMMING = T //使用汉明窗

PREEMCOEF = 0.97

NUMCHANS = 26 //三角滤波器个数

CEPLIFTER = 22

NUMCEPS = 12

ENORMALISE = F //能量是否归一化

提取特征参数的命令如下:

HCopy -T 1 -C config -S codetr.scp

2.训练过程

a.建立HMM模型原型,如下

~o <VecSize> 13 <MFCC_E> <StreamInfo> 1 13

<BeginHMM>

<NUMSTATES> 5

<STATE> 2<NUMMIXES> 1

<STREAM> 1

<MIXTURE> 1 1.000000e+000

<MEAN> 13

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

<VARIANCE> 13

1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

<STATE> 3<NUMMIXES> 1

<STREAM> 1

<MIXTURE> 1 1.000000e+000

<MEAN> 13

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

<VARIANCE> 13

1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

<STATE> 4<NUMMIXES> 1

<STREAM> 1

<MIXTURE> 1 1.000000e+000

<MEAN> 13

0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

<VARIANCE> 13

1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0

<TRANSP> 5

0.000000e+000 1.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000

0.000000e+000 6.000000e-001 4.000000e-001 0.000000e+000 0.000000e+000

0.000000e+000 0.000000e+000 6.000000e-001 4.000000e-001 0.000000e+000

0.000000e+000 0.000000e+000 0.000000e+000 6.000000e-001 4.000000e-001

0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000 0.000000e+000

<ENDHMM>

然后用HCompV工具扫描所有的训练数据,计算全局均值和方差,让每个HMM模型中的高斯函数有相同的均值和方差。

假设训练数据列表存在trainFea.scp

如下命令可以为每个HMM模型赋相同的均值和方差:

HCompV -C config -f 0.01 –o hcompv.hmm train.scp -M hmms/hmm0

hmms/template.hmm

其中config为提取特征时用到的配置文件。 Train.scp为所有训练数据集列表.mfc,-m计算均值和方差, -M hmms/hmm0初始化后模型存放的文件夹,hmms/template.hmm为HMM模型原型。

-f输出0.01乘以全局方差矩阵。它是方差的一个最低限,保存在文件vFloors中,在后面的训练要用。

从生成的hcompv.hmm可以看出:它们的转移概率没变。每个高斯函数的均值和方差都变了,它们是通过MLE (maximum likelihood estimate)算法从训练样本中得到的。

b.拷贝Hcompv.hmm文件的内容,为每个音素模型建立hmm模型。所有的模型保存在一个文件中。Macro.init,这样做的目的是防止太多的HMM模型定义文件,把它们放在一个文件中更方便。

Macro.inti包括11音素的HMM模型参数(sil、ling、i、er、san、si、wu、liou、qi、ba、jiou) acoustic models

该过程可以通过手工完成,包括sil模型参数

c.用mxup.led修改macro.init模型生成macro.0文件,增加高斯分量。

先拷贝hmms\hmm1\macro.init 到hmms\hmm1\macro.0

然后用 HHED命令修改macro.0

HHED为HMM模型编辑工具,工作模式如同HLED

mxup.led

MU 3 {*.state[2-4].mix}

该命令表示为第二到第四个状态增加高斯分量,从开始的1个增加到3个。

macro.0 各个状态的三个分量的方差相同,但是均值不同.

d.重新估计macro.0中各模型的参数.生成macro.1 ~ macro.5

用HERest命令进行嵌入式重估

HERest -C config -I phones0.mlf -t 250.0 150.0 1000.0 \

-S train.scp -H hmm0/macros -H hmm0/hmmdefs -M hmm1 monophones0

说明:加载hmm0/hmmdefs中在monophones0列出的所有HMM模型,然后用train.scp列出的数据训练模型,训练好的模型保存在hmm1目录下。

Macros为全局宏命令,其中包括~o <MFCC_0_D_A> <VecSize> 39

和vFloors和每运行一次HERest命令进行重估一次。要进行多次训练的时候要不断改变—H和—M后的值

3.识别过程以及分析

HVite -H maro.HMM -l * -i result_train.mlf -w networks\\digit.net -S Trainfea.scp dict\\digit.dict monophones

dos('findstr /v "sp" result_train.mlf > result_train_no_sp.mlf');

dos('findstr /v "sil" result_train_no_sp.mlf > result_train_no_sp_sil.mlf');

dos('HResults -p -e ??? sil-I phones0.mlf dict/digit.dict result_train_no_sp_sil.mlf > insideTest.txt');

type insideTest.txt

contents=fileread('insideTest.txt');

keyStr='WORD: %Corr=';

startIndex=strfind(contents, keyStr)+length(keyStr);

inRR=eval(contents(startIndex:startIndex+4));

fprintf('训练数据的识别率为:%g%%\n', inRR);

完成所有的步骤之后,我的文件夹如下:

 

 

 

Python建立简易语音识别系统 将AI课上学习的知识进行简单的整理,可以识别简单的0-9的单个语音。基本方法就是利用库函数提取mfcc,然后计算误差矩阵,再利用动态规划计算累积矩阵。并且限制了匹配路径的范围。具体的技术网上很多,不再细谈。现有缺点就是输入的语音长度都是1s,如果不固定长度则识别效果变差。改进思路是提取有效语音部分。但是该部分尚未完全做好,只写了一个原形函数,尚未完善。 import wave import num 阅读详情

相关推荐

digits:数字数据库

概述 一个提供电话号码模型数据库的 Play 应用程序。 安装 下载并解压 .zip 文件 目录中的“cd” 调用 Play 控制台 执行“运行”命令 在查看应用程序 用法 还没有使用,只是一个模型。 学分 感谢 ICS 314,2013 年秋季的支持。

TIDIGITS数据集介绍,官网编号LDC93S10

对于TIDIGITS数据集中的语音识别任务,HTK(Hidden Markov Model Toolkit)是一个常用的工具包。HTK识别器需要一个用Standard Lattice Format (SLF)建立的词的网络,该网络描述了词与词之间的转移。可以使用Hparse命令来创建这个词的网络,而。TIDIGITS数据集主要包含11个孤立数字,分别为one、two、three、four、five、six、seven、eight、nine、oh和zero。在数据准备阶段,需要建立任务语法,例如使用类似。

ldcdata的博客 797

digit语音库

数字语音库 英文 可作数字语音分析语料 wav文件 分为训练和测试部分

Aurora2 语音数据库的建立

Aurora2 语音数据库 经常在学术上被用来作为评测数据库,很多语音识别的base数据库,HTK的训练模型数据库,VAD,基频检测都用Aurora2语音数据库。 Aurora2语音数据库的具体情况可以参考 http://aurora.hsnr.de/aurora-2.html,大致含义是 这个数据库是由 TIDigits 数据库 变换过来的,说白了就是 降采样之后...

book_bbyuan的博客 2597

digits.zip

利用k-近邻算法实现手写数字的识别,两个文件夹一个是训练的,一个是测试的,两个文件夹数据不重合,而且都是32*32的

ICDAR2013数据集 下载

ICDAR数据集,完整下载 包括end-to-end/text localization/text segmentation/word recognition

使用sklearn设计“最优的”手写数字体digits数据集和鸢尾花数据集的分类器

通过不同分类器类型选择、优化方法、激活函数,设计一个“最优的”手写数字体digits数据集和鸢尾花数据集的分类器

qq_48068259的博客 548

BL0910-从零到一:多路交/直流电能计量的实战配置与校准

本文详细介绍了BL0910芯片在多路交直流电能计量中的实战应用。从硬件连接、SPI通信配置,到软件初始化、核心寄存器设置,再到偏置与增益校准,提供了完整的配置与校准指南。文章重点阐述了直流测量模式的切换要点及数据读取的工程化处理,帮助开发者快速实现高精度、多通道的电能监控方案。

rice5的博客 561

20180528 timit数据集下载地址

可以从下面链接下载timit数据集的一部分,总共应该400多兆,这里只有40多兆,只有一部分也可以。我们可以看看格式。这里只有38个说话人,也就是38个文件夹。 https://download.youkuaiyun.com/download/weixin_41864878/10585377 TIMIT全称The DARPA TIMIT Acoustic-Phonetic Continuous Speech ...

Grace_yan的博客 8577

手把手教你用scRNA-seq和scTCR-seq分析CD8⁺ T细胞在免疫治疗中的动态变化

本文详细介绍了如何整合单细胞RNA测序(scRNA-seq)与单细胞TCR测序(scTCR-seq)技术,深入解析CD8⁺ T细胞在癌症免疫治疗中的动态变化。通过从数据预处理、细胞亚群鉴定到TCR克隆追踪的完整分析流程,揭示了T细胞的功能状态转变与克隆演化规律,为理解免疫应答机制和开发精准治疗策略提供了关键方法学指导。

p8q9r0的博客 566

【游戏开发】初识寻路&navmesh,探索RecastDemo

在手游时代,尤其对于大世界游戏而言,寻路的实现基本在专门的寻路服务器上进行。在众多寻路的解决方案中,recastnavigation是最为经典实用的一个,很多游戏甚至游戏引擎都采用类似的实现。recastnavigation项目自带了RecastDemo,用图形化的界面帮助用户认识寻路网格(navmesh)的生成以及寻路的过程。因此,作为初学者的笔者,也决定通过RecastDemo去初步认识寻路的机理奥秘。 构建RecastDemo 首先克隆recastnavigation项目,从文档中可以看到Recast

HiKariのTechLab 3050

语音识别资料

[1]语音识别-维基百科:http://zh.wikipedia.org/wiki/语音识别 [2]语音合成-百度百科:http://baike.baidu.com/view/549184.htm [3] Microsoft Speech API:http://en.wikipedia.org/wiki/Speech_Application_Programming_Interface#

qqh19910525的博客 596

MATLAB实战:5步搞定铣削稳定性叶瓣图(附完整代码解析)

本文提供了一份基于MATLAB的铣削稳定性叶瓣图实战指南。通过5个清晰步骤,从动力学原理出发,详细解析了利用半离散法构建稳定性判据、模块化代码设计、高效参数扫描及高级可视化的完整流程,并附有完整代码,帮助工程师快速预测和规避加工颤振,优化铣削工艺参数。

weixin_29197051的博客 194

HTK搭建大词汇量连续语音识别系统(一)

使用HTK搭建大词汇量语音识别系统,采用的是timit语音库,由于timit语音库的文本语料全是小写,为了与HTKbook中的例子一致,我用python对所有单词和句子都转换成了大写。 一、建立任务语法,建立gram        由于timit语音库自带文件中没有HTK能直接使用的任务语法,故我将timit中的发音文件timitdic.txt使用python转换成了任务语法。Python脚本

cdj0311的专栏 8950

MATLAB信号处理实战:VMD分解参数调优全指南(附避坑技巧)

本文深入探讨了MATLAB中变分模态分解(VMD)的核心参数调优实战技巧。针对模态数K和惩罚系数α的选择难题,提供了从经验估计、可视化观察到量化指标辅助的渐进式调优框架,并分享了避免过分解与欠分解的实用避坑指南,旨在帮助工程师高效处理非平稳信号,提取清晰的物理特征。

weixin_29079671的博客 144

从零开始:在CentOS服务器上部署R Shiny应用的完整指南

本文提供了一份在CentOS服务器上部署R Shiny应用的完整实战指南。内容涵盖从创建专用用户、安装R语言环境、配置Shiny Server,到最终部署应用并配置防火墙的全过程。针对部署过程中常见的权限、端口及依赖问题,给出了详细的解决方案,旨在帮助数据分析师和开发者将本地Shiny应用稳定、安全地发布至生产环境。

weixin_29079743的博客 135

常用音频数据库记录

记录一下常用的数据库。 TIMIT也忘记当时从哪下的了,网上也没看到好一点的链接。TIMIT全称The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus, 是由德州仪器(TI)、麻省理工学院(MIT)和坦福研究院(SRI)合作构建的声学-音素连续语音语料库。TIMIT数据集的语音采样频率为16kHz,一共包含6300个句子,由来自美...

weixin_33834628的博客 2073

Rockchip RK3568实战:手把手教你调试I2S音频驱动(附ALSA设备树配置详解)

本文提供Rockchip RK3568平台I2S音频驱动的实战调试指南。详细解析了从硬件连接到软件配置的全过程,重点涵盖ALSA驱动框架下的设备树配置、时钟计算、DMA参数设置以及常见问题(如无声、爆音)的排查与解决方法,帮助开发者快速定位并解决音频驱动难题。

weixin_28358083的博客 495

HTK工具搭建识别器的总体框架

老早之前就学习了HTK工具,并用于搭建连续语音识别器,但是好久没有用对于一些东西又忘记了,现在由于做实验需要用到HTK,又重新看了一遍,所以把一些大致的东西记录下来,以后可以直接看这个。感觉用HTK搭建识别器,学习一门脚本语言非常重要,如Perl,和Shell.......... Hinit:用于对HMM模型的参数进行初始化。 HRest: 用Baum-Welch算法对HMM参数进行估计,可以

xiaoding133的专栏【Stay hungry,Stay foolish】 1万+

从开票数据到 ML81N 一键过账:用 ABAP BAPI 批量创建 Service Entry Sheet 的落地方案

摘要:SAP ESM场景中,服务履约确认通常通过ML81N事务码创建服务条目表(SES)完成。本文介绍如何基于开票数据(VBRK/VBRP)自动生成SES:首先通过BAPI_PO_GETDETAIL获取采购订单服务行结构,然后使用BAPI_ENTRYSHEET_CREATE创建SES并覆盖开票数量与金额,最后调用BAPI_ENTRYSHEET_RELEASE自动释放。解决方案包含ALV交互界面、批量处理逻辑和结果跳转功能,实现从人工录入到自动化处理的转变。(149字)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 324

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

语音增强——DNN(深度神经网络)频谱映射

语音增强——DNN(深度神经网络)频谱映射

qq_42233059的博客 1893

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

语音识别数据集

数据集采用了目前我能找到的所有中文免费数据,包括:thchs-30、aishell、primewords、st-cmd四个数据集,训练集总计大约450个小时,在之前实验过程中,使用thchs-30+aishell+st-cmd数据集对DFCNN声学模型进行训练,以64batch_size训练。 包括stc、primewords、Aishell、thchs30四个数据集,共计约430小时, 相关链接...

sinat_29242905的博客 9498

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

常用语音数据库

大多数语音识别数据集是专有的,因为这些数据对于创建该数据集的公司来说具有很大价值。因此,这部分的可用公开数据集多数比较陈旧。 【学术、陈旧】2000 HUB5 English:仅包含英语的语音数据集,百度最近的论文《深度语音:扩展端对端语音识别》使用的是这个数据集。   地址:https://catalog.ldc.upenn.edu/LDC2002T43   【学术】LibriSpeech...

cg_speech的博客 1万+
上一篇: HTK工具搭建识别器的总体框架
下一篇: 修改HTK代码,让其支持中文
xiaoding133
博客等级 码龄19年 415粉丝 159原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值