使用Java编写一个与图灵机器人进行对话的工具。
但图灵机器人只支持文本对话,并不支持语音交互,所以本程序运用了第三方库百度语音识别/合成,来实现语音交互。
我们还可以将下载好的音乐放入指定文件夹,进行简单的配置后还能点歌。
1.登录图灵机器人官网:http://www.turingapi.com/,完成注册、身份认证、创建机器人。一般一到两天后就能身份审核成功,创建好机器人之后就会生成自己的apikey:
2.登录百度智能云官网:http://ai.baidu.com/,右上角“控制台”进入登录界面。登录后点击“语音技术”、“创建应用”,应用创建好后就是呢过程自己的AppID,API Key,Secret Key:
3.完成以上准备工作就可以开始编码了。我们可以参考相关文档,以及下载SDK。不同语言有不同的SDK,根据自己所需来下载。我这里使用的Java语言编写,所以下载的是“识别、合成 RESTful API JAVA SDK”。
4.以下就是相关代码:
Record类完成录音、播放音频文件:
package com.feng.robot;
import javazoom.jl.decoder.JavaLayerException;
import javazoom.jl.player.Player;
import java.io.*;
import java.util.Scanner;
import javax.sound.sampled.*;
/**
* 录音record(),录音完毕后将音频文件保存到指定文件夹中
* 播放音频文件play(音频文件路径)
*/
public class Record {
private static AudioFormat audioFormat;
static TargetDataLine targetDataLine;
public File record() {
System.out.println("想聊天,请按y。结束讲话,请按n。");
Scanner input = new Scanner(System.in);
String Sinput = input.next();
if(Sinput.equals("y")){
System.out.println("讲话中……");
captureAudio();//调用录音方法
}
Scanner input_2 = new Scanner(System.in);
String Sinput_2 = input_2.next();
if(Sinput_2.equals("n")){
targetDataLine.stop();
targetDataLine.close();
System.out.println("结束讲话。");
}
//结束录音后便在指定路径生成一个record.wav文件
File audioFile = new File("F:\\record.wav");
return audioFile;
}
//录音方法
public void captureAudio(){
try {
audioFormat = new AudioFormat(16000,16,1,true,false);
DataLine.Info dataLineInfo = new DataLine.Info(TargetDataLine.class, audioFormat);
targetDataLine = (TargetDataLine) AudioSystem.getLine(dataLineInfo);
new CaptureThread().start();//开启线程