问题标签 [kaldi]

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 投票
1 回答
697 浏览

audio - 了解音频文件频谱图值

我目前正在努力了解功率谱是如何存储在 kaldi 框架中的。

我似乎已经使用成功创建了一些数据文件

这给了我一个大文件,其中包含不同音频文件的数据点,就像这样

问题是我不确定我应该如何解释这个数据集,我知道在此之前执行 fft,我想这是一件好事。

上面给出的输出示例来自一个 1 秒长的文件。
所有标准都已用于计算频谱图,因此采样频率应为 16 kHz,帧长 = 25 ms,重叠 = 10 ms。第一组数据点数为 25186。

鉴于这些信息,我可以以某种方式解释输出吗?

通常当执行 fft 时,频率 bin 大小可以通过F_s/N=bin_size其中F_s是采样频率和NFFT 长度来提取。那么这是同一种情况吗?16000/25186 = 0.6...Hz/bin?

还是我解释不正确?

0 投票
1 回答
1969 浏览

audio - 为什么 librosa 中的情节不同?

我目前正在尝试使用 librosa 执行 stfft,以使参数类似于来自不同框架(Kaldi)的 stfft 进程。

音频文件是fash-b-an251

Kaldi 使用 16 KHz 的采样频率,window_size = 400 (25ms),hop_length=160 (10ms) 来完成它。

从中提取的频谱图如下所示:

在此处输入图像描述 然后我尝试使用 librosa 做同样的事情:

基本上取自这里

我在其中修改了 stfft 函数,使其适合我的参数。问题是它创建了一个完全不同的情节。

在此处输入图像描述

所以.. 我在 librosa 中做错了什么?.. 为什么这个情节与 kaldi 中的情节如此不同。

我错过了什么吗?

0 投票
1 回答
944 浏览

python - Python 和 Kaldi:断管错误

设置如下:我正在使用 Kaldi 工具。它们在某种形式的 bash 脚本中被调用。这些 bash 脚本由用 python 编写的包装程序调用,该程序将任务提交给 Sun Grid Engine。

我要执行的命令如下

在命令行中执行此操作会产生正确的结果“40”以及警告

但是,如果我用以下方式包装它:

程序copy-feats因错误而失败:

在各种堆栈跟踪和以下错误之后,还会额外打印以下警告:

这就是我发现的:feat-to-dim提前关闭管道,同时copy-feats尝试继续写入输出。既然不可能,copy-feats就终止。13可能表示断管错误。

对于 Python,这是一个严重的问题,为什么它会变成错误并终止。但在这种情况下,产生此错误的不是 Python,而是copy-feats. 因此,在这种情况下,python 中的try/catch或捕获管道之类的东西似乎没有任何成功。

此外,以下几行运行良好,没有任何警告或错误:

以下行产生简单的错误消息cat: write error: Broken pipe和退出状态 256:

您在这里有什么进一步的建议吗?

0 投票
1 回答
239 浏览

speech-recognition - 无法提取 delta 和 delta delta 功率谱计算

我目前正在尝试使用 kaldi 提供的 add-deltas 二进制文件提取 delta + delta-delta。但由于某种原因,我无法提取它。

我通常使用 make_spectrum.sh 脚本提取功率谱。我对其进行了一些修改以包含增量,但输出与没有增量部分的输出没有任何不同..

我究竟做错了什么?

0 投票
1 回答
1043 浏览

python - 如何在 Tornado 服务器中设置请求超时?

我正在为 kaldi 运行gstreamer 服务器,它在内部使用 tornado 来提供用于转录的 HTTP 端点,例如 example.com:8888/dynamic/recognize

我认为这是相关的代码:

来源

我对 Tornado 不熟悉,但是查看tornado.web.Application docs,我没有看到settings.

我看到了其他几个类似的问题,例如这个问题,但它们与客户端打交道。这个答案似乎很相关,但我不确定如何在我的情况下应用它。

0 投票
1 回答
469 浏览

neural-network - 使用 Kaldi 使用深度神经网络进行命令检测,无需绑定到语言

有没有人看到任何示例如何设置简单的应用程序来训练 dnet,然后使用它来识别有限数量的语音命令而不绑定到特定语言?我相信 Kaldi API 非常强大,但缺乏文档。

0 投票
4 回答
3876 浏览

linux - Ubuntu 16.04 上的 Kaldi 工具包安装错误

您好我正在尝试在 Ubuntu 16.04 上安装 Kaldi 工具包进行语音识别。我已按照安装文件中的说明进行操作。

(1) 转到工具/并按照那里的安装说明进行操作。

按照工具中安装文件中的程序并得到以下输出,

$ extras/check_dependencies.sh

../tools/extras/check_dependencies.sh: all OK.

并执行make没有任何错误。如果您想看一下,这是最后几行

$ 制作

现在我继续下一步

(2) 转到 src/ 并按照那里的安装说明进行操作。

在 src 文件夹中,configure使用以下输出执行

$ ./配置

Configuring ... Backing up kaldi.mk to kaldi.mk.bak ... Checking compiler g++-4.9 ... Checking OpenFst library in /home/xxx/Downloads/kaldi/tools/openfst ... Doing OS specific configurations ... On Linux: Checking for linear algebra header files ... Using ATLAS as the linear algebra library. Successfully configured for Debian/Ubuntu Linux [dynamic libraries] with ATLASLIBS =/usr/lib/libatlas.so.3 /usr/lib/libf77blas.so.3 /usr/lib/libcblas.so.3 /usr/lib/liblapack_atlas.so.3 CUDA will not be used! If you have already installed cuda drivers and cuda toolkit, try using --cudatk-dir=... option. Note: this is only relevant for neural net experiments Info: configuring Kaldi not to link with Speex (don't worry, it's only needed if you intend to use 'compress-uncompress-speex', which is very unlikely) SUCCESS To compile: make clean -j; make depend -j; make -j ... or e.g. -j 10, instead of -j, to use a specified number of CPUs debug mode enabled... + exit 0

$ make depend也执行没有任何错误。但是当我执行 make 时,出现以下错误(我没有复制所有内容,因为它很长,如果有人想要我可以发布完整输出)

$ 制作

我什至手动搜索了库,它们位于 ../tools/openfst 位置。我什至尝试在系统范围内安装 openfst,但没有任何效果。任何帮助都将不胜感激。谢谢!

0 投票
1 回答
235 浏览

audio - 在没有对数的情况下提取 MFCC 系数?

我目前正在尝试复制一篇论文的作品,其中他们使用 MFCC 特征训练 cnn,而最后没有执行 DCT。它基本上是滤波器组能量的对数。

我知道 kaldi 可以使用 make_mfcc.sh 脚本计算 MFCC 功能。但是可以以某种方式更改脚本以在最后不执行 DCT 的情况下计算 MFCC,如果没有,是否有其他工具可以做到这一点?

MFCC 通常衍生如下:

对信号(窗口摘录)进行傅里叶变换。

  1. 使用三角形重叠窗口将上面获得的光谱的功率映射到梅尔标度上。
  2. 记录每个 mel 频率的功率对数。
  3. 对 mel 对数幂列表进行离散余弦变换,就好像它是一个信号一样。
  4. MFCC 是所得频谱的幅度。
0 投票
1 回答
478 浏览

python - 给定不同大小的音频文件进行音素识别?

我目前正在使用 cnn 进行音素识别。

我的数据集已标记,但我有点不确定如何确保特征向量的长度也将根据音频文件的长度。

我对 CNN 的输入目前是 mel-log 滤波器能量的频谱图可视化,其中 y 轴是不同的频带,x 轴是包含帧。

在此处输入图像描述

对于上面给定的示例是句子:

和音素:

在 249 帧中总共有 15 个音素。近 17 帧公关。每个音素。

但在这儿: 在此处输入图像描述

是对它说的文字/单词:

总共 97 帧中的 2 个音素 = 每个音素 49 帧。

那么如何创建一个输入形状来捕获音频文件将具有的数字音素?

编辑:

我认为我认为可以重新创建输入/输出关系的唯一方法是提供一帧的输入形状,但系统是否能够在短时间内检测到不同类别的音素,并且仍然如果没有可用的,说“无”?

这将要求输出形状包含每个帧的类,这需要我知道每个音素的持续时间,这应该是可能

但是,是否有可能在给定一帧的情况下检测到音素?

0 投票
0 回答
157 浏览

speech-recognition - 我如何提取hmm的后验概率?

我刚刚从我的模型中提取了帧级别的对齐。

每个电话类都在 data/lang/phones.txt 文件中定义,根据这个电话可以分为 X , X_B ,X_I,X_E,X_S

其中_B音素开始_E音素结尾,_S音素单例,_I音素中间,X只是一个音素。

我的印象是每个音素都是使用三态 hmm 解码的,因此认为可以在给定三帧 => 三组特征 => 三组序列发射概率 => 的帧级别解码音素确定音素。

但情况似乎并非如此,因此该特征必须包含来自静态、增量、增量增量的信息。

如果是这种情况,是否可以提取每个音素的三种状态的预期后验概率?

是否有可能给定一组功能(足以解码音素),将其解码为给定预制脚本的音素?