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

2023-11-10 16:10

本文主要是介绍HTK搭建大词汇量连续语音识别系统(二),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

        接着昨天的做。昨天有个没注意的地方需要改过来,timit发音文件每个发音最后不能有sp,否则dict1会有两个sp

六、提取特征参数,生成.mfc文件

       编写配置文件wav_config,内容如下:

 

SOURCEFORMAT=NIST
TARGETKIND=MFCC_0_D_A
TARGETRATE=100000.0
SAVECOMPRESSED=T
USEHAMMING=T
WINDOWSIZE=250000.0
SAVEWITHCRC=T
PREEMCOEF=0.97
NUMCHANS=26
CEPLIFTER=22
NUMCEPS=12


 

使用python编写生成.mfc文件的路径文件codetrain.scp,如下:

data/train/dr1/fcjf0/Untitled/sa1.wav data/train/dr1/fcjf0/Untitled/sa1.mfc
data/train/dr1/fcjf0/Untitled/sa2.wav data/train/dr1/fcjf0/Untitled/sa2.mfc
data/train/dr1/fcjf0/Untitled/si1027.wav data/train/dr1/fcjf0/Untitled/si1027.mfc
data/train/dr1/fcjf0/Untitled/si1657.wav data/train/dr1/fcjf0/Untitled/si1657.mfc
data/train/dr1/fcjf0/Untitled/si648.wav data/train/dr1/fcjf0/Untitled/si648.mfc
data/train/dr1/fcjf0/Untitled/sx127.wav data/train/dr1/fcjf0/Untitled/sx127.mfc
data/train/dr1/fcjf0/Untitled/sx217.wav data/train/dr1/fcjf0/Untitled/sx217.mfc
data/train/dr1/fcjf0/Untitled/sx307.wav data/train/dr1/fcjf0/Untitled/sx307.mfc
data/train/dr1/fcjf0/Untitled/sx37.wav data/train/dr1/fcjf0/Untitled/sx37.mfc


 

执行命令:

HCopy –T 1 –C def/wav_config –S def/codetrain.scp


 

在目录data/train/dr1/fcjf0/Untitled/下就生成了对应的mfc文件

 

七、定义模型,生成文件:hmms/hmm0/protovhmms/hmm0/vFloors

先定义一个一个原始的HMM模型文件proto,放在主目录,不能放在新生成proto的目录,内容如下:

~o <VecSize> 39 <MFCC_0_D_A>

~h "proto"

<BeginHMM>

  <NumStates> 5

  <State> 2

    <Mean> 39

      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

      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

      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> 39

      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

      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

      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

    <Mean> 39

      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

      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

      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> 39

      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

      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

      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

    <Mean> 39

      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

      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

      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> 39

      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

      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

      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.0 1.0 0.0 0.0 0.0

  0.0 0.6 0.4 0.0 0.0

  0.0 0.0 0.6 0.4 0.0

  0.0 0.0 0.0 0.7 0.3

  0.0 0.0 0.0 0.0 0.0

<EndHMM>

然后编写新的配置文件config,内容如下:

#SOURCEFORMAT=NIST
TARGETKIND=MFCC_0_D_A
TARGETRATE=100000.0
SAVECOMPRESSED=T
USEHAMMING=T
WINDOWSIZE=250000.0
SAVEWITHCRC=T
PREEMCOEF=0.97
NUMCHANS=26
CEPLIFTER=22
NUMCEPS=12
ENORMALISE=F


 

这里和wav_config文件唯一的区别是没有了SOURCEFORMAT=NIST这句。

执行命令:

HCompV -C def/config -f 0.01 -m -S def/train.scp -M hmms/hmm0 proto


 

hmms/hmm0中生成新的proto文件和一个vFloors文件

 

新建全局宏文件macros,内容是把vFloors文件复制过来,在头上加:

~o
<VECSIZE> 39 <MFCC_0_D_A>


 

然后在hmm0文件夹中新建主宏文件hmmdefs,内容为把新生成的proto文件内容复制进来,复制data /monophone1data /monophone0,并去掉“sp”,并把~h “proto”替换成data /monophone0文件中的所有音素,并在hmms新建hmm1hmm2hmm3。执行命令进行模型重估:

HERest –A –D –T 1 –C def/config –I labels/phones0.mlf –t 250.0 150.0 1000.0 –S def/train.scp –H hmms/hmm0/macros –H hmms/hmm0/hmmdefs –M hmms/hmm1 data/monophones0 


 

重复执行三次,最终结果有两个文件hmmsdefmacros放在hmm3下,执行界面如下。

八、绑定静音

hmm3中的hmmdefs文件的”sil”模型复制,并改为“sp”,然后把新的hmmdefsmacros一起放在hmm4文件夹中。执行命令:

HHEd –A –D –T  1 –H hmms/hmm3/macros –H hmms/hmm4/hmmdefs –M hmms/hmm5 scripts/sil.hed data/monophones1


 

其中sil.hed内容如下:

 

AT 2 4 0.2 {sil.transP}
AT 4 2 0.2 {sil.transP}
AT 1 3 0.3 {sp.transP}
TI silst  {sil.state[3],sp.state[2]}


 

执行界面如下:

使用HERest重估两次,生成文件存放在hmm7

九、重新校正训练数据

       使用命令:

HVite –A –D –T 1 ‘*’ –o SWT –b SILEN –C def/config –H hmms/hmm7/macros –H hmms/hmm7/hmmdefs –I aligned.mlf –m –t 250.0 150.0 1000.0 –y lab –a –I labels/trainwords.mlf –S def/train.scp dict/dict2 data/monophones1


 

其中dict2SILEN sil加入发音字典dict1后的新发音字典,aligned.mlf是生成的新的音素级标音文件。

然后使用HERest重估两次,放在hmm9中,其中,用aligned.mlf代替phones0.mlf,命令:

HERest –A –D –T 1 –C def/config –I labels/aligned.mlf –t 250.0 150.0 1000.0 –S def/train.scp –H hmms/hmm7/macros –H hmms/hmm7/hmmdefs –M hmms/hmm8 data/monophones1


 

注意:生成的aligned.mlf文件中需要把路径的”’*’”替换成”*”(如果有这个单引号的话),还有就是sp sp不能连一块出现。

 

当然,根据《应用HTK搭建语音拨号系统》提到,到这里就可以进行识别率的测试了。首先需要建立gram任务语法,并生成wdnet任务网络语法,命令不详述了。其次在test目录下生成.mfc文件方法同train下生成.mfc,并制作mfcc路径文件test.scp,使用命令进行测试:

HVite –H hmms/hmm9/macros –H hmms/hmm9/hmmdefs –S test/test.scp  -l * -i results/recout_hmm9.mlf –w dict/wdnet –p 0.0 –s 5.0 dict/dict2 data/monophones1

由于timit数据量较大,生成recout_hmm9.mlf的过程可能会持续两小时左右。

生成的recout_hmm9.mlf格式如下:

#!MLF!#
"*/sa1.rec"
0 5800000 SILEN -4256.611816
5800000 8100000 SHE -1795.725220
8100000 10700000 HAD -2194.983154
10700000 12400000 ADD -1555.612183
12400000 14900000 ARC -2140.485596
14900000 18100000 SOON -2659.971924
18100000 19600000 IN -1301.001099
19600000 21900000 AGREE -2065.449951
21900000 24000000 SEE -1762.183838
24000000 28200000 WASH -3261.522949
28200000 32200000 WATER -3161.133789
32200000 34300000 ALL -1702.356079
34300000 38000000 YOUR -2794.063232
38000000 39500000 SILEN -1017.923950
.
"*/sa2.rec"
0 7900000 SILEN -5215.187500
7900000 9800000 BONE -1653.495239


 

然后执行命令:

HResult -I test/testwords.mlf data/monophones1 test/recout_hmm9.mlf

其中testwords.mlfprompts2mlf脚本得到,命令:

perl scripts/prompts2mlf test/testwords.mlf test/testprompts


 

其中testprompts与trainprompts方法相同,只是不用全路径,格式如下:
sa1  SHE HAD YOUR DARK SUIT IN GREASY WASH WATER ALL YEAR
sa2  DON'T ASK ME TO CARRY AN OILY RAG LIKE THAT
si1573  HIS CAPTAIN WAS THIN AND HAGGARD AND HIS BEAUTIFUL BOOTS WERE WORN AND SHABBY
si2203  THE REASONS FOR THIS DIVE SEEMED FOOLISH NOW
si943  PRODUCTION MAY FALL FAR BELOW EXPECTATIONS
而之前的trainprompts的格式是这样的:
data/train/dr1/fcjf0/Untitled/sa1  SHE HAD YOUR DARK SUIT IN GREASY WASH WATER ALL YEAR
data/train/dr1/fcjf0/Untitled/sa2  DON'T ASK ME TO CARRY AN OILY RAG LIKE THAT
data/train/dr1/fcjf0/Untitled/si1027  EVEN THEN  IF SHE TOOK ONE STEP FORWARD HE COULD CATCH HER
data/train/dr1/fcjf0/Untitled/si1657  OR BORROW SOME MONEY FROM SOMEONE AND GO HOME BY BUS 
data/train/dr1/fcjf0/Untitled/si648  A SAILBOAT MAY HAVE A BONE IN HER TEETH ONE MINUTE AND LIE BECALMED THE NEXT
对比一目了然。
第一次的测评结果如下:

但貌似识别率很低的样子,而且出现了负数,肯定有问题。

 

明天继续。。。

这篇关于HTK搭建大词汇量连续语音识别系统(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/383778

相关文章

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

使用Python实现文本转语音(TTS)并播放音频

《使用Python实现文本转语音(TTS)并播放音频》在开发涉及语音交互或需要语音提示的应用时,文本转语音(TTS)技术是一个非常实用的工具,下面我们来看看如何使用gTTS和playsound库将文本... 目录什么是 gTTS 和 playsound安装依赖库实现步骤 1. 导入库2. 定义文本和语言 3

讯飞webapi语音识别接口调用示例代码(python)

《讯飞webapi语音识别接口调用示例代码(python)》:本文主要介绍如何使用Python3调用讯飞WebAPI语音识别接口,重点解决了在处理语音识别结果时判断是否为最后一帧的问题,通过运行代... 目录前言一、环境二、引入库三、代码实例四、运行结果五、总结前言基于python3 讯飞webAPI语音

使用DeepSeek搭建个人知识库(在笔记本电脑上)

《使用DeepSeek搭建个人知识库(在笔记本电脑上)》本文介绍了如何在笔记本电脑上使用DeepSeek和开源工具搭建个人知识库,通过安装DeepSeek和RAGFlow,并使用CherryStudi... 目录部署环境软件清单安装DeepSeek安装Cherry Studio安装RAGFlow设置知识库总

Linux搭建Mysql主从同步的教程

《Linux搭建Mysql主从同步的教程》:本文主要介绍Linux搭建Mysql主从同步的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux搭建mysql主从同步1.启动mysql服务2.修改Mysql主库配置文件/etc/my.cnf3.重启主库my

国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)

《国内环境搭建私有知识问答库踩坑记录(ollama+deepseek+ragflow)》本文给大家利用deepseek模型搭建私有知识问答库的详细步骤和遇到的问题及解决办法,感兴趣的朋友一起看看吧... 目录1. 第1步大家在安装完ollama后,需要到系统环境变量中添加两个变量2. 第3步 “在cmd中

本地搭建DeepSeek-R1、WebUI的完整过程及访问

《本地搭建DeepSeek-R1、WebUI的完整过程及访问》:本文主要介绍本地搭建DeepSeek-R1、WebUI的完整过程及访问的相关资料,DeepSeek-R1是一个开源的人工智能平台,主... 目录背景       搭建准备基础概念搭建过程访问对话测试总结背景       最近几年,人工智能技术

5分钟获取deepseek api并搭建简易问答应用

《5分钟获取deepseekapi并搭建简易问答应用》本文主要介绍了5分钟获取deepseekapi并搭建简易问答应用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需... 目录1、获取api2、获取base_url和chat_model3、配置模型参数方法一:终端中临时将加