openfst

三个小白是如何在三个月内搭一个基于kaldi的嵌入式在线语音识别系统的

五迷三道 提交于 2020-08-16 08:23:52
前面的博客里说过最近几个月我从传统语音(语音通信)切到了智能语音(语音识别)。刚开始是学语音识别领域的基础知识,学了后把自己学到的写了PPT给组内同学做了presentation( 语音识别传统方法(GMM+HMM+NGRAM)概述 )。一段时间后老板就布置了具体任务:在我们公司自己的ARM芯片上基于kaldi搭建一个在线语音识别系统,三个人花三个月左右的时间完成。由于我们都是语音识别领域的小白,要求可以低些,就用传统的GMM-HMM来实现。说实话接到这个任务我们心里是有点没底的,不知道能不能按时完成,毕竟我们对语音识别不熟,对kaldi不熟。既然任务下达了,硬着头皮也要上,并尽最大努力完成。我本能的先在网上用百度/google搜了搜,看有没有一些经验可供参考,好让我们少走弯路。遗憾的是没搜到有价值的东西。没办法,我们只能根据自己以前的经验摸索着前进。最终我们按计划花了不到三个月的时间完成了嵌入式平台上在线语音识别系统的搭建。虽然只是demo,但是为后面真正做商用的产品打下了良好的基础,累积了不少的经验。今天我就把我们怎么做的分享出来,给也想做类似产品的朋友做个参考。 既然作为一个项目来做,就要有计划,分几个阶段完成这个项目。我在学习语音识别基础知识时对kaldi有一个简单的了解(在做语音识别前就已知kaldi的大名,没办法这几年人工智能(AI)太热了

How to link OpenFST to tensorflow custom op?

假装没事ソ 提交于 2019-12-13 00:49:34
问题 I'm trying to compile a tensorflow custom op that requires OpenFST (http://www.openfst.org/twiki/bin/view/FST/WebHome). However, I'm running into compilation errors where I run: import tensorflow as tf decoder_op = tf.load_op_library('./libfst_decoder.so') and get an undefined symbol error undefined symbol: _ZN3fst21ConvertToLegalCSymbolEPSs , so it's not able to find the linked object. This is the CMake file I'm using: cmake_minimum_required(VERSION 3.5) execute_process(COMMAND python3 -c

Why OpenFST does not seem to have 'run' or 'accept' or 'transduce' command?

女生的网名这么多〃 提交于 2019-12-10 13:43:37
问题 I have heard many good things about OpenFST, yet I struggle with making it work. I am constructing an FST automaton (fstcompile) that I want to use as an acceptor to check if a set of strings are matching (very much alike regular expressions but with the advantages provided by optimizations of the automatons provided by OpenFST). And here is the thing: How to check if the resulting automaton accepts a string? I found a suggestion that the input string shall be turned into a simple automaton

Openfst fstcompose for transducing

房东的猫 提交于 2019-12-04 04:34:15
问题 Trying to run a FST which i compiled with an input FSA, but when I do there is no output. As I searched, only run command in openfst is fstcompose, so what it try to do is composing the fst with the inputs as fsa. pronoun.fsm.txt 0 1 <s> <s> 1 0 <eps> <eps> 0 2 </s> </s> 2 0 <eps> <eps> 0 3 <unk> <unk> 3 0 <eps> <eps> 0 4 a a 4 5 l l 5 6 l l 6 0 +PRN # 0 symbols.txt <eps> 0 <s> 1 </s> 2 <unk> 3 a 4 l 5 +PRN 6 # 7 test.fsm.txt 0 1 a 1 2 l 2 3 l 3 4 +PRN 4 So I created pronoun.fsm.txt as FST

Openfst fstcompose for transducing

放肆的年华 提交于 2019-12-01 21:45:16
Trying to run a FST which i compiled with an input FSA, but when I do there is no output. As I searched, only run command in openfst is fstcompose, so what it try to do is composing the fst with the inputs as fsa. pronoun.fsm.txt 0 1 <s> <s> 1 0 <eps> <eps> 0 2 </s> </s> 2 0 <eps> <eps> 0 3 <unk> <unk> 3 0 <eps> <eps> 0 4 a a 4 5 l l 5 6 l l 6 0 +PRN # 0 symbols.txt <eps> 0 <s> 1 </s> 2 <unk> 3 a 4 l 5 +PRN 6 # 7 test.fsm.txt 0 1 a 1 2 l 2 3 l 3 4 +PRN 4 So I created pronoun.fsm.txt as FST fstcompile --isymbols=symbols.txt --osymbols=symbols.txt pronoun.fsm.txt>pronoun.fst Then, I created my

How do you even give an (openFST-made) FST input? Where does the output go?

一世执手 提交于 2019-11-30 08:09:16
Before I start, note that I'm using the linux shell (via using subprocess.call() from Python), and I am using openFST. I've been sifting through documents and questions about openFST, but I cannot seem to find an answer to this question: how does one actually give input to an openFST-defined, compiled and composed FST? Where does the output go? Do I simply execute 'fstproject'? If so, how would I, say, give it a string to transduce, and print the various transductions when the end-state(s) have been reached? I apologize if this question seems obvious. I'm not very familiar with openFST as of

How do you even give an (openFST-made) FST input? Where does the output go?

六眼飞鱼酱① 提交于 2019-11-29 11:05:16
问题 Before I start, note that I'm using the linux shell (via using subprocess.call() from Python), and I am using openFST. I've been sifting through documents and questions about openFST, but I cannot seem to find an answer to this question: how does one actually give input to an openFST-defined, compiled and composed FST? Where does the output go? Do I simply execute 'fstproject'? If so, how would I, say, give it a string to transduce, and print the various transductions when the end-state(s)