博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用Java实现IRC文本到语音转换
阅读量:2401 次
发布时间:2019-05-10

本文共 2989 字,大约阅读时间需要 9 分钟。

导读:
  【聚杰网核心技术】用Java实现IRC文本到语音转换   由于IRC是一个完全实时的聊天系统,所以你将很难从中受益,除非你能密切关注聊天时对话产生的顺序。不幸的是,这将会导致生产力的低下,这就是为什么很多雇主不赞成使用IRC的原因。然而,如果IRC得到了恰当的使用,它能够使雇员与远程的同事们一起高效地工作,不管他们是位于地球的另一端,或者只是在隔壁的大厦。像IRC这样的实时群组聊天系统使组织会议(甚至可以实现视频会议)、提问问题或是商量去哪里吃午餐这样的小事都变得更加容易。  很多老板也许会争辩说,在工作场所提高生产力的最显而易见的方法是完全避免使用IRC。在某些情况下这也许是正确的,但是在很多场合IRC可以是非常有用的。当你使用IRC进行交流时——即使是跟同一办公室中的某个人——在别处的同事将能够看到你们两个谈话的内容。当你不在办公桌旁的时候,你也可以了解同事们在讨论什么。这是电话或常规的点对点聊天系统所不容易实现的两个重要方面。  理想的解决方案是设计一种无需经常查看是否有新消息就可以明了IRC对话的方法。只要你的IRC频道不是很繁忙,那么一个文本语音转换系统将会提供给你优秀的解方案。它会将新消息自动朗读出来,这样你就可以继续工作,只在有绝对必要的时候才转移注意力到IRC上面来。  本文将展示如何建立一个跨平台的IRC机器人(一个自动化的客户端),它使用FreeTTS Java语音合成库来将IRC消息转换成听得见的语音。  FreeTTS库可以在freetts.sourceforge.net下载。为了连接到IRC服务器上,你需要在www.jibble.org/pircbot.php下载PircBot Java IRC API。  当你下载了所需的两个库之后,建立一个lib目录,然后将下列.jar文件拷贝到里面。  ·cmu_time_awb.jar
  ·cmu_us_kal.jar
  ·cmulex.jar
  ·cmutimelex.jar
  ·en_us.jar
  ·freetts.jar
  ·pircbot.jar   现在,写IRC机器人已经变成了一个简单的任务,因为这些库将为你完成多数的困难工作。建立一个名为SpeechBot.java的文件:
  import org.jibble.pircbot.*;
  import com.sun.speech.freetts.*;
  import com.sun.speech.freetts.audio.*;
  import javax.sound.sampled.*;
  import java.io.File;public class SpeechBot extends PircBot { private Voice voice;
  
  public SpeechBot(String name) {
  setName(name); // Choose the voice for the speech synthesizer.
  // 选择语音合成器的话音
  String voiceName = "kevin16";
  VoiceManager voiceManager =
  VoiceManager.getInstance();
  voice = voiceManager.getVoice(voiceName); if (voice == null) {
  System.out.println("Voice not found.");
  System.exit(1);
  } voice.allocate(); // Set up the output format.
  // 设置输出格式
  AudioPlayer voicePlayer = new JavaClipAudioPlayer();
  voicePlayer.setAudioFormat(new AudioFormat(8000,
  16, 1, false, true));
  voice.setAudioPlayer(voicePlayer);
  }
  
  public void onMessage(String channel, String sender,
  String login, String hostname, String message) {
  // Send all IRC messages to the voice
  synthesizer.
  // 发送所有的IRC消息到语音合成器
  message = message.trim();
  String input = sender + " on " + channel + "
  says: " + message;
  voice.speak(input);
  } public static void main(String[] args) throws
  Exception {
  if (args.length <2) {
  System.out.println("Usage: java SpeechBot
  ");
  System.exit(1);
  }
  SpeechBot bot = new SpeechBot("SpeechBot");
  bot.connect(args[0]);
  bot.joinChannel(args[1]);
  }}
  现在可以编译IRC机器人了。要确定在类路径中包含了必需的.jar文件:  javac -classpath .;./lib/pircbot.jar;./lib/freetts.jar SpeechBot.java  注意这种指定类路径的方式只在Windows系统下有效。在Unix/Linux系统上,你需要使用冒号(:)而不是分号(;)来作为分隔符。在运行IRC机器人的时候你也需要指定类路径。  当运行机器人的时候,你需要提供两个命令行参数来告诉它连接哪个IRC服务器以及加入哪个IRC频道:  java -classpath .;./lib/pircbot.jar;./lib/freetts.jar SpeechBot irc.freenode.net #irchacks
  注意:确定你的目录名不包含任何空格,因为该版本的FreeTTS在从含有空格的路径中读取自身代码时似乎存在问题。  当你启动了机器人之后,它将立刻加入指定的IRC频道(范例中是在freenode IRC网络上的#irchacks)。现在你可以向频道中发送一条消息来测试机器人了。如果一切都设置正确,你就会听见机器人对你说:
  "Jibbler on #irchacks says: Hello, world!"  现在你可以在收听IRC的同时继续努力工作了!  Paul Mutton是PircBot IRC框架及另外一些Java程序的作者,这些程序可以在他的网站上找到。  在2004年7月,O'Reilly Media出版了IRC Hacks。
本文转自

转载地址:http://cciob.baihongyu.com/

你可能感兴趣的文章
又一个轮回(r15笔记第100天)
查看>>
在oracle实践学习位运算 第一篇
查看>>
通过sql语句分析足彩
查看>>
生产环境sql语句调优实战第七篇
查看>>
一个oracle查询引起的bug
查看>>
通过shell来比较oracle和java中的字符串使用
查看>>
关于纠结的recycle pool的设置
查看>>
清华梦的粉碎读后感--论理想主义者王垠
查看>>
生活中的优化和向往(r11笔记第72天)
查看>>
最近的几个技术问题总结和答疑(七)
查看>>
容灾切换中的数据库宕机问题简单分析(一)
查看>>
几年前的一次答疑解惑
查看>>
MySQL RR隔离级别的更新冲突策略
查看>>
MySQL索引条件下推的简单测试
查看>>
通过SQL解读财富的分配(二)
查看>>
一个MySQL死锁问题的复现
查看>>
数据迁移中的几个问题总结
查看>>
心理学中的效应简单解读(r12笔记第24天)
查看>>
mysqldump简单解析
查看>>
Oracle备库无法连接主库的问题分析
查看>>