问题标签 [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.
audio - 了解音频文件频谱图值
我目前正在努力了解功率谱是如何存储在 kaldi 框架中的。
我似乎已经使用成功创建了一些数据文件
这给了我一个大文件,其中包含不同音频文件的数据点,就像这样。
问题是我不确定我应该如何解释这个数据集,我知道在此之前执行 fft,我想这是一件好事。
上面给出的输出示例来自一个 1 秒长的文件。
所有标准都已用于计算频谱图,因此采样频率应为 16 kHz,帧长 = 25 ms,重叠 = 10 ms。第一组数据点数为 25186。
鉴于这些信息,我可以以某种方式解释输出吗?
通常当执行 fft 时,频率 bin 大小可以通过F_s/N=bin_size
其中F_s
是采样频率和N
FFT 长度来提取。那么这是同一种情况吗?16000/25186 = 0.6...Hz/bin?
还是我解释不正确?
audio - 为什么 librosa 中的情节不同?
我目前正在尝试使用 librosa 执行 stfft,以使参数类似于来自不同框架(Kaldi)的 stfft 进程。
音频文件是fash-b-an251
Kaldi 使用 16 KHz 的采样频率,window_size = 400 (25ms),hop_length=160 (10ms) 来完成它。
从中提取的频谱图如下所示:
基本上取自这里:
我在其中修改了 stfft 函数,使其适合我的参数。问题是它创建了一个完全不同的情节。
所以.. 我在 librosa 中做错了什么?.. 为什么这个情节与 kaldi 中的情节如此不同。
我错过了什么吗?
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:
您在这里有什么进一步的建议吗?
speech-recognition - 无法提取 delta 和 delta delta 功率谱计算
我目前正在尝试使用 kaldi 提供的 add-deltas 二进制文件提取 delta + delta-delta。但由于某种原因,我无法提取它。
我通常使用 make_spectrum.sh 脚本提取功率谱。我对其进行了一些修改以包含增量,但输出与没有增量部分的输出没有任何不同..
我究竟做错了什么?
python - 如何在 Tornado 服务器中设置请求超时?
我正在为 kaldi 运行gstreamer 服务器,它在内部使用 tornado 来提供用于转录的 HTTP 端点,例如 example.com:8888/dynamic/recognize
我认为这是相关的代码:
我对 Tornado 不熟悉,但是查看tornado.web.Application
docs,我没有看到settings
.
neural-network - 使用 Kaldi 使用深度神经网络进行命令检测,无需绑定到语言
有没有人看到任何示例如何设置简单的应用程序来训练 dnet,然后使用它来识别有限数量的语音命令而不绑定到特定语言?我相信 Kaldi API 非常强大,但缺乏文档。
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,但没有任何效果。任何帮助都将不胜感激。谢谢!
audio - 在没有对数的情况下提取 MFCC 系数?
我目前正在尝试复制一篇论文的作品,其中他们使用 MFCC 特征训练 cnn,而最后没有执行 DCT。它基本上是滤波器组能量的对数。
我知道 kaldi 可以使用 make_mfcc.sh 脚本计算 MFCC 功能。但是可以以某种方式更改脚本以在最后不执行 DCT 的情况下计算 MFCC,如果没有,是否有其他工具可以做到这一点?
MFCC 通常衍生如下:
对信号(窗口摘录)进行傅里叶变换。
- 使用三角形重叠窗口将上面获得的光谱的功率映射到梅尔标度上。
- 记录每个 mel 频率的功率对数。
- 对 mel 对数幂列表进行离散余弦变换,就好像它是一个信号一样。
- MFCC 是所得频谱的幅度。
python - 给定不同大小的音频文件进行音素识别?
我目前正在使用 cnn 进行音素识别。
我的数据集已标记,但我有点不确定如何确保特征向量的长度也将根据音频文件的长度。
我对 CNN 的输入目前是 mel-log 滤波器能量的频谱图可视化,其中 y 轴是不同的频带,x 轴是包含帧。
对于上面给定的示例是句子:
和音素:
在 249 帧中总共有 15 个音素。近 17 帧公关。每个音素。
是对它说的文字/单词:
总共 97 帧中的 2 个音素 = 每个音素 49 帧。
那么如何创建一个输入形状来捕获音频文件将具有的数字音素?
编辑:
我认为我认为可以重新创建输入/输出关系的唯一方法是提供一帧的输入形状,但系统是否能够在短时间内检测到不同类别的音素,并且仍然如果没有可用的,说“无”?
这将要求输出形状包含每个帧的类,这需要我知道每个音素的持续时间,这应该是可能的。
但是,是否有可能在给定一帧的情况下检测到音素?
speech-recognition - 我如何提取hmm的后验概率?
我刚刚从我的模型中提取了帧级别的对齐。
每个电话类都在 data/lang/phones.txt 文件中定义,根据这个电话可以分为 X , X_B ,X_I,X_E,X_S
其中_B音素开始_E音素结尾,_S音素单例,_I音素中间,X只是一个音素。
我的印象是每个音素都是使用三态 hmm 解码的,因此认为可以在给定三帧 => 三组特征 => 三组序列发射概率 => 的帧级别解码音素确定音素。
但情况似乎并非如此,因此该特征必须包含来自静态、增量、增量增量的信息。
如果是这种情况,是否可以提取每个音素的三种状态的预期后验概率?
是否有可能给定一组功能(足以解码音素),将其解码为给定预制脚本的音素?