HTK 3.5解码工具HVITE独立工程(Visual Studio Code实现)

article/2025/11/6 22:52:19

HTK3.5支持DNN

HTK3.5支持DNN了,本来想做一个HMM+DNN的模型,作为HMM+GMM的对比。但是HTK不支持实时的HMM+DNN解码。原因有两个。

  1. HTK不支持实时的计算MFCC_0_D_A_Z的特征,即无法实时计算出特征空间的均值。
  2. HTK不支持实时的DNN或者HMM+DNN的解码。
    所以只能做离线的演示。为了学习HVITE的细节,我决定将HVITE工具单独编译。

HTK的源文件结构

  1. HTK的源文件分为lib和tool两个层次。lib文件之间可能有相互依赖(dependency),而tool文件之间相互独立。
  2. HTK主要有HTK和HLM两大类工具,前者做语音识别而后者主要是语言模型。
    这次只需要将HTKLib文件夹的所有文件和HTKTools中的HVITE文件提取出来即可。

Visual Studio Code

下面的内容有不详细的地方,可以参考这个链接。
https://code.visualstudio.com/docs/languages/cpp

  1. Visual studio code是一个轻量化,跨平台的调试工具。安装后,需要安装两个插件,分别是C/C++,C++ intellisense。
    在这里插入图片描述
  2. 然后将源文件在workspace中打开
    在这里插入图片描述
  3. 编译需要GCC工具,在编译之前需要配置tasks.json,相当于一个脚本。
    1)打开 Command Palette (Ctrl+Shift+P).
    2)选择 Configure Task command
    3)点击 Create tasks.json file from templates
    4)选择 Others
    5)label是对这个build task的命名,这里为HVITE。
    6)command表示编译指令,我因为使用了makefile,这里只需要写make。
{// See https://go.microsoft.com/fwlink/?LinkId=733558// for the documentation about the tasks.json format"version": "2.0.0","tasks": [{"label": "HVITE","type": "shell","command": "make","group": {"kind": "build","isDefault": true}}]
}
  1. 而调试需要GDB工具,需要选择C++(GDB/LLDB)。选择之后需要配置launch.json.
    1)最左侧的标签选择 Debug,点击Configure icon.
    2)选择C++ (GDB/LLDB),就会弹出launch.json.
    3)需要修改program参数,即为之前设置的名字,这里是"${workspaceFolder}/hvite"。
    4)args指的是HVITE函数所需要输入的参数。
    5)为了能够在调试这前进行编译任务,需要增加一个参数"preLaunchTask": “HVITE”
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(gdb) Launch","type": "cppdbg","request": "launch","program": "${workspaceFolder}/hvite","args" :[ "-A", "-D", "-T", "1", "-I", "reco.mlf", "-y", "lab","-H", "hmm2/hmm_nhxr", "-H", "hmm2/hmm_xxxx","-S", "./alldataset.scp", "-w", "net.slf", "dict.txt","hmmlist.txt"],// "args": ["-f", "-o", "W", "-i", "train.align", "-I", "reco.mlf", //          "-y", "lab", "-H", "./epoch25/models",  "-S", "./alldataset.scp", //          "-w", "net.slf", "dict.txt", "hmmlist.txt"],"stopAtEntry": false,"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,"MIMode": "gdb","setupCommands": [{"description": "Enable pretty-printing for gdb","text": "-enable-pretty-printing","ignoreFailures": true}],"preLaunchTask": "HVITE"}]
}
  1. Makefile
    编译器CC为gcc,LDFLGAS是需要包含的库文件,需要注明-lpthread -lm -lX11,否则会提示缺少头文件。
######################################
#
######################################
#source file
#源文件,自动找所有.c和.cpp文件,并将目标定义为同名.o文件
SOURCE  := $(wildcard src/*.c) $(wildcard src/*.cpp)
OBJS    := $(patsubst %.c,%.o,$(patsubst %.cpp,%.o,$(SOURCE)))
#target you can change test to what you want
#目标文件名,输入任意你想要的执行文件名
TARGET  := hvite
#compile and lib parameter
#编译参数
CC      := gcc
LIBS    :=
LDFLAGS := -lpthread -lm -lX11
DEFINES :=
INCLUDE := -I. -Isrc/ 
CFLAGS := $(CFLAGS) -m64 -ansi -std=gnu99 -D_SVID_SOURCE -DOSS_AUDIO -D'ARCH="x86_64"' -Wall -Wno-switch -g -I. -DPHNALG
#CFLAGS  := -g -Wall -O3 $(DEFINES) $(INCLUDE)
CXXFLAGS:= $(CFLAGS) -DHAVE_CONFIG_H
#i think you should do anything here
#下面的基本上不需要做任何改动了
.PHONY : everything objs clean veryclean rebuildeverything : $(TARGET)all : $(TARGET)objs : $(OBJS)rebuild: veryclean everythingclean :rm -fr src/*.sorm -fr src/*.overyclean : cleanrm -fr $(TARGET)
$(TARGET) : $(OBJS)$(CC) $(CXXFLAGS) -o $@ $(OBJS) $(LDFLAGS) $(LIBS)

把这些都准备好后,就可以单独编译和调试HVTIE,学习解码过程了。


http://chatgpt.dhexx.cn/article/jhmaUakc.shtml

相关文章

全自动解密解码神器 — Ciphey

Ciphey 是一个使用自然语言处理和人工智能的全自动解密/解码/破解工具。 简单地来讲,你只需要输入加密文本,它就能给你返回解密文本。就是这么牛逼。 有了Ciphey,你根本不需要知道你的密文是哪种类型的加密,你只知道它是加密的&…

Linux搭建NTP时间服务器

1. NTP简介 NTP(Network Time Protocol 网络时间协议)是一个用于同步计算机时钟的网络协议。它可以使计算机与其他服务器或时钟源进行时间同步,进行高精度的时间校正。 简而言之,NTP就是使一台或多台服务器(客户端&a…

windows NTP服务器搭建方法/步骤

一、在开始菜单栏中,点击“运行”(WIN R),输入regedit,打开Windows 注册表 二、设定成为NTP 服务器类型 注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters 修改Par…

NTP 服务器搭建

一、功能介绍: 威纶通 HMI 实现与 Windows NTP 服务器实现时间同步。 二、准备条件: 1. 电脑或者工控机(Windows 系统) 2. 支持 NTP 服务器的触摸屏 预设:PLC IP 为 192.168.10.100 电脑本机 IP:192.168.10.200 …

Linux搭建ntp服务器(全)

时间服务器作用: 大数据产生与处理系统是各种计算设备集群的,计算设备将统一、同步的标准时间用于记录各种事件发生时序, 如E-MAIL信息、文件创建和访问时间、数据库处理时间等。 大数据系统内不同计算设备之间控制、计算、处理、应用等数…

【测试环境】搭建NTP服务器(windows10)

一、服务器搭建准备 设备:笔记本、台式电脑 操作系统: windows10 网络:1)可被局域网中其他主机访问;2)可访问外部internet 二、服务器搭建操作步骤 1. 将服务器类型更改为 NTP a. win R打开运行&#…

Windows下安装NTP服务器

软件推荐 这里推荐一个批量远程桌面软件:IIS7远程桌面管理工具,它可以批量连接n台服务器vps,并且支持群控功能。 IIS7远程桌面管理工具(3389、vps、服务器批量管理、批量远程工具)简介: 1、批量管理WIN系列服务器,VP…

centos 7 中NTP时间服务器搭建

一:时间,时区设定 1.查看当前系统日期和时间: date [rootkevin ~]# date 2021年 12月 18日 星期六 21:41:42 CST2.在中国时区是CST,如果显示时区不正确,修改:tzselect (time zone)输入数字选择 …

Linux下搭建ntp时间服务器

NTP(Network Time Protocol)服务器是用于局域网服务器时间同步使用的,可以保证局域网所有的服务器与时间服务器的时间保持一致,应用于对时间实时性要求高的、必须统一时间事件。 NTP时间服务器是一个简单的常用的服务器&#xff…

windows (win10 ) NTP服务器搭建方法/步骤

一、在开始菜单栏中,点击“运行”(WIN R),输入regedit,打开Windows 注册表 二、设定成为NTP 服务器类型 注册表路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters 修改Par…

NTP时间服务器搭建

一,搭建时间服务器 NTP----------->时间服务器 (分层部署,不能超过15层) 1、 服务端 #yum -y install chrony(默认装好的)(客户端和服务端都是装一个) #vim /etc/chrony.conf server 0.cento…

游记-NOI2019(hzy的退役日志)

(由于用来拍照的pad无法联网,照片啥的等NOI结束后再上传) Day -18 被各路julao们轮番吊打…… Day -12 鸽子F发布了笔试题库,然而并没有 “MLE全场记零分” 的操作 Day -8 广二体育馆机器装配完毕,误闯开幕式表演排练场…

祥云杯2021web writeup

太菜了,一个web都没做出来。接下来是复现。好好学习一下大佬们的姿势,也记录一下。篇幅较长,其中有对于源码等的分析,适合新手。大佬勿喷。 目录 web1 ezyii 考点: yii反序列化的链子 web2 安全检测 考点 &#x…

node新版本的坑--与sass的兼容问题

npm ERR! code 1 npm ERR! path C:\Users\HZY\Desktop\wechat-master\chatClient\node_modules\node-sass npm ERR! command failed 这是node版本与sass不兼容,不同的node版本对应不一样的sass,我的一开始是16.13.1的,sass是4.x的&#xff0…

数仓笔记(三)数据仓库系统

目录 第一章 数仓分层 1.1为什么要分层​编辑 1.2 数据集市与数据仓库概念 1.3 数仓命名规范 1.3.1 表命名 1.3.2 脚本命名 1.3.3 表字段类型 第二章 数仓理论 2.1范式理论 2.1.1 概念 2.1.2 函数依赖​编辑 2.1.3 三范式区分 2.2 关系建模与维度建模 2.2.1 关系建…

android zip格式的ndk,Android 使用NDK (JNI)容易解压7z压缩文件

C语言使用LZMA SDK解压非加密7z文件介绍:http://hzy3774.iteye.com/blog/2104510 github项目地址:https://github.com/hzy3774/AndroidUn7zip 把前文中相应源文件和头文件复制到jni目录下: 写java接口源文件: package com.hu.andun7z; import java.io.File; public class A…

【电商数仓】数仓调度之全流程调度(调度数据准备、Azkaban部署、创建数据库和表、Sqoop导出脚本、编写工作流程配置文件、一些注意事项)

文章目录 一 调度数据准备二 Azkaban部署1 上传tar包2 配置MySQL3 配置Executor Server4 配置Web Server 三 创建MySQL数据库和表1 创建数据库2 创建表 四 Sqoop导出脚本1 编写Sqoop导出脚本2 在脚本中填写如下内容3 关于导出update还是insert的问题4 使用脚本 五 数据准备六 编…

【实时数仓】省份交易额统计接口、新老访客对比接口、访客分时统计接口

文章目录 一 省份交易额统计接口1 Sugar配置(1)图表配置(2)接口地址(3)数据格式(4)执行SQL 2 数据接口实现(1)创建地区交易额统计实体类ProvinceStats&#x…

讯商科技丨wms仓储系统的优劣如何判断

WMS系统可以有效地提高工作效率,降低管理成本,这实际上是企业选择使用某些WMS仓库系统的主要原因。那么,我们如何判断WMS系统的优缺点呢? ASP.NET技术通常用于WMS仓储系统。随着信息技术的不断更新和迭代,Java技术正变…