Linux下使用cmake+Clion搭建讯飞语音项目
文章目录
起因
本人是linux新手,最近接手了一个项目,需要在linux嵌入式开发板搭建讯飞语音识别项目,在开发过程中遇到了官方SDK不方便编译调试的一些问题,经过一段时间的探索找到了解决方案,在这里分享下。
讯飞语音linuxSDK包简介
讯飞语音linuxSDK包含讯飞语音识别的API接口,基于linux以“云+端”的形式向开发者提供语音合成、语音识别、语音唤醒、语义理解、人脸识别等多项服务。
使用SDK中遇到的困难
由于官方给的文档教程使用的方法是通过运行脚本source.sh,调用Makefile在项目根目录的bin文件夹中自动生成可执行文件。再运行该此执行文件使程序在终端中运行。这个过程有如下问题:
- Makefile语法复杂且编写麻烦,如何快速地更改项目的编译结构,如增加一个新的源文件并进行编译?
- 如何对程序进行调试?
综上,这些问题对开发新手并不好友好。SDK提供的例程缺少一个适合集成开发的结构,此时我们需要引入一个工具完成开发环境的搭建。
如何解决
我们可以通过cmake构建讯飞语音项目,并使用集成IDE-Clion进行调试。
cmake简介
CMake是一个开放源代码,跨平台的工具系列,旨在构建,测试和打包软件。 用于使用简单平台和独立于编译器的配置文件来控制软件编译过程,并生成可在您选择的编译器环境中使用的本机makefile和工作区。
cmake的官方网站是https://cmake.org
使用CLion快速搭建cmake项目
CLion是款专为开发C/C++所设计的跨平台IDE,支持从现有工程文件夹中创建cmake项目。
安装CLion
学生党可以通过学生认证白嫖Clion,附上白嫖教程(/doge) 白嫖教程
搭建工程具体步骤
-
新建目录IflycmakeTest,将SDK中的bin,include,libs等相关编译文件复制到IflycmakeTest目录下,
-
在新建目录下添加main.c。
-
(重点来了),使用CLion从sources中创建新的cmake project。此时原有的文件夹中出现cmake-build-debug文件夹和CMakeLists文件。我们重点关注这个CMakeLists
此时产生CMakeLists文件如下:
cmake_minimum_required(VERSION 3.17) project(IflycmakeTest C) set(CMAKE_C_STANDARD 11) include_directories(include) include_directories(include/aiui) add_executable(IflycmakeTest include/aiui/AIUI.h include/aiui/AIUICommon.h include/aiui/AIUIConstant.h include/aiui/AIUIErrorCode.h include/aiui/AIUIType.h include/msp_cmn.h include/msp_errors.h include/msp_types.h include/qise.h include/qisr.h include/qivw.h include/qtts.h main.c)
编辑CMakeLists
在第五行添加
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) include_directories(./libs/x64) link_directories(./libs/x64)
设置可执行文件在bin目录中输出并添加链接库的查找路径
注意!如果是32位的系统这里需要改成x86
在末行添加
target_link_libraries(iflytek_awaken_asr msc -lpthread -lm -lasound)
完成对各链接库的添加
-
添加main文件的内容
以语音听写为例:
将XunFeiSDK/samples/iat_online_sample文件夹中的iat_online_sample.c内全部文本复制到main.c
-
保存后点击run运行。
如果不能运行,请在终端输入下列指令安装库
sudo apt-get install alsa-oss sudo apt-get install libasound2-dev
成功后程序将在控制台中正常运行语音听写的程序,并可以通过CLion调试。
结语
完成上述操作便可得到linux下讯飞语音项目的模板,如果自己需要添加新的源文件,请参考cmake的规则更改CMakeLists完成对项目的匹配。
以上便是Linux下使用cmake搭建讯飞语音项目的具体方法,与学习技术的大家共勉。
最后,如果觉得文章有帮助的话请帮忙点个赞呗。