一直想做一个可以录音的可执行JAVA APP,实现自然语言对话。

第一步就是实现把录音转成语义,比如你对着话筒说"你好",你获取回答相应的回复。你对着话筒说“今天的天气”,能够回复你今天的天气,或者至少告诉你,你输入的语句含义是“查今天的天气”。

我决定用欧拉蜜语义开放平台的内置功能------智能对话模块做一个实验。

代码下载:JAVA SDK--windows录音+语音识别实例源码

源码解析

1. 在欧拉蜜开放平台上注册,然后进入创建自己的应用,并在该应用中配置模块nonsense.

在这里不具体介绍欧拉蜜开发平台的使用知识,可参考用欧拉蜜语言开发平台实现智能客服开发攻略

个人小程序实现自然语言对话代码解析

2. 下载JAVA SDK

https://cn.olami.ai/wiki/?mp=sdk&content=sdk/java/reference.html

直接下载maven工程java sdk的源代码,这样可以了解一下例子中是如何调用SDK的。

把解约后的olami-java-client-sdk-master文件夹放在你希望放置maven工程的地方,另外确认你的JDK和MAVEN函数已经安装好,我使用的是JDK1.8和MAVEN 3.5, eclipse使用luna版本,打开工程之后,import maven工程


然后错误出现了:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.1:jar (attach-javadocs) on project langpack: MavenReportException: Error while creating archive:
[ERROR] Exit code: 1 - java.lang.StringIndexOutOfBoundsException: String index out of range: 50
[ERROR] at java.lang.String.substring(String.java:1907)
[ERROR] at sun.net.www.ParseUtil.unescape(ParseUtil.java:164)
[ERROR] at sun.net.www.ParseUtil.decode(ParseUtil.java:200)
[ERROR] at sun.misc.URLClassPath$FileLoader.<init>(URLClassPath.java:1016)
[ERROR] at sun.misc.URLClassPath$3.run(URLClassPath.java:357)
[ERROR] at sun.misc.URLClassPath$3.run(URLClassPath.java:352)
[ERROR] at java.security.AccessController.doPrivileged(Native Method)
[ERROR] at sun.misc.URLClassPath.getLoader(URLClassPath.java:351)

我尝试了以下方法:

------把JDK修改为1.7版本

------把MAVEN版本修改成3.0版本

------把eclipse的eclipse.ini -Xmx 改小

------把eclipse的java环境,window->preferences->java->install JREs 修改为JDK 文件包

------检查pom.xml的配置,务必添加:

<configuration>
<additionalparam>-Xdoclint:none</additionalparam>
</configuration>

反正能测试的方式统统试了,没有用。然后使用公司的电脑,同样的配置,没有任何问题。

后来想是不是我的路由器问题,导致包没有下好,因为我是maven菜鸟啊,开始不知道还有包地址可以查询,于是我按照报错的地址,在我的maven本地工程里找:

C:\Users\Anna\.m2\repository\org\apache\maven\plugins  ,果然没看到此包。幸好家里还有一个路由器,换了以下。然后把C:\Users\Anna\.m2\repository\里的内容全部清空,

重新打开工程编译,或者直接在\...\olami-java-client-sdk-master\olami-java-client-sdk-master 的路径下使用控制台运行mvn install -P all ,整个SDK包就可以运行正常。

所以很多网友说的jdk1.8不支持maven,这种说法是错的,

后面我又有eclipse 的neno版本进行测试,仍然可以正常使用。我想公司的电脑之所以好用,应该是网络可以下载正常。如果你的网不好用,可以在maven配置里设置代理。

3.  运行sdk 源代码里的例子

因为我要测试语音识别,所以选择例子 speech-input-example,直接把SpeechInputExample.java里的appKey和appSerect替换成欧拉蜜平台上自己创建应用的值即可,然后在文件中右键run as->java Application ,   就可以看到输出了。

这个输出的音频源是工程下面的sample.wav. 你可以点开听一听,内容是"你好"。

这个例子展示的是如何将一个完整的wav通过欧拉蜜java sdk转化为语义的过程。

4 windows平台使用java代码进行录音:

实现功能:在java应用程序中调用windows环境的麦克风进行录音,根据欧拉蜜语音识别录音要求 ,wav格式的音频要求WAV 格式的 PCM 录音数据,单声道(mono)、16K 采样率(16 KHz Sample Rate)、16 bits 位深(Bit Resolution)。

代码是示例代码中的

\\olami-java-client-sdk-master\olami-java-client-sdk-master\examples\speech-input-example\src\main\java\ai\olami\example\util\Microphone.java和DataBuffer.java。

5 为录音数据添加wav头

直接录得音频数据必须加上WAV头才能送到sdk接口,加wav头的代码为

\\olami-java-client-sdk-master\olami-java-client-sdk-master\examples\speech-input-example\src\main\java\ai\olami\example\util\WaveFileWriter.java

6 将wav音频使用欧拉蜜语音识别平台识别

示例代码中的 \\olami-java-client-sdk-master\olami-java-client-sdk-master\examples\speech-input-example\src\main\java\ai\olami\example\SpeechInputExample.java。

代码下载:欧拉蜜语音识别JAVA SDK包实例源码

使用语音识别JAVA SDK 的MAVEN源代码制作语音控制智能家居Java APP-------MAVEN工程加载问题解决的更多相关文章

  1. Android开发SDK接入机智云,智能家居实现APP远程控制多设备

    代码地址如下:http://www.demodashi.com/demo/12847.html 一.前言. 此框架只用了一周星期做了出来,因为对机智云的框架比较熟悉了 !期间SDK初始化出了问题,去咨 ...

  2. Java的cmd配置(也即Java的JDK配置及相关常用命令)——找不到或无法加载主类 的解决方法

    Java的cmd配置(也即Java的JDK配置及相关常用命令) ——找不到或无法加载主类  的解决方法 这段时间一直纠结于cmd下Java无法编译运行的问题.主要问题描述如下: javac 命令可以正 ...

  3. ANDROID_MARS学习笔记_S04_009_用java.lang.ref.SoftReference作缓存,android.os.Handler和new Thread异步加载略图片

    一.简介 二.代码流程 1.private Map<String, SoftReference<Drawable>> imageCache = new HashMap<S ...

  4. 项目上有红色感叹号, 一般就是依赖包有问题, remove依赖,重新加载,maven的也行可认删除,自己也会得新加载

    项目上的红色叹号, 要下面提示: "Problems"  里的errors  , 看是什么错误,  一般是由于网络等原因,  依赖没有下载完整,  只有文件名字对了,  内容不全, ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(13)、图层扩展方式加载Google地图

    1.前言 http://mt2.google.cn/vt/lyrs=m@225000000&hl=zh-CN&gl=cn&x=420&y=193&z=9& ...

  6. 使用javassist运行时动态重新加载java类及其他替换选择

    在不少的情况下,我们需要对生产中的系统进行问题排查,但是又不能重启应用,java应用不同于数据库的存储过程,至少到目前为止,还不能原生的支持随时进行编译替换,从这种角度来说,数据库比java的动态性要 ...

  7. Java 类在 Tomcat 中是如何加载的?

    作者 :xingoo https://www.cnblogs.com/xing901022/p/4574961.html 说到本篇的Tomcat类加载机制,不得不说翻译学习Tomcat的初衷. 之前实 ...

  8. Q开头的类找不到,无法加载插件:com.mysema.maven:apt-maven-plugin

    http://www.jspxcms.com/documentation/297.html 如果出现无法加载com.mysema.maven:apt-maven-plugin插件的情况,通常是由于ma ...

  9. jvm系列(一):java类的加载机制

    java类的加载机制 1.什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装 ...

随机推荐

  1. Solr6.6 创建core

    原文:https://github.com/x113773/testall/issues/7 1. 首先在solr-6.6.0目录运行命令,启动solr:`Linux: $ bin/solr star ...

  2. JAVA基础——编程练习(一)

    java编程练习(一) 编程题目: 请根据所学知识,编写一个 JAVA 程序,实现输出考试成绩的前三名. 要求: 1. 考试成绩已保存在数组 scores 中,数组元素依次为 89 , -23 , 6 ...

  3. python实现简单的循环购物车小功能

    python实现简单的循环购物车小功能 # -*- coding: utf-8 -*- __author__ = 'hujianli' shopping = [ ("iphone6s&quo ...

  4. Android --> 常见控件

    1.TextView  主要用于界面上显示一段文本信息 2.Button  用于和用户交互的一个按钮控件 //为Button点击事件注册一个监听器public class Click extends ...

  5. BOM浏览器对象模型下面几个比较实用的方法

    location对象 location.href-- 返回或设置当前文档的URL location.search -- 返回URL中的查询字符串部分.例如 http://www.dreamdu.com ...

  6. 修改system 密码

    运行cmd命令行 录入 sqlplus /nolog  无用户名登录 conn /as sysdba  连接到数据本地数据 alter user system identified by passwo ...

  7. Educational Codeforces Round 21 A-E题题解

    A题      ............太水就不说了,贴下代码 #include<string> #include<iostream> #include<cstring& ...

  8. Chrome浏览器扩展开发系列之十:桌面通知Notification

    Desktop Notification也称为Web Notification,是在Web页面之外,以弹出桌面对话框的形式通知用户发生了某事件.Web Notification于2015.9.10成为 ...

  9. Android服务端的设计

    1.创建自己的MyServletContextListener.java: package yybwb; import java.net.ServerSocket; import javax.serv ...

  10. IIS 反向代理 golang web开发

    一. beego 开发编译 bee run 后会编译成 exe文件 编译生成后发布文件结构为 cmd 运行 cd D:/run beegoDemo.exe run 默认配置端口 不能为 80 跟iis ...