问题标签 [htk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
1532 浏览

cmd - HTK HEREST 问题

我正在使用 HTK (HMM ToolKit) 进行一些语音识别,但出现了这个奇怪的错误:

错误 [+7390] StepAlpha:Alpha 修剪失败 sq(16) > qHi(15)

我尝试过修剪,但只有那些 15/16 会更改为其他数字,我龙骨收到同样的错误。我什至尝试禁用修剪,但它一直给我这个错误。

我只是不知道在哪里寻找任何东西,如果我知道我可以解决它。

这是我的 HERest 命令:

HERest -C config -I Label.mlf -t 250 100 1000 -S trainlist.scp -H hmms\0\vFloors -H hmms\0\hmm0 -M hmms\1 词表

我查看了 HTK 书,但没有关于错误号 7390 的信息。

0 投票
1 回答
446 浏览

bash - 检查程序中的错误代码 - 特别是 HTK Toolkit

我有一个 bash 脚本,它调用和计算一段文本的电话级别边界等HTK组件。如何检查手术是否成功?我尝试了以下方法: HCopyHVite

  1. ./findWordBoundary.sh <input args> |& tee run.log

上述方法不起作用。实用程序输出的所有内容HTK都写入run.log,但错误语句和条件除外。所以使用greponrun.log是行不通的。

  1. x=./findWordBoundary.sh <input args>也不起作用。除了错误条件之外,它只是将整个消息负载转储到x.

我正在寻找的是:
一种在HTK操作导致错误时记录并采取适当措施的方法。另外,我想这可以扩展到更通用的 bash 实用程序,比如wget. 如何从 bash 实用程序中记录和错误并在脚本中处理它(比如wget返回 a时404:Not found exception)?

谢谢,
斯里拉姆。

0 投票
1 回答
659 浏览

signal-processing - 与 HTK 连接的数字识别器

我正在尝试使用 HTK 开发一个基本的连接数字识别器。目前,识别器只需要识别 0-10 的数字,并且依赖于说话者(这现在不是问题)。以下是我如何进行识别:

  1. 获取用户录制的 wavfile 并创建 MFCC。
  2. 使用 wordnet 和字典作为输入在 mfcc 文件上运行 HVite。

    关于 hmm 模型的训练注意事项:

训练初始 HMM 模型的基本单元是从口语数字字符串中挑选出来的。我最终得到了每个数字的大约 20 个单位(大约),这些单位用于制作初始模型。通过连接基本单元(要连接的基本单元是随机选择的)来合成嵌入式训练模型。以这种方式生成的句子总数约为 20000 个。另外 109 个句子取自测试阶段实际说出的单词。

我面临的问题如下:
1. 在长度超过 4 的连接数字字符串中,我在输出端将数字插入到输入字符串中。
例如)输入:99102,输出:989818082
请注意,输入中的所有数字都被正确识别,只是在输出中引入了无关数字。查看 mlf 文件显示与这些词关联的似然值也相似。知道为什么会发生这种情况吗?

我已经通过网络寻找解决方案,但没有遇到任何问题。任何帮助都是最受欢迎的。

0 投票
1 回答
1093 浏览

machine-learning - 使用 HTK 进行扬声器适配

我正在尝试使基于单声道的识别器适应特定的扬声器。我正在使用中给出的食谱HTKBook 3.4.1 section 3.6.2。我被困在HHEd我正在调用的部分上,比如 sp:

HHEd -A -D -T 1 -H hmm15/hmmdefs -H hmm15/macros -M classes regtree.hed monophones1eng

我最终得到的错误如下:
ERROR [+999] Components missing from Base Class list (2413 3375)
ERROR [+999] BaseClass check failed

该文件夹classes包含global具有以下内容的文件:
~b ‘‘global’’<br> <MMFIDMASK> *
<PARAMETERS> MIXBASE
<NUMCLASSES> 1
<CLASS> 1 {*.state[2-4].mix[1-25]}

里面的hmmdefs文件hmm15有一些混合组件(我在每个手机的每个状态使用 25 个混合组件)丢失。我试图通过给出具有随机均值和方差值但权重为零的混合分量来“填补空白”。这也没有效果。

hmms 是具有 5 个状态(3 个发射)的左右 hmms,每个状态由 25 个组件混合建模。每个组件依次由带有 EDA 组件的 MFCC 建模。总共有 46 部电话。

我的问题是:
1. 我调用的方式是否HHEd正确?单声道可以按上述方式调用吗?
2. 我知道基类列表 (rtree.base必须包含每个混合组件,但是我在哪里可以找到这些缺少的混合组件?

注意:如果需要更多信息,请告诉我。

编辑 1:文件 regtree.hed 包含以下内容:

谢谢,
斯里拉姆

0 投票
1 回答
3519 浏览

speech-recognition - 语音识别中强制对齐的问题 - HTK

我有一个系统,要求用户在提示后重复一个句子。它使用用户口语HTKforce-align预定义的词级标签文件(句子的)来获得时间对齐的电话级文件。HMM 已经在大量数据上进行了训练,并提供了非常准确的时间对齐文件HVite当用户没有说出需要说出的确切句子时,就会出现我的问题。让我用一个例子来说明:

  1. 需要说出的目标句子的字级标签文件(用户知道):
    这是一个非常好的一天。

  2. 用户说(案例 1):这是一个非常好的一天。
    在这种情况下,用户重复了完全相同的句子。时间对齐的文件非常准确,一切都很好。

  3. 用户说(案例 2):这是美好的一天。
    在这种情况下,使用上面给出的字级标签文件执行强制对齐。生成的时间对齐文件显示了用户从未说过的单词的时间瞬间(例如 VERY 存在于原始句子中但不存在于此处)。

有没有办法HTK检测并可能避免这种情况?

一种解决方案是某种前端预处理器,它可以进行语音识别(这本身就是一个非常困难的问题,因为它必须有无限的词汇量)并让用户知道他们所说的内容是不正确的。

是否有任何工具/命令行选项HTK允许我这样做?

PS:如果需要更多详细信息,请告诉我。

谢谢,
斯里拉姆

0 投票
1 回答
1765 浏览

signal-processing - 从一种 MFCC 类型转换为另一种 - HTK

我正在使用该HTK工具包进行单词识别任务,并且有经典的训练和测试数据不匹配。训练数据仅包含“干净”(通过麦克风记录)数据。数据被转换为MFCC_E_D_A参数,然后由 HMM(电话级别)建模。我的测试数据已通过固定电话和手机渠道记录(引起失真等)。将MFCC_E_D_A参数与HVite结果一起使用会导致输出不正确。我想使用cepstral mean normalizationwithMFCC_E_D_A_Z参数,但它没有多大用处,因为 HMM 不是用这些数据建模的。我的问题如下:

  1. 有什么办法可以转换 MFCC_E_D_A_ZMFCC_E_D_A? 这样我就按照这种方式:input -> MFCC_E_D_A_Z -> MFCC_E_D_A -> HMM log likelihood computation
  2. 有什么方法可以将现有的 HMM 模型MFCC_E_D_A参数转换为MFCC_E_D_A_Z?

如果有办法从上面做(1),配置文件HCopy会是什么样子?我编写了以下HCopy配置文件进行转换:
SOURCEFORMAT = MFCC_E_D_A_Z
TARGETKIND = MFCC_E_D_A
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12
ENORMALISE = T

这不起作用。我该如何改进呢?

0 投票
1 回答
718 浏览

speech-recognition - 使用 htk 进行非数字识别

我一直在尝试将 HTk 与 sphinx4 结合用于语音识别应用程序。我将输入作为 wav 文件提供,并且我正在使用 sphinx 提供的“转录器演示”和“格子演示”,但是输出几乎是不可接受的。所以我决定用 Sphinx4 引入 HTK。但由此产生的输出似乎遥遥无期。我相信配置可以进一步调整..比我正在做的。我已经很好地搜索了是否有任何与使用 htk 和 sphinx4 相关的教程。除了这个惊人的博客(http://nsh.nexiwave.com/2009/09/using-htk-models-in-sphinx4.html)我还没有发现其他任何东西。任何人都可以在这里帮助我以提高我的识别准确性..

我的配置文件是狮身人面像如下:

任何帮助将非常感激

0 投票
2 回答
951 浏览

c++ - 处理用 ffmpeg 解码的音频包

在我的另一篇文章之后,我想知道是否可以对解码的音频数据包进行 MFCC 提取等处理。我使用的代码使用 ffmpeg 从 mpeg-2 文件中解码音频和视频。视频处理是使用 opencv 完成的,因为该库允许逐帧抓取。我需要同时处理相应的音频样本。

谢谢。

0 投票
1 回答
337 浏览

c++ - 独立处理音视频

由于我在这里这里的最后一篇文章不受欢迎 ,我会尝试其他的。我有相应的音频(.wav)和视频文件(.mpg)。让我们考虑一下这两个流是同步记录的。我想处理两个流,用opencv处理图像,用“我不知道哪个音频库”(你告诉我?)处理音频,我想在线处理这些流并保持同步性。请注意,视频的长度少于 2 分钟。

谢谢你的帮助!

0 投票
2 回答
153 浏览

c++ - 理解文件格式

我有一个关于文件读取的问题,我对此感到沮丧,因为我正在进行一些手写识别开发,而我使用的工具似乎没有读取我的训练数据文件。

所以我有一个文件可以正常工作。我在此处粘贴该文件的一些内容:

该文件的格式我知道前 12 个字节是 2 个长字节和 2 个短字节,最有可能的数据为 4 、 1000 、 1024 、 9 但 T 无法读取文件以获取这些值。

实际上,我想以类似于上述格式的格式写入前 12 个字节,但我似乎不知道该怎么做。

忘了提剩下的数据是浮点数。当我将数据写入文件时,我得到人类可读的文本而不是这些符号,当我阅读这些符号时,我没有得到实际值。如何获得这些符号的实际浮点数和整数?

我的代码是

a我在、和中得到的值是 85991456、-402448352、8193 和 2336,而不是实际值bcd