admin管理员组

文章数量:1794759

Java实现智能对话机器人自动聊天+语音秒回

Java实现智能对话机器人自动聊天+语音秒回

技术说明:

1. 调用青云课人工智能聊天API接口

请求地址api.qingyunke/api.php
请求方式GET字符编码utf-8
请求示例api.qingyunke/api.php?key=free&appid=0&msg=你好

2. 下载jacob.jar实现文本转语音

需要资源或代码有疑问的可加我的技术讨论q群1005611884

3. 使用Java Swing实现简单的聊天界面

【完整代码】

public class Demo { public static void main(String[] args){ JFrame jf = new JFrame("深夜聊天室"); jf.setSize(580, 600); jf.setLocation(150, 150); jf.add(new MyPanel()); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); jf.setResizable(false); jf.setVisible(true); } } public static class MyPanel extends JLayeredPane{ ArrayList<String> allMsg = new ArrayList<>(); JTextArea jTextRecode = new JTextArea(); public MyPanel(){ JTextArea jTextMsg = new JTextArea(); jTextMsg.setBorder(new BevelBorder(1,Color.gray,Color.gray)); jTextMsg.setLocation(20,400); jTextMsg.setSize(500, 100); this.add(jTextMsg); JButton btnSend = new JButton(); btnSend.setText("发送"); btnSend.setBounds(450,500,70,30); btnSend.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent e) { String me =jTextMsg.getText(); jTextMsg.setText(""); allMsg.add(me); jTextRecode.setText(listTostr(allMsg)); repaint(); new Thread(){ @Override public void run() { URL url = null; try { url = new URL("api.qingyunke/api.php?key=free&appid=0&msg="+me); InputStream is = url.openStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String content = br.readLine(); JSONObject obj = JSONObject.fromObject(content); content = obj.getString("content"); allMsg.add("菲菲:"+content); jTextRecode.setText(listTostr(allMsg)); repaint(); speak(content); } catch (MalformedURLException ex) { ex.printStackTrace(); } catch (IOException ex) { ex.printStackTrace(); } } }.start(); } }); this.add(btnSend); jTextRecode.setBorder(new BevelBorder(1,Color.gray,Color.gray)); jTextRecode.setLocation(20,20); jTextRecode.setFont(new Font("楷体",0,18)); jTextRecode.setSize(500, 400); this.add(jTextRecode); } //集合转字符串 public static String listTostr(ArrayList list){ String content = ""; for(int i=0;i<list.size();i++){ content=content+list.get(i)+"\\n"; } return content; } //实现文字转语音 public static void speak(String content){ ActiveXComponent sap = new ActiveXComponent("Sapi.SpVoice"); Dispatch sapo = sap.getObject(); try { // 音量 0-100 sap.setProperty("Volume", new Variant(100)); // 语音朗读速度 -10 到 +10 sap.setProperty("Rate", new Variant(3)); // 执行朗读 System.out.println("菲菲:"+content); Dispatch.call(sapo, "Speak", new Variant(content)); } catch (Exception e) { e.printStackTrace(); } finally { sapo.safeRelease(); sap.safeRelease(); } } }

需要资源或代码有疑问的可加我的技术讨论q群1005611884 

本文标签: 机器人语音智能java