#E6E6E6 【VB】ieSpeaker:實現嵌入網頁的語音朗讀 作者:吳文成

    晚上在睡覺時,我想到,能不能在網頁上用 Java 模擬之前寫的軟體 ExtraMidi( 也就是實現網頁 Midi 電子琴 )。 之所以會這樣想,一則是因為,我曾經寫過很多(碎形、混沌或人工生命的)Java 模擬程式,一則是因為 , 我昨天才在網頁上用 Javascript 實現了另一種嵌入網頁的語音朗讀( 等會你將看到這裡演示了這項技術 ), 這讓我幻想用 Java 去實現網頁Midi 電子琴,幻想歸幻想 , 要付諸實現 ,還需要花時間去研究。我寫軟體一來是因為幻想,一來是因為實用 ,一來因為學術研究 。 而 ieSpeaker
的設計是歸於實用,它與 ExtraSpeaker 是一體兩面的姊妹軟體。

  前天晚上,兩隻恐龍陪我閱讀國外網頁上,關於賽局理論的學術論文
,他們要我唸唸英文給他們聽。在唸了幾段之後,我突然想到,如果可以寫出一套朗讀軟體,它能夠朗讀螢幕上的選取文字,這樣的軟體一定是非常實用。這類軟體,例如有大陸的「讀霸」可以朗讀中文,還有台灣軟體「 Dr. eye 譯典通 」的即時語音功能,等等 。它們可以有效地抓取螢幕上
,在網頁瀏覽器或文字編輯器裡的選取文字,然後朗讀出來——但是,這些軟體安裝起來都是龐然大物,這讓我有寫出一個簡易軟體的念頭。

  可惜的是,我並沒有做到我原本預設要實現的功能。我不清楚:如何去抓取螢幕上「任意」應用程式裡的選取文字。我可以做到的是,準確抓出IE網頁瀏覽器裡的選取文字,所以退而求其次,這個簡易軟體姑且定位為「實現嵌入網頁的語音朗讀」,我希望它可以做成是IE的外掛,好處是,這樣就可以被那些建立於IE核心的瀏覽器,例如 MyIE、Maxthon [[img src=computer/ieSpeaker2.gif height=119 width=298 align=right]]或 KKman 所載入使用。 可惜的是,我也不會做外掛,我只能做出如右圖所示的IE工具列按鈕。缺點是,這個按鈕僅適用於IE瀏覽器本身,無法被載入到上述的其他瀏覽器之工具列。還有一個算是補救的方法,即在瀏覽器裡,做出如左下圖所示的滑鼠右鍵選單, 選單裡設置幾個關於語音朗讀的選項 , 例如「 ieSpeaker 朗讀文字」與「 ieSpeaker 進階功能 」, 這個滑鼠右鍵選單是任何建立於IE 核心的瀏覽器皆可以出現與使用的 , 我本身是使用 Maxthon 瀏覽器
,所以,我需要找到可以在 Maxthon 裡使用 ieSpeaker 的方法。

[[img src=computer/ieSpeaker.gif height=379 width=250 align=left]]  本篇文章標題「嵌入網頁」的意思便是指 : ieSpeaker 在IE 工具列上設置按鈕,在滑鼠右鍵選單裡設置選項——這涉及到兩套軟體的介面接口問題。另外一個問題,顯然就是實現「語音朗讀」,如果只是要單純唸一段英文,這難度並不高,我可以直接在這個網頁上實現給你看。按下按




鈕之後,將會出現:是否同意執行本地作業系統裡某個 ActiveX 物件的對話框。其中,這個物件就是微軟自己內建的語音引擎 Sapi.SpVoice , 也就是 Microsoft Speech Package , 它在 Windows-XP 裡是預設安裝的 ,所以如果你不是 Windows-XP 可能會無法執行這裡的朗讀功能( 詳情請參考我的另一篇文章〈 ExtraSpeaker:英文語音朗讀精靈 〉)。

  如果你同意執行這個物件,便會聽到上面文字盒的語音朗讀,你也可以改成其它你想要的文字。但是,這裡的朗讀功能有一個前提,你的IE瀏覽器的「網際網路選項」裡「安全性」設定必須是「低安全性」!換句話說,在遠端網頁上執行某個 ActiveX 物件的條件是, 使用者必須將瀏覽器的安全層級調到最低。IE瀏覽器的安全性功能,可以防止他人存取你未允許他們使用權限存取的資訊,所以把安全層級調到最低,無疑就是開放了瀏覽器的可能漏洞。現在這個例子也算是「實現嵌入網頁的語音朗讀
」,但是它並不是我要實現的那種,因為我不可能要求所有的使用者放棄掉自己的瀏覽器安全性 。 所以, ieSpeaker 的執行必須不涉及瀏覽器安全層級的問題,這便是它特別的地方,也是在設計上比較困難的環節——問題的關鍵,是在於 ActiveX 物件的嵌入方法與嵌入接口。 我這裡所談的編程,已經不只是 VB 了,還包括 Javascript 與登錄檔的讀寫部分。

  ieSpeaker 的設計要點在於「嵌入網頁 」與「 語音朗讀」。「 嵌入網頁 」的部分我已經談過,而「語音朗讀」的程式主體便是 ExtraSpeaker 。在滑鼠右鍵選單裡「 ieSpeaker 進階功能 」, 可以讓你獨立地執行多文本的英文真人語音朗讀功能,包括讓你調整朗讀類別(男聲/女聲)、朗讀速度與朗讀音量,以上的設定會自動套用到網頁上選取文字的語音朗讀。這套軟體 ieSpeaker 不到 150 KB,算是小而美,也算是滿實用的。 但是,回到我第二段開頭提到的,「可惜的是,我並沒有做到我原本預設要實現的功能」,我原本的構想是希望能夠寫套軟體,它不只是抓取IE瀏覽器上的選取文字,而是適用於抓取「任意」應用程式裡的選取文字。在可見的未來,顯然,我還需要把這套軟體推向另一種「境界」。

後註於 2005/09/02

  咦?我剛剛好像想到了「抓取『任意』應用程式裡的選取文字」的方法,這個方法理論上不但簡易,而且非常美妙。連我自己都躍躍欲試!
2005/09/01