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

目的

        基于学习和小项目开发场景的需求,本文章对讯飞开放平台(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() {

			@Override
			public 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机器人响应结果 --> 将返回内容合成进行播放

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值