科大讯飞离线命令词识别-Linux平台
首先需要说明的是使用科大讯飞的各种SDK都是免不了去注册的,所以首先老老实实按照步骤去注册。
-
在科大讯飞的官网上找到离线命令词识别,然后下拉选择Linux的SDK
-
根据说明文档,可以调用sh脚本文件快速运行demo程序。
进入sdk内samples/asr_offline_sample目录source 64bit_make.sh或32bit_make.sh, 视系统位数选择
运行成功后进入sdk bin目录下cd …/…/bin/,运行./asr_offline_sample即可看到运行结果 -
我们运行64位的脚本文件,然后进入到bin可执行文件目录下,运行多出来的可执行文件
asr_offline_sample
,然后你有可能会报错不过没关系,找不到.so文件而已,我们给这个文件添加其搜索路径。
- 第一种方法是用ln将需要的so文件链接到/usr/lib或者/lib这两个默认的目录下边:
ln -s /home/zachery/repository/xfei/libs/x64/*.so /usr/lib #提示权限不够就使用sudo sudo ldconfig
- 第二种方法是修改LD_LIBRARY_PATH,我使用的是这种方法
export LD_LIBRARY_PATH=/home/zachery/repository/xfei/libs/x64 sudo ldconfig #在sh脚本文件中其实也有这句话,大概是因为没有更高配置的原因?
- 第三种方法是修改/etc/ld.so.conf,然后刷新
sudo gedit /etc/ld.so.conf #添加路径,lib文件 sudo ldconfig
之后应该就能够正常运行demo了,其实科大讯飞的其他sdk也都很好运行。运行结果:
-
根据demo创建自己的程序
-
创建一个demo文件夹
-
将例程的
bin
,include
,libs
三个文件夹复制到demo文件夹中。这里以samples
里的asr_offline_record_sample
为例,将其中的所有.c
和.h
文件全部复制到创建的demo文件夹中。 -
再将
Makefile
复制过来,然后改一些东西,一种两个地方:题外话:科大讯飞如果能给CMakeLists.txt文件就更好了
#common makefile header #改这三个路径,根据自己创建的文件夹目录结构来修改 DIR_INC = include DIR_BIN = bin DIR_LIB = libs #这个TARGET是最后输出的可执行文件的名字 TARGET = demo1 BIN_TARGET = $(DIR_BIN)/$(TARGET) CROSS_COMPILE = CFLAGS = -g -Wall -I$(DIR_INC) ifdef LINUX64 LDFLAGS := -L$(DIR_LIB)/x64 else LDFLAGS := -L$(DIR_LIB)/x86 endif LDFLAGS += -lmsc -lrt -ldl -lpthread -lasound -lstdc++ OBJECTS := $(patsubst %.c,%.o,$(wildcard *.c)) $(BIN_TARGET) : $(OBJECTS) $(CROSS_COMPILE)gcc $(CFLAGS) $^ -o $@ $(LDFLAGS) %.o : %.c $(CROSS_COMPILE)gcc -c $(CFLAGS) $< -o $@ clean: @rm -f *.o $(BIN_TARGET) .PHONY:clean #common makefile foot
如果报错说找不到.so文件,参照上面的解决方案。
emmm,其实我觉得大可不必这样,可以直接在原例程的.c文件里修改不是更加的方便吗。都可以。
-
-
发现了一个意外的惊喜,关键词提取sdk是离线模型。科大讯飞的语音听写是在线的模型,而科大讯飞的语音合成都是在线的模型,离线的模型需要付费,倒是可以申请免费试用。
-
总结一下,命令词识别我认为在一些简单的人机交互上还是很有应用价值的,大可一试,不过需要首先学会BNF规则。想要更好的体验可以去尝试以下科大讯飞的AIUI人机交互。