swig .so java,Java通過SWIG調用科大訊飛語音SDK實現離線命令詞識別

前言

項目要求在離線環境下實現基本的命令詞識別,並且需要接入后台進行命令詞意圖識別,而后台使用Java編寫,簡單來說就是Java平台下的中文離線語音識別。剛開始調研時我試用了Sphinx4[1],但是效果一般,然后我把目光轉向國內的語音識別平台如科大訊飛[2]。科大訊飛的功能還算齊全,但最大的問題就是離線語音識別不支持Java平台,只有C/C++版本。所以我需要實現一個Java與C進行通信的接口。Java調用C函數最普遍的方法可能是JNI(Java Native Interface)。然而我認為這個方法過於復雜,需要自己定義接口。還有其他方法如JNA[3](Java Native Access),然而我嘗試后均以失敗告終,最后我嘗試了SWIG[4]。SWIG是個幫助使用C或者C++編寫的軟件能與其它各種高級編程語言進行嵌入聯接的開發工具,簡單高效滿足需求。

正文

方案選擇

Java+SWIG+科大訊飛,平台為Ubuntu 17.04

准備工作

從訊飛開放平台下載離線命令詞識別SDK,得到以下文件

39af2f90b1661cf7557b47cf86d60050.png

根據doc文件夾下的MSC_Novice_Manual_for_Linux.pdf建立一個demo工程,確認樣例運行沒有問題

從網上下載SWIG的安裝包或者使用Ubuntu自帶apt-get獲取SWIG。sudo apt install swig

STEP1

創建鏈接文件如asr.i,文件中定義接口

vim asr.i

/* File: asr.i */

%module asr

%{

int main();

%}

int main();

並使用SWIG輸出asr.java,asrJNI.java和asr_wrap.c

swig swig -java asr.i

注意:如果你需要將此文件定義在一個包中如util那么此命令應加上-package參數

swig -java -package util.asr asr.i

STEP2

編譯所有.c文件包括剛才生成的asr_wrap.c。

注意:編譯asr_wrap.c時需要頭文件jni.h和jni_md.h。這兩個頭文件可以在Java環境安裝目錄下找到,我的路徑為

/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/

/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/linux

使用gcc命令分別編譯

gcc -fPIC -c asr_wrap.c -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/ -I/usr/lib/jvm/java-1.8.0-openjdk-amd64/include/linux

gcc -fPIC -c -I../include asr_record_sample.c -o asr_sample.o

使用ld命令鏈接所有.o文件

ld -G -I../include asr_wrap.o asr_sample.o -o ../libs/x64/libasr.so -L../libs/x64 -lmsc -lrt -ldl -lpthread -lasound

最后得到libasr.so文件

STEP3

編寫簡單的Java程序進行測試

vim run.java

/*run.java*/

public class run {

static {

System.loadLibrary("asr");

}

public static void main(String argv[]) {

asr.main();

}

}

編譯並運行Java程序

javac *.java

java run

結語

整個過程發現除了編譯的部分繁瑣了些,其他實現還是比較容易,通過SWIG實現Java和C之間的通訊是一個比較可行的解決方案。

Reference

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
智慧校园信息化系统解决方案旨在通过先进的信息技术,实现教育的全方位创新和优质资源的普及共享。该方案依据国家和地方政策背景,如教育部《教育信息化“十三五”规划》和《教育信息化十年发展规划》,以信息技术的革命性影响为指导,推进教育信息化建设,实现教育思想和方法的创新。 技术发展为智慧校园建设提供了强有力的支撑。方案涵盖了互连互通、优质资源共享、宽带网络、移动APP、电子书包、电子教学白板、3D打印、VR虚拟教学等技术应用,以及大数据和云计算技术,提升了教学数据记录和分析水平。此外,教育资源公共服务平台、教育管理公共服务平台等平台建设,进一步提高了教学、管控的效率。 智慧校园系统由智慧教学、智慧管控和智慧办公三大部分组成,各自具有丰富的应用场景。智慧教学包括微课、公开课、精品课等教学资源的整合和共享,支持在线编辑、录播资源、教学分析等功能。智慧管控则通过平安校园、可视对讲、紧急求助、视频监控等手段,保障校园安全。智慧办公则利用远程视讯、无纸化会议、数字会议等技术,提高行政效率和会议质量。 教育录播系统作为智慧校园的重要组成部分,提供了一套满足学校和教育局需求的解决方案。它包括标准课室、微格课室、精品课室等,通过自动五机位方案、高保真音频采集、一键式录课等功能,实现了优质教学资源的录制和共享。此外,录播系统还包括互动教学、录播班班通、教育中控、校园广播等应用,促进了教育资源的均衡化发展。 智慧办公的另一重点是无纸化会议和数字会议系统的建设,它们通过高效的文件管理、会议文件保密处理、本地会议的音频传输和摄像跟踪等功能,实现了会议的高效化和集中管控。这些系统不仅提高了会议的效率和质量,还通过一键管控、无线管控等设计,简化了操作流程,使得会议更加便捷和环保。 总之,智慧校园信息化系统解决方案通过整合先进的信息技术和教学资源,不仅提升了教育质量和管理效率,还为实现教育均衡化和资源共享提供了有力支持,推动了教育现代化的进程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值