您的位置:首页 > 其它

FreeTTS实现语音合成-----将IRC消息转换成听得见的语音

2014-08-06 14:57 253 查看
本文将展示如何建立一个跨平台的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 {

private Voice voice;

  public SpeechBot(String say) {

  //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);

float wpm = 120f;//设置语速

voice.setRate(wpm);

voice.setPitch(85f);

voice.setPitchRange(10f);

//合成语音

voice.startBatch();

voice.speak(say);

voice.endBatch();

//在这里可以获得合成语音文件

//释放资源

voice.deallocate();

  }

  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 {

  SpeechBot bot = new SpeechBot("SpeechBot");

 

  }}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: