文章詳情頁(yè)
讓你的Java會(huì)說(shuō)話-用Java實(shí)現(xiàn)IRC文本到語(yǔ)音轉(zhuǎn)換
瀏覽:15日期:2024-06-16 16:54:14
內(nèi)容: Internet Relay Chat(IRC)是一個(gè)被全世界數(shù)百萬(wàn)人所使用的網(wǎng)絡(luò)聊天系統(tǒng)。多年以來(lái),它為朋友、程序員、大學(xué)甚至銀行之間的討論、交換意見和協(xié)作研究提供了方便。版權(quán)聲明:任何獲得Matrix授權(quán)的網(wǎng)站,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必保留以下作者信息和鏈接作者:Paul Mutton;jlearner(作者的blog:http://blog.matrix.org.cn/page/jlearner)原文:http://www.onjava.com/pub/a/onjava/2004/09/08/IRCinJava.html譯文:http://www.matrix.org.cn/resource/article/44/44237_Text+Speech+Java+IRC.html關(guān)鍵字:Text;Speech;Java;IRC由于IRC是一個(gè)完全實(shí)時(shí)的聊天系統(tǒng),所以你將很難從中受益,除非你能密切關(guān)注聊天時(shí)對(duì)話產(chǎn)生的順序。不幸的是,這將會(huì)導(dǎo)致生產(chǎn)力的低下,這就是為什么很多雇主不贊成使用IRC的原因。然而,如果IRC得到了恰當(dāng)?shù)氖褂茫軌蚴构蛦T與遠(yuǎn)程的同事們一起高效地工作,不管他們是位于地球的另一端,或者只是在隔壁的大廈。像IRC這樣的實(shí)時(shí)群組聊天系統(tǒng)使組織會(huì)議(甚至可以實(shí)現(xiàn)視頻會(huì)議)、提問(wèn)問(wèn)題或是商量去哪里吃午餐這樣的小事都變得更加容易。很多老板也許會(huì)爭(zhēng)辯說(shuō),在工作場(chǎng)所提高生產(chǎn)力的最顯而易見的方法是完全避免使用IRC。在某些情況下這也許是正確的,但是在很多場(chǎng)合IRC可以是非常有用的。當(dāng)你使用IRC進(jìn)行交流時(shí)——即使是跟同一辦公室中的某個(gè)人——在別處的同事將能夠看到你們兩個(gè)談話的內(nèi)容。當(dāng)你不在辦公桌旁的時(shí)候,你也可以了解同事們?cè)谟懻撌裁础_@是電話或常規(guī)的點(diǎn)對(duì)點(diǎn)聊天系統(tǒng)所不容易實(shí)現(xiàn)的兩個(gè)重要方面。理想的解決方案是設(shè)計(jì)一種無(wú)需經(jīng)常查看是否有新消息就可以明了IRC對(duì)話的方法。只要你的IRC頻道不是很繁忙,那么一個(gè)文本語(yǔ)音轉(zhuǎn)換系統(tǒng)將會(huì)提供給你優(yōu)秀的解方案。它會(huì)將新消息自動(dòng)朗讀出來(lái),這樣你就可以繼續(xù)工作,只在有絕對(duì)必要的時(shí)候才轉(zhuǎn)移注意力到IRC上面來(lái)。本文將展示如何建立一個(gè)跨平臺(tái)的IRC機(jī)器人(一個(gè)自動(dòng)化的客戶端),它使用FreeTTS Java語(yǔ)音合成庫(kù)來(lái)將IRC消息轉(zhuǎn)換成聽得見的語(yǔ)音。FreeTTS庫(kù)可以在freetts.sourceforge.net下載。為了連接到IRC服務(wù)器上,你需要在www.jibble.org/pircbot.php下載PircBot Java IRC API。當(dāng)你下載了所需的兩個(gè)庫(kù)之后,建立一個(gè)lib目錄,然后將下列.jar文件拷貝到里面。·cmu_time_awb.jar ·cmu_us_kal.jar ·cmulex.jar ·cmutimelex.jar ·en_us.jar ·freetts.jar ·pircbot.jar 現(xiàn)在,寫IRC機(jī)器人已經(jīng)變成了一個(gè)簡(jiǎn)單的任務(wù),因?yàn)檫@些庫(kù)將為你完成多數(shù)的困難工作。建立一個(gè)名為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. // 選擇語(yǔ)音合成器的話音 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. // 設(shè)置輸出格式 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. // 發(fā)送所有的IRC消息到語(yǔ)音合成器 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]); }}現(xiàn)在可以編譯IRC機(jī)器人了。要確定在類路徑中包含了必需的.jar文件:javac -classpath .;./lib/pircbot.jar;./lib/freetts.jar SpeechBot.java注意這種指定類路徑的方式只在Windows系統(tǒng)下有效。在Unix/Linux系統(tǒng)上,你需要使用冒號(hào)(:)而不是分號(hào)(;)來(lái)作為分隔符。在運(yùn)行IRC機(jī)器人的時(shí)候你也需要指定類路徑。當(dāng)運(yùn)行機(jī)器人的時(shí)候,你需要提供兩個(gè)命令行參數(shù)來(lái)告訴它連接哪個(gè)IRC服務(wù)器以及加入哪個(gè)IRC頻道:java -classpath .;./lib/pircbot.jar;./lib/freetts.jar SpeechBot irc.freenode.net #irchacks注意:確定你的目錄名不包含任何空格,因?yàn)樵摪姹镜腇reeTTS在從含有空格的路徑中讀取自身代碼時(shí)似乎存在問(wèn)題。當(dāng)你啟動(dòng)了機(jī)器人之后,它將立刻加入指定的IRC頻道(范例中是在freenode IRC網(wǎng)絡(luò)上的#irchacks)。現(xiàn)在你可以向頻道中發(fā)送一條消息來(lái)測(cè)試機(jī)器人了。如果一切都設(shè)置正確,你就會(huì)聽見機(jī)器人對(duì)你說(shuō):'Jibbler on #irchacks says: Hello, world!'現(xiàn)在你可以在收聽I(yíng)RC的同時(shí)繼續(xù)努力工作了!Paul Mutton是PircBot IRC框架及另外一些Java程序的作者,這些程序可以在他的網(wǎng)站上找到。在2004年7月,O'Reilly Media出版了IRC Hacks。 Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd Internet Relay Chat(IRC)是一個(gè)被全世界數(shù)百萬(wàn)人所使用的網(wǎng)絡(luò)聊天系統(tǒng)。多年以來(lái),它為朋友、程序員、大學(xué)甚至銀行之間的討論、交換意見和協(xié)作研究提供了方便。版權(quán)聲明:任何獲得Matrix授權(quán)的網(wǎng)站,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必保留以下作者信息和鏈接作者:Paul Mutton;jlearner(作者的blog:http://blog.matrix.org.cn/page/jlearner)原文:htt
標(biāo)簽:
Java
相關(guān)文章:
1. Python獲取抖音關(guān)注列表封號(hào)賬號(hào)的實(shí)現(xiàn)代碼2. 告別AJAX實(shí)現(xiàn)無(wú)刷新提交表單3. python 多線程實(shí)現(xiàn)多任務(wù)的方法示例4. 使用css實(shí)現(xiàn)全兼容tooltip提示框5. JSP數(shù)據(jù)交互實(shí)現(xiàn)過(guò)程解析6. python selenium實(shí)現(xiàn)智聯(lián)招聘數(shù)據(jù)爬取7. 使用.net core 自帶DI框架實(shí)現(xiàn)延遲加載功能8. SpringMVC+Jquery實(shí)現(xiàn)Ajax功能9. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)10. Python實(shí)戰(zhàn)之OpenCV實(shí)現(xiàn)貓臉檢測(cè)
排行榜
