目的

基于学习和小项目开发场景的需求,本文章对讯飞开放平台(https://www.xfyun.cn)中关于语音能力(语音合成、语音识别)进行了一定程度的封装,通过引入封装工具包可以便捷的使用在线合成和在线识别能力。

原理

讯飞开放平台提供了基于WebAPI的开发方式,同时也提供了多个平台的SDK开发,而我需要的仅仅是Java环境下的使用(准确的说是基于Java Swing进行桌面应用开发),所以考虑到SDK中已经集成了本地录音和播放的实现,因此基于JavaSDK进行封装使用更加的方便。

在Java SDK中,涉及到语音处理的核心类是听写对象SpeechRecognizer、听写监听器RecognizerListener和合成对象SpeechSynthesizer、合成监听器SynthesizerListener,主要操作则是通过创建听写对象和合成对象,分别进行初始设置,例如设置合成发声的音量、声调、语速、发音人,之后调用听写对象的startListening和合成对象的startSpeaking方法,传入监听器对象进行过程控制和结果解析。

因此,在本次封装中,将一些参数设置进行了默认处理后,提取出较为常用的方法:设置各种参数、开始合成(发声)、听一句话、持续听等。

使用

为了方便大家使用,封装的工具类以JAR包方式提供(下载地址:ifly_yuyin.jar),并且在JAR包中包含了封装的核心源码供大家阅读,使用过程较为详细,请仔细按照步骤使用:

1、注册讯飞开放平台账号,并创建应用,创建应用后下载Java SDK

注意:经过测试发现SDK中的文件内部绑定了当前的APPID,因此使用本工具包,仍然需要创建自己的应用,并下载属于自己应用的SDK文件。

2、创建Java项目,然后下载JAR包(或者根据后面的核心代码自行封装),将JAR包和下载的SDK中的文件以如下项目结构摆放,并将lib目录中的JAR包添加到项目构建路径中:

3、创建测试类,使用MyYuyin类中的各种静态工具方法,注意:在项目其中时需要初始化一次,调用init方法传入该应用对应的APPID,使用示例如下:

public class TestDemo {public static void main(String[] args) {// !必须要先进行初始化MyYuyin.init("替换为你的应用的APPID");// A.合成功能MyYuyin.setVoice("aisxping"); // 发音人请参考官网“发音人授权管理”MyYuyin.speak("大家好");// B.听一句话String s = MyYuyin.listen();System.out.println("识别到说话内容:" + s);// C.持续听写,为了不阻塞,采用线程方式new Thread(new Runnable() {@Overridepublic void run() {MyYuyin.startKeepListening();while (true) {if (MyYuyin.hasNext()) { // 有识别结果String string = MyYuyin.getFirstListen(); // 获取队列中第一个识别结果System.out.println("识别到说话内容:" + string);} else {try {Thread.sleep(10); // 防止CPU占用过高} catch (InterruptedException e) {e.printStackTrace();}}}}}).start();}
}

后续,可以将相关的方法应用到界面程序中,通过点击按钮,或者后台线程方式灵活应用实现。

扩展

另外,可以继续接入讯飞的AIUI能力平台,通过AIUI的智能机器人能力,可以实现人机交互对话,简单的流程就是:

开启持续监听 --> 识别到说话内容 --> 传递给AIUI机器人 --> 解析AIUI机器人响应结果 --> 将返回内容合成进行播放

科大讯飞语音工具类基于Java SDK的封装使用相关推荐

  1. UrlUtils工具类,Java URL工具类,Java URL链接工具类

    UrlUtils工具类,Java URL工具类,Java URL链接工具类 >>>>>>>>>>>>>>>&g ...

  2. [Google Guava] 2.3-强大的集合工具类:java.util.Collections中未包含的集合工具

    原文链接 译文链接 译者:沈义扬,校对:丁一 尚未完成: Queues, Tables工具类 任何对JDK集合框架有经验的程序员都熟悉和喜欢java.util.Collections包含的工具方法.G ...

  3. Math数学工具类在java中如何使用?

    Math数学工具类在java中如何使用? 一.Math数学工具类是什么? 在处理业务的时候,经常遇到一些有关数学方面的计算,特别是做测绘和监测业务时,显得出现的频率及其多, JDK提供了一个Math类 ...

  4. 分享一个nodejs中koa操作redis的工具类 基于 ioredis

    分享一个node 操作redis的工具类 基于ioredis redis.js const config = require(':config/server.base.config'); const ...

  5. java int to hex_Java字符串转16 进制工具类Hex.java | 学步园

    Java 字符串转 16 进制工具类 Hex.java 实现 16进制 0xfecd .. 和 java 字符串之间的互转换! 如果做开发,通常用户登陆密码都会 mad5(salt + pwd) 然后 ...

  6. java+基于dom4j工具类_基于dom4j的xml映射实体的工具类(java)

    基于dom4j的xml映射实体的工具类(java) 工具是基于dom4j,使用反射使实体属性与xml的标签关联,目前兼容List,Map后续更新兼容. 历史更新: 发布-2019-6-22 增加注解@ ...

  7. Java开发中的工具类——基于JedisPool的Redis工具类

    目录 一.Maven依赖 二.Redis配置类 三.使用@Cacheable注解进行数据缓存 四.自定义Redis工具类及使用 4.1 序列化工具类 4.2 redis客户端工具类 4.3 redis ...

  8. java开发excel导入导出工具类基于EasyExcel

    一.工具类 import com.alibaba.excel.EasyExcel; import com.alibaba.excel.write.style.column.LongestMatchCo ...

  9. 基于java SDK语音识别技术概述与调研

    语音识别技术概述与调研 语音识别已经成为人工智能应用的一个重点,通过语音控制设备简单方便,在各个领域兴起了研究应用的热潮.数据.算法及芯片是语音识别技术的3个关键,大量优质的数据.精准快速的算法和高性 ...

最新文章

  1. Xamarin Android SDK无法更新的解决办法
  2. python修改字典某一项的函数_python – 更改字典作为函数的全局范围
  3. 内核空间镜像攻击揭秘:ARM 硬件特性,竟能开启安卓8终端的上帝模式?
  4. 计算机专业特殊人才上大学,上海交通大学计算机科学与工程系(CSE)
  5. eclipse常用的快捷键
  6. 力扣刷题【20,21,26,27,35】
  7. 怎么用python编程前二n-1项的等差数列的和_python— 等差数列末项计算方式
  8. 第二弹!谷歌大脑2017总结下篇:Jeff Dean梳理6大领域研究
  9. 和为s的两个数字 - 双指针
  10. cannot import name 'StrictRedis' from 'redis'
  11. OmniCppComplete实现C代码自动补全
  12. 慕课《算法分析与设计》山东财经大学李恒武,第二章算法分析 测验题问题梳理答案
  13. 什么是CPS模式盈利?
  14. 服务器设置来电自动重启,电脑来电自动重启怎么样设置
  15. 火车售票系统(设计模式分析)
  16. firefly-rk3288使用USB GADGET实现大容量存储脚本
  17. 【学习笔记】神经内科常用量表总结(文后有下载链接)
  18. 大漠穷秋叫狼哥哥要学好的书
  19. 李开复:未来最重要的不是操作系统 而是浏览器
  20. 测评Mimick模型对词向量重构效果

热门文章

  1. 小程序setData设置数据超过1024kb页面不渲染
  2. JavaSE笔记(二)Java对象和多态
  3. 深度学习中文版-Deep Learning-Yoshua Bengio.pdf
  4. 【连载】两百行Rust代码解析绿色线程原理(二)一个能跑通的例子
  5. 软件下载安装卸载及文件夹管理
  6. Python的未来如何,用数据来告诉你答案
  7. Fecshop的安装以及配置
  8. 基于Python回归模型的自相关性分析
  9. 机器学习基础 - [第四章:正则化](3)线性回归的正则化
  10. 树莓派4B ubuntu20.04 python驱动光电传感器实现计数 教程