目的

基于学习和小项目开发场景的需求,本文章对讯飞开放平台(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. 【转】POJ 1177 Picture(1)
  2. Java反射机制demo(四)—获取一个类的父类和实现的接口
  3. 神策数据入选《2020 爱分析·数据智能厂商全景报告》
  4. oracle指令df,怎么使用df命令查看Linux磁盘空间?
  5. CODE[VS] 3411 洪水
  6. 大学4年毕业后我是如何还清的助学贷款。
  7. 点云 高斯 曲率matlab,计算三维散乱点云的曲率,包括主曲率,高斯曲率和平均曲率...
  8. 刷爆了!国企33岁程序员年入40w,直言:想降薪进阿里钻研技术
  9. Exchange-统计一年新增的邮箱数
  10. 鼠标右键没有word、excel/右键不能新建word、ppt等office
  11. 今日头条推荐算法相关博客集合
  12. 怎么注册自定义域名Email.cn邮箱?
  13. 页面提示“百度未授权使用地图API,可能是因为您提供的密钥不是有效的百度LBS开放平台密钥,或此密钥未对本应用的百度地图JavaScriptAPI授权。您可以访问如下网址了解如何获取有效的密钥:ht”
  14. ​ SequoiaDB 简介​,巨杉数据库整体介绍
  15. Http超文本传输协议的特点
  16. 【Proteus】动态数码管显示
  17. 中国汽车内饰皮革行业运行现状及经营战略建议报告2022年版
  18. 用java调用oracle存储过程和函数
  19. 从事互联网经营就要办理icp许可证吗
  20. 华为无线三层无线简单配置

热门文章

  1. 主流杀毒软件引擎分析
  2. 怎么爱护眼睛保护视力?补充光照的护眼台灯
  3. 【分布式架构的原理】淘宝的演进过程
  4. win下Python3.7+pip+Ipython安装
  5. unity编辑器筛选或修改资源属性
  6. 【IDE-Visual Studio】无法启动程序 xxx exe 由于应用程序配置不正确,未能启动此应用程序
  7. 概率论与数理统计慕课答案(郑州轻工业大学)
  8. visual studio 2010 怎么显示行号
  9. 运营商大数据,装修公司怎么找到精准的客户?(适用于所有电销公司)
  10. [go学习笔记.第十六章.TCP编程] 3.项目-海量用户即时通讯系统-redis介入,用户登录,注册