首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法运行.c,因为使用vosk时出现分段故障

无法运行.c,因为使用vosk时出现分段故障
EN

Stack Overflow用户
提问于 2021-07-16 16:38:41
回答 1查看 95关注 0票数 0

我在ubuntu18.04上尝试运行一个.c文件,该文件附带了一个名为vosk的API,我只想运行它。问题是python脚本(它是应用程序接口的标准)运行起来没有任何问题,但在用make编译了名为test_vosk.c的.c文件后,他们提供了(所以我没有写它)来运行应用程序接口:

代码语言:javascript
运行
复制
#include <vosk_api.h>
#include <stdio.h>

int main() {
    FILE *wavin;
    char buf[3200];
    int nread, final;

    VoskModel *model = vosk_model_new("model");
    VoskRecognizer *recognizer = vosk_recognizer_new(model, 16000.0);

    wavin = fopen("test.wav", "rb");
    fseek(wavin, 44, SEEK_SET);
    while (!feof(wavin)) {
         nread = fread(buf, 1, sizeof(buf), wavin);
         final = vosk_recognizer_accept_waveform(recognizer, buf, nread);
         if (final) {
             printf("%s\n", vosk_recognizer_result(recognizer));
         } else {
             printf("%s\n", vosk_recognizer_partial_result(recognizer));
         }
    }
    printf("%s\n", vosk_recognizer_final_result(recognizer));

    vosk_recognizer_free(recognizer);
    vosk_model_free(model);
    fclose(wavin);
    return 0;
}

并通过执行以下操作来运行它

代码语言:javascript
运行
复制
./test_vosk

我得到了这个错误:

代码语言:javascript
运行
复制
LOG (VoskAPI:ReadDataFiles():model.cc:206) Decoding params beam=10 max-active=3000 lattice-beam=2
LOG (VoskAPI:ReadDataFiles():model.cc:209) Silence phones 1:2:3:4:5:6:7:8:9:10
LOG (VoskAPI:RemoveOrphanNodes():nnet-nnet.cc:948) Removed 0 orphan nodes.
LOG (VoskAPI:RemoveOrphanComponents():nnet-nnet.cc:847) Removing 0 orphan components.
LOG (VoskAPI:CompileLooped():nnet-compile-looped.cc:345) Spent 0.0199881 seconds in looped compilation.
LOG (VoskAPI:ReadDataFiles():model.cc:233) Loading i-vector extractor from model/ivector/final.ie
LOG (VoskAPI:ComputeDerivedVars():ivector-extractor.cc:183) Computing derived variables for iVector extractor
LOG (VoskAPI:ComputeDerivedVars():ivector-extractor.cc:204) Done.
LOG (VoskAPI:ReadDataFiles():model.cc:266) Loading HCL and G from model/graph/HCLr.fst model/graph/Gr.fst
LOG (VoskAPI:ReadDataFiles():model.cc:287) Loading winfo model/graph/phones/word_boundary.int
Segmentation fault (core dumped)

如果我尝试./test_vosk_speaker (这基本上是相同的脚本,但有另一个功能),也会发生类似的事情:

代码语言:javascript
运行
复制
LOG (VoskAPI:ReadDataFiles():model.cc:206) Decoding params beam=10 max-active=3000 lattice-beam=2
LOG (VoskAPI:ReadDataFiles():model.cc:209) Silence phones 1:2:3:4:5:6:7:8:9:10
LOG (VoskAPI:RemoveOrphanNodes():nnet-nnet.cc:948) Removed 0 orphan nodes.
LOG (VoskAPI:RemoveOrphanComponents():nnet-nnet.cc:847) Removing 0 orphan components.
LOG (VoskAPI:CompileLooped():nnet-compile-looped.cc:345) Spent 0.0199001 seconds in looped compilation.
LOG (VoskAPI:ReadDataFiles():model.cc:233) Loading i-vector extractor from model/ivector/final.ie
LOG (VoskAPI:ComputeDerivedVars():ivector-extractor.cc:183) Computing derived variables for iVector extractor
LOG (VoskAPI:ComputeDerivedVars():ivector-extractor.cc:204) Done.
LOG (VoskAPI:ReadDataFiles():model.cc:266) Loading HCL and G from model/graph/HCLr.fst model/graph/Gr.fst
LOG (VoskAPI:ReadDataFiles():model.cc:287) Loading winfo model/graph/phones/word_boundary.int
ERROR (VoskAPI:ReadConfigFile():parse-options.cc:462) Cannot open config file: spk-model/mfcc.conf
terminate called after throwing an instance of 'kaldi::KaldiFatalError'
  what():  kaldi::KaldiFatalError
Aborted (core dumped)

此应用程序接口与另一个名为Kaldi的库一起工作,例如,来自./test_vosk_speaker的错误可能暗示与它相关的问题(这很奇怪,因为python工作!)。我仍然在努力学习linux,但我真的不知道去哪里寻找这些东西,如果有人能帮助我,那将是非常有帮助的。提前感谢!

如果它对编译test_vosk.c的Makefile有帮助的话,它的内部是这样的

代码语言:javascript
运行
复制
INC_DIR=../src
CFLAGS=-I../src
LDFLAGS=-L../src -lvosk -ldl -lpthread -Wl,-rpath=../src

all: test_vosk test_vosk_speaker

test_vosk: test_vosk.o
    g++ $^ -o $@ $(LDFLAGS)

test_vosk_speaker: test_vosk_speaker.o
    g++ $^ -o $@ $(LDFLAGS)

%.o: %.c
    g++ $(CFLAGS) -c -o $@ $<

clean:
    rm -f *.o *.a test_vosk test_vosk_speaker

为了运行该脚本,需要将一个model放在test_vosk.c的同一目录下的一个文件夹中,但如果您不这样做并运行./test_vosk,它将找不到该模型,并且出现以下错误:

代码语言:javascript
运行
复制
LOG (VoskAPI:ReadDataFiles():model.cc:206) Decoding params beam=13 max-active=7000 lattice-beam=6
LOG (VoskAPI:ReadDataFiles():model.cc:209) Silence phones 1:2:3:4:5:6:7:8:9:10
ERROR (VoskAPI:ReadConfigFile():parse-options.cc:462) Cannot open config file: model/mfcc.conf
terminate called after throwing an instance of 'kaldi::KaldiFatalError'
  what():  kaldi::KaldiFatalError
Aborted (core dumped)
EN

回答 1

Stack Overflow用户

发布于 2021-07-16 20:20:56

我需要将python/exampe/test.wav放到/c文件夹中。我希望这能对将来的人有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68406021

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档