问题标签 [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 回答
2443 浏览

speech-recognition - 使用 Librosa 生成的频谱图看起来与 Kaldi 不一致?

我使用来自 Kaldi 的“egs/tidigits”代码生成了“七”话语的频谱图,使用 23 个 bin、20kHz 采样率、25ms 窗口和 10ms 移位。频谱图如下所示,通过 MATLAB imagesc 函数可视化:

卡尔迪

我正在尝试使用 Librosa 作为 Kaldi 的替代品。我使用与上面相同数量的箱、采样率和窗口长度/移位设置我的代码如下。

但是,当我将生成的同一 WAV 文件的 Librosa 频谱图可视化时,它看起来会有所不同:

图书馆

有人可以帮我理解为什么这些看起来如此不同吗?在我尝试过的其他 WAV 文件中,我注意到在上面的 Librosa 脚本中,我的擦音(如上例中“七”中的 /s/)正在被截断,这极大地影响了我的数字分类准确性。谢谢!

0 投票
1 回答
739 浏览

python - 我可以信任哪个工具?

我似乎不得不确定我可以信任的工具......

我一直在测试的工具是 Librosa 和 Kaldi,用于创建数据集,用于绘制音频文件的 40 个滤波器组能量的可视化。

在 kaldi 中使用这些配置提取滤波器组能量。

fbank.conf

librosa使用plot绘制提取的数据。Librosa使用matplotlib pcolormesh,这意味着除了librosa提供更易于使用的 API 之外,应该没有任何区别。

输出:

在此处输入图像描述

在 Librosa 中创建的类似图如下:

输出这个:

在此处输入图像描述

尽管颜色不同,两者都显示出相似的图,但能量范围似乎有点不同。

Kaldi 的最小值/最大值为 -1.828067/22.70058

Librosa 的最小值/最大值为 -84.6796661558/-4.67966615584

问题是我试图将这些图存储为 numpy 数组,以便进一步处理。

这似乎创建了一个不同的图。使用 Librosa 数据,我将图创建为:

在此处输入图像描述

这是完美的......它类似于原始数据集......

但是对于 Kaldi,我从这段代码中得到了这个情节:

在此处输入图像描述

我从之前的帖子中发现,出现红色的原因可能是由于范围,并且之前的标准化会有所帮助 - 但这导致了这个:

在此处输入图像描述

但这绝不会与 Kaldi 情节中的原始情节有关……那么为什么会这样呢?.. 为什么我可以用从 Librosa 提取的能量而不是从 Kaldi 提取的能量来绘制它?

Librosa 的最小工作示例:

kaldi 的最小工作示例 - (真实数据):

0 投票
0 回答
675 浏览

kaldi - Kaldi:加载共享库时出错

我的脚本因加载共享库时出错而卡住

错误日志是:

0 投票
1 回答
683 浏览

kaldi - Kaldi 特征维度错误

我为假人运行 kaldi 教程,我收到此错误“获取特征维度时出错”。

有人可以帮忙吗?

感谢您的时间!

在此处输入图像描述

0 投票
1 回答
392 浏览

speech-recognition - 提取 kaldi 中每帧所有 pdf-id 的后验概率

kaldi 是否可以为决策树中的每个 pdf-id 提取后验概率?我目前正在训练一个 CNN 模型,它可以复制 GMM 的结果。我的 CNN 目前只接受过预测真实电话的训练,这意味着如果使用多个 pdf-id 来解码电话,我将遇到麻烦。

我目前正在提取后验概率

打印出这样的内容:

基于决策树:

在此处输入图像描述

这只给了我最好的后验概率,而不是每帧的所有后验概率。是否有可能获得每帧所有 pdf-ids 的后验概率,而不是最好的?

0 投票
1 回答
181 浏览

python - 将类标签与波形图上的数据点对齐

我目前正在尝试将提取的目标值与波形图对齐。提取的目标值是确定说出的单词是否是(是,否,沉默)的音素类。

我一直在尝试将目标值与波形正确对齐,但不知何故最终导致目标类与其放置在波形上的位置之间不对齐。

例子: 在此处输入图像描述

该图显示了句子“no yes no no no no no yes no”的波形。类别标签如下 静音:0 是:1 否:2

前四个 0 有意义(用红色标记),因为在波形中看不到能量,因此它必须是无声的。但是第五个 0 (标记为绿色)没有意义。它显然不应该在说出某些内容时保持沉默,并且说出单词末尾的下一个标签是 2 类。然后沿着静音区域(标有蓝色)继续。

就像所有标签都向右移动一样,并且或多或少地错位了。我一直在注释波形的方式是这样的:

类标签是使用从使用 kaldi 训练的模型中提取的对齐方式提取的。

使用标准 kaldi 配置,意味着帧长度为 25 毫秒,重叠为 10 毫秒,用于训练/解码的特征是 MFCC。

问题:我是否错误地注释了数据点,如果不是,为什么会发生错位?

更新

@NikolayShmyrev 提醒我,我实际上是在训练之前重新采样了音频,这一定是显示不正确结果的原因之一。修复后,我仍然看到它检测到是/否的位置有一些错位..

在此处输入图像描述

代码现在是:

0 投票
1 回答
1664 浏览

bash - Kaldi librispeech 数据准备错误

我正在尝试做 ASR 系统。我使用 kaldi 手册和 librispeech 语料库。在数据准备步骤中,我收到此错误

这里是发生此错误的一段代码

在文件 wav.scp 我得到这样的行:

在这个数据集中,我只有 flac 文件(他们通过提供的脚本下载),我不明白为什么我们搜索wav 文件?以及如何正确运行数据准备(我没有更改本手册中的源代码。

另外,如果您向我解释这段代码中发生了什么,那么我将非常感谢您,因为我不熟悉 bash 和 perl。

十分感谢!

0 投票
0 回答
665 浏览

linux - 安装 Kaldi,在 ubuntu 16.04 上编译 gst-kaldi-nnet2-online 时出错

我尝试做的是在我的 ubuntu 16.04 虚拟机上安装silvius-backend,但不幸的是,如果没有正确编译 kaldi 和gst-kaldi-nnet2-online ,它就无法工作。

我已经成功编译了kaldi,但是当我尝试编译gst-kaldi-nnet2-online时遇到错误。

我按照这些说明进行操作。

这是我所做的:

  1. 我正在使用Ubuntu 16.04。

  2. 我已经使用以下命令成功编译了kaldi :

    kaldi/tools--> sudo make CXX=g++-5

    kaldi/src--> sudo CXX=g++-5 ./configure --shared, sudo make clean CXX=g++-5, sudo make depend CXX=g++-5,sudo make CXX=g++-5

  3. 我试着做sudo make depend~/gst-kaldi-nnet2-online/src我得到了这样的错误:

Makefile:6: * 找不到 Kaldi 的 makefile /home/tanel/tools/kaldi-trunk/src/kaldi.mk。发出 make 时使用 KALDI_ROOT 指定 Kaldi 的根目录,例如: KALDI_ROOT=/home/tanel/tools/kaldi-trunk make 。停止。

  1. 所以在这条路径中,我将路径更改为:“KALDI_ROOT=~/kaldi”

    现在我收到这样的错误:

g++-5 -M -std=c++11 -I.. -I/home/silvius/kaldi/tools/openfst/include -pthread -I/usr/include/gstreamer-1.0 -I/usr/lib/x86_64 -linux-gnu/gstreamer-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/glib-2.0 -I /usr/lib/x86_64-linux-gnu/glib-2.0/include -Wall -Wno-sign-compare -Wno-unused-local-typedefs -Wno-deprecated-declarations -Winit-self -DKALDI_DOUBLEPRECISION=0 -DHAVE_EXECINFO_H=1 -DHAVE_CXXABI_H -DHAVE_ATLAS -I/home/silvius/kaldi/tools/ATLAS_headers/include -msse -msse2 -pthread -g -fPIC -I~/kaldi/src *.cc > .depend.mk
在 gst-audio-source.cc:22:0: ./gst-audio-source.h:23:33 中包含的文件中:致命错误:matrix/kaldi-vector.h:没有此类文件或目录编译终止。在 ./gstkaldinnet2onlinedecoder.h:26:0 包含的文件中,来自 gstkaldinnet2onlinedecoder.cc:49: ././simple-options-gst.h:25:33: 致命错误:util/simple-options.h: 没有文件或目录编译终止。在 simple-options-gst.cc:20:0 中包含的文件中:./simple-options-gst.h:25:33:致命错误:util/simple-options.h:没有此类文件或目录编译终止。Makefile:76:目标“依赖”的配方失败制作:[依赖]错误1(忽略)

您也可以在此链接上看到图片上的错误

PS:我的文件夹的路径是:

我不知道下一步该做什么或有什么问题。自从在互联网上几天以来,我一直在寻找解决方案,但我一无所获。有人能帮我吗?

0 投票
1 回答
470 浏览

gstreamer - 与 GStreamer 一起使用时在 Kaldi 中断言

使用Alumae的 GStreamer 插件和以下管道:

appsrc source='appsrc' ! wavparse ! audioconvert ! audioresample ! queue ! kaldinnet2onlinedecoder <parameters snipped> ! filesink location=/tmp/test

我总是得到以下我不明白的断言 KALDI_ASSERT(current_log_post_.NumRows() == info_.frames_per_chunk / info_.opts.frame_subsampling_factor && current_log_post_.NumCols() == info_.output_dim);

这个断言错误是关于什么的?如何解决?

仅供参考,推入管道的数据来自流式 wav 文件,并用wavenc替换kaldinnetonlinedecoder正确生成 Wav 文件而不是最后的文本文件。

编辑 这里是使用的参数:

供您参考,在 python 中使用管道文本表示但对其进行编码(即使用 Gst.Element_Factory.make 等)总是抛出异常

第二次更新 这是断言生成的完整堆栈跟踪

0 投票
1 回答
361 浏览

gpu - cudaError_t 1 : 从 'cublasCreate(&handle_)' 返回“__global__ 函数调用未配置”

我在 SGE 集群上使用 Kaldi 运行 ASR 实验,该集群由两个带有 TITAN XP 的工作站组成。随机我遇到以下问题:

错误 (nnet3-train[5.2.62~4-a2342]:FinalizeActiveGpu():cu-device.cc:217) cudaError_t 1:“__global__ 函数调用未配置”从 'cublasCreate(&handle_)' 返回

我猜 GPU 驱动程序或硬件有问题。

你能提供一些帮助吗?

这是完整的日志