与图灵机器人进行语音对话(Java)(百度语音识别/合成)

本文介绍如何使用Java结合图灵机器人和百度语音识别/合成技术,实现语音对话并支持点歌功能。通过图灵机器人官网和百度智能云获取必要的API,然后编写Record、SpeechRec、TulingRobot和RobotYuanYuan类进行录音、播放、识别和对话操作。在运行程序时,可以通过说出歌名来播放音乐,说'退出'结束聊天。虽然当前程序存在播放音乐时无法中断的问题,但未来可扩展实现中途停止音乐和命令执行等功能。
摘要由CSDN通过智能技术生成

使用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();//开启线程
     
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值