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");
}}
·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");
}}
相关文章推荐
- android 融云 + 科大讯飞 实现仿微信语音消息转换为文字
- TTS语音合成的实现
- 将推送到手机的消息转换成语音自动播放的实现(如支付到账语音通知)
- 交互系统的构建之(三)TTS语音合成的加盟
- TTS5.1语音引擎(中文)实现文本阅读和音频输出为WAV
- VC编程实现文本语音转换
- VC编程实现文本语音转换
- VC编程实现文本语音转换
- WINCE TTS语音合成引擎
- Cocoa文本语音转换例子(TTS)
- 问题1:java中没有实现这种“byte a = 0xB2 --> String b = “B2””转换的简单实现需要自己实现。 答:自己编写的转换函数,思路将byte的高低4位分开,分别转换为对应的字符然后合成返回的字符串。 java 代码 1.
- 中文TTS 的简单实现(基于linux)之 语音库的实现
- VC编程实现文本语音转换
- 事件驱动的文本语音转换(TTS)实例
- WINCE TTS语音合成引擎SDK
- VC用TTS实现文字语音朗读
- 谷歌金山词霸中自定义TTS语音的实现(告别难听的默认男声!)
- IE浏览器中实现即时消息、语音/视频对话以及文件传输等的完美解决方案!http://www.qq-soft.net/software/p608/A60874790.shtml
- TTS实现文字语音朗读
- Java学习笔记之FreeTTS(语音)