一直想做一个可以录音的可执行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. Ubutnu16.04安装pytorch

    1.下载Anaconda3 首先需要去Anaconda官网下载最新版本Anaconda3(https://www.continuum.io/downloads),我下载是是带有python3.6的An ...

  2. JS延时一秒执行

    //JS延时一秒执行 setTimeout(function(){ window.history.go(0); }, 1000);

  3. asp.net使用qq邮箱发送邮件

    using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...

  4. 【Android Developers Training】 66. 添加动画

    注:本文翻译自Google官方的Android Developers Training文档,译者技术一般,由于喜爱安卓而产生了翻译的念头,纯属个人兴趣爱好. 原文链接:http://developer ...

  5. 进程间通信之AIDL

    一.引言 AIDL是android内部进程通信接口的描述语言,是实现跨进程方法调用的一大利器,其中Binder和Messenger的实现机制都是AIDL. 二.使用下面结合示例说明其使用过程: 本次示 ...

  6. HDOJ 1260 DP

    Tickets Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  7. 在线用户数-Constants

    package com.pb.news.constants; public class Constants { public static int ONLINE_USER_COUNT=0;//在线用户 ...

  8. js实现单张图片(或者多张)的预览功能

      这个是预览单张图片的,如果要预览多张图片,改下面红色标记的地方就好了 <html> <head> <meta http-equiv="Content-Typ ...

  9. webgl自学笔记——光照

    在Webgl中我们使用顶点着色器和片元着色器来为我们的场景创建光照模型.着色器允许我们使用数学模型来控制如何照亮我们的场景. 最好有线性代数的相关知识. 本章中: 光源.法线.材料 光照和着色的区别 ...

  10. 关于abp中使用的sweetalert对话框组件的confirm确认对话框中的一个坑

    今天修改了一个功能,限制删除用户,在删除的时候不满足条件的时候提示用户原因,使用的sweet alert组件. abp框架前端集成了sweet alert 对http请求的error做了全局处理,我在 ...