熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

用Java實現IRC文本到語音轉換

2013-11-23 18:38:45  來源: Java核心技術 
由於IRC是一個完全實時的聊天系統所以你將很難從中受益除非你能密切關注聊天時對話產生的順序不幸的是這將會導致生產力的低下這就是為什麼很多雇主不贊成使用IRC的原因然而如果IRC得到了恰當的使用它能夠使雇員與遠程的同事們一起高效地工作不管他們是位於地球的另一端或者只是在隔壁的大廈像IRC這樣的實時群組聊天系統使組織會議(甚至可以實現視頻會議)提問問題或是商量去哪裡吃午餐這樣的小事都變得更加容易

  很多老板也許會爭辯說在工作場所提高生產力的最顯而易見的方法是完全避免使用IRC在某些情況下這也許是正確的但是在很多場合IRC可以是非常有用的當你使用IRC進行交流時——即使是跟同一辦公室中的某個人——在別處的同事將能夠看到你們兩個談話的內容當你不在辦公桌旁的時候你也可以了解同事們在討論什麼這是電話或常規的點對點聊天系統所不容易實現的兩個重要方面

  理想的解決方案是設計一種無需經常查看是否有新消息就可以明了IRC對話的方法只要你的IRC頻道不是很繁忙那麼一個文本語音轉換系統將會提供給你優秀的解方案它會將新消息自動朗讀出來這樣你就可以繼續工作只在有絕對必要的時候才轉移注意力到IRC上面來

  本文將展示如何建立一個跨平台的IRC機器人(一個自動化的客戶端)它使用FreeTTS Java語音合成庫來將IRC消息轉換成聽得見的語音

  FreeTTS庫可以在fre下載為了連接到IRC服務器上你需要在/pircbotphp下載PircBot Java IRC API

  當你下載了所需的兩個庫之後建立一個lib目錄然後將下列jar文件拷貝到裡面

  ·cmu_time_awbjar
  ·cmu_us_kaljar
  ·cmulexjar
  ·cmutimelexjar
  ·en_usjar
  ·freettsjar
  ·pircbotjar

  現在寫IRC機器人已經變成了一個簡單的任務因為這些庫將為你完成多數的困難工作建立一個名為SpeechBotjava的文件

  import orgjibblepircbot*;
import comsunspeechfreetts*;
import comsunspeechfreettsaudio*;
import javaxsoundsampled*;
import javaioFile;

public class SpeechBot extends PircBot {

    private Voice voice;
    
    public SpeechBot(String name) {
        setName(name);

        // Choose the voice for the speech synthesizer
        // 選擇語音合成器的話音
        String voiceName = kevin;
        VoiceManager voiceManager =
VoiceManagergetInstance();
        voice = voiceManagergetVoice(voiceName);

        if (voice == null) {
            Systemoutprintln(Voice not found);
            Systemexit();
        }

        voiceallocate();

        // Set up the output format
        // 設置輸出格式
        AudioPlayer voicePlayer = new JavaClipAudioPlayer();
        voicePlayersetAudioFormat(new AudioFormat(
false true));
        voicesetAudioPlayer(voicePlayer);
    }    
    
    public void onMessage(String channel String sender
String login String hostname String message) {
        // Send all IRC messages to the voice
synthesizer
        // 發送所有的IRC消息到語音合成器
        message = messagetrim();
        String input = sender + on + channel +
says: + message;
        voicespeak(input);
    }

    public static void main(String[] args) throws
Exception {
        if (argslength < ) {
            Systemoutprintln(Usage: java SpeechBot
);
            Systemexit();
        }
        SpeechBot bot = new SpeechBot(SpeechBot);
        nnect(args[]);
        botjoinChannel(args[]);
    }

}

  現在可以編譯IRC機器人了要確定在類路徑中包含了必需的jar文件

  javac classpath ;/lib/pircbotjar;/lib/freettsjar SpeechBotjava

  注意這種指定類路徑的方式只在Windows系統下有效在Unix/Linux系統上你需要使用冒號(:)而不是分號(;)來作為分隔符在運行IRC機器人的時候你也需要指定類路徑

  當運行機器人的時候你需要提供兩個命令行參數來告訴它連接哪個IRC服務器以及加入哪個IRC頻道

  java classpath ;/lib/pircbotjar;/lib/freettsjar SpeechBot #irchacks

  注意確定你的目錄名不包含任何空格因為該版本的FreeTTS在從含有空格的路徑中讀取自身代碼時似乎存在問題

  當你啟動了機器人之後它將立刻加入指定的IRC頻道(范例中是在freenode IRC網絡上的#irchacks)現在你可以向頻道中發送一條消息來測試機器人了如果一切都設置正確你就會聽見機器人對你說
Jibbler on #irchacks says: Hello world!

  現在你可以在收聽IRC的同時繼續努力工作了!

  Paul Mutton是PircBot IRC框架及另外一些Java程序的作者這些程序可以在他的網站上找到

  在OReilly Media出版了IRC Hacks


From:http://tw.wingwit.com/Article/program/Java/hx/201311/25520.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.