让计算机开口说话
讓計算機開口說話
作者 Andy Aaron, Ellen Eide and John F. Pitrelli
向呆板的電子聲說再見:新的語音合成系統聽起來就像人聲,他們可以即時響應。
?
打電話到銀行或者航空公司,多數情況下你會聽到錄音回復而不是由值班人員來接聽。通過組合事先錄制好的短語,此系統可以恰當地處理銀行業務或者諸如定票等業務。雖然拼接的語音聽起來不自然,這個系統在處理一定范圍內的事務是沒問題的,因為此領域的事情是可預見。但是,由于短語需要事先錄制,這就限制了它的應用范圍。
IBM的語音合成研究者正在攻克一個難題:讓計算機說人們所說的一切,并且使聲音更自然。例如,我們開發了一個可以讀早間新聞或者在電話里朗讀電子郵件的系統。就像現在的短語拼接系統,但是我們的是最新的,叫做超級語音(Supervoices),也是基于真人的錄音,它可以實時反應。但是不同的是他們可以發出任何的聲音,包括所有單詞的讀音,聲音提供者沒有讀過的。
此技術的直接應用是什么?它們包括播發最新消息,為殘疾人讀屏幕,通過電話接收E-mail,或者任何具有大詞庫的系統,并且其內容經常改變或者未預定義的,但是又無法顯示的。在將來超級語音(Supervoices)可以提高視頻或計算機游戲的可玩性,增強便攜設備功能,或者用于電影生產。IBM于2002年底發布了其最新的商業化版本。
跟我說
科學家們模擬人聲的嘗試始于十八世紀初,當時的Wolfgang von Kempelen用一系列精巧的風箱、簧片、風笛和共鳴腔建造了一個“演說機”,他用它讀一些基本的詞。到上個世紀七十年代,建于數字計算機上的第一代現代文本朗讀系統獲得了廣泛的應用。制造者們試圖借助很少的相關參數直接產生全部的發音。雖然帶有機器腔,但是可以理解。90年代以后,更快的計算機和更便宜的數據存儲設備使高級的語音合成成為可能。它基于這樣的前提:語音是由有限的音素構成,這些音素的重新組合就可以產生任何詞(發音)。因此,就像排字工人的鉛字匣一樣,一套聲音樣本的錄音集,是合成語音的模塊。
超級語音就是利用這樣的模塊模型。對于語言,人們認為它是由一系列的字母或單詞構成,軟件認為它是一系列的音素。英語大約包括40個音素。例如,單詞“please”由四個音素:P, L, EE, Z構成。超級語音有一個含有每一音素發音樣本的音素庫,當它需要發某個詞的音時,它就會把適當的音素樣本(發音)拼接到一起。
語音合成始于人聲,所以我們特定聽力小組就的任務就是從許多聲音樣本提供者中發現合適的聲音。我們經常需要找優美的發音或者圓潤的嗓音;清楚的讀音以克服口音的問題。有時,我們需要為特殊的應用找特別發音,比如說合成外國人的變形的英語或者機器人的聲音以用于電影。被選中的錄音者在錄音棚里朗讀數千的句子,這要花費一周甚至更長的時間。這些句子經過精心挑選,包含不同的內容,以確保我們可以掌握在不同文本中盡可能多的英語語音要素。這樣就有了數千的聲音文件。
然后,軟件將由一系列詞構成的文本轉換為相應的音素。軟件記下每個音素的特征,包括它前后的音素,還有它句子中的位置等。它還可以區別在文本中的動詞和名詞。例如,聲音提供者讀“Welcome to my home page,”,軟件會將其翻譯如下的音素:
W EH L K UH M T OO M I H OW M P AY J,
在句子當中的“page”是名詞,句首的音W后跟EN,J是句尾的音。
一旦文本被轉化,就可以檢查我們的聲音文件。我們用韻律學的三個要素來衡量之:音調、時長和響度。這些參數將幫助我們在稍后的例子中決定一個聲音是否可用于合成一個給定的短語。音調、時長和響度是動態變化的。我們的度量標準是隨著聲音文件的進行而變化的。
下一步,利用來自語音識別的技術(從聲音到文本的聽寫程序),軟件使相應的音素與文本匹配。通過這種聲音文本的序列,我們可以查看錄音文件,確定每一個音素的開始和結束。這一點至關重要,一旦我們可以定位和標記音素,我們的軟件就可以編碼他們,并把他們放入一個可檢索的數據庫中。
每個英語音素在我們的數據庫中平均包含的1000個樣本。粗看起來這會存在大量的冗余。其實在不同的語境中,或者不同的人的發音變化極大。例如,讓我們看一個音素,在”smooth”中讀“OO”。但是在數據庫中一些“OO”后跟“L”,例如“pool”,還有位于單詞的結尾,如“shampoo”。這些變化會改變“OO”的發音,并且決定我們用那個音素在我們以后的應用中。
有了音素樣本庫只是問題的一個方面,一旦要合成逼真的語句,我們還需要選擇聲音的特色。例如,說話者會在停頓之前慢下來,比如說遇到逗號的時候。所以我們需要在逗號前注意停頓。我們對每個聲音樣本提供者的數據庫建立統計模型,用以發現其聲音的規律,比如聲調的升降、時長和響度。這個統計模型通過自學習這些規律用于在日后的應用中合成更自然的規律。
應用實例
現在我們已經“建立”起來了系統,讓我們來試一試它。超級語音的反應時間為毫秒級,可以與人即時交談。首先我們給它幾個句子讓它來說,如:“Can we have lunch today?”我們需要先將單詞轉化為音素,他們是超級語音的模塊,我們的句子看起來如下:
K AE N W EE H AE V L UH N CH T OO D AY
Supervoice 標記句子的特征,這是一個問句,第三個單詞是一個動詞,最后的單詞的第二音節重讀。
將這些特征輸入到統計模型。根據這些特征,超級語音在隨后的應用中就可以確定重音、時長和響度。例如,模型可以注意到yes/no問句,并在句尾應用升調。使用這種模式,我們僅需要在數據庫中確定音素匹配曲線,并放置正確的音素樣本。但是選用那個音素來合成我們的語句呢?我們的句子含有16個音素,可能的組合有1064之多,或者是10,00016,如此大的數目是無法處理的。我們使用一種動態程序更有效地搜索數據庫以確定最佳匹配。
當我們將選出的音素組成句子,還有一個平滑優化的問題。雖然每個音素有大量的樣本,并且是精心選出的,但是剛剛生成的句子還會有一些不連續,語句的結尾會突然結束,并且會有顫音。我們通過降低音調來調整它,就像木匠通過砂紙和膠水來創造光潔的表面一樣。我們逐個第調整音調,使之相互協調,使整個句子聽起來就像真人的對話。
發展前景
我們的開發人員自己也經常爭論文本朗讀技術的終極是什么。符合圖靈測試,讓人們無法分辨真假?也許不是,應該考慮的是,當人們以為是在同人交談而實際上是一臺機器,發現這一點人們會感到不快。例如他們打電話到一個公司的客戶服務中心去的時候。無論如何,下面這些情況下“自然的聲音”不是最好的選擇,駕駛時提醒睡著的聲音,卡通玩具,視頻節目或者計算機游戲,這些場合更需要機械一些的聲音。而且文本朗讀系統可以做一般人無法完成的工作,例如它可以像說母語一樣說許多種語言,或者一口氣讀完整本書也不會疲勞。
這項技術最終的用途可能是這樣:一種甜美、富于表現力的聲音,讓人們不需要適應就聽起來舒服。或者開發象人一樣的社交技巧,看這個例子:
致電者說:“我最好是乘坐星期二早上的班機去波士頓。”
計算機:“我這里有星期二下午的兩個航班去波士頓。”
軟件強調下午的能力會化簡交流的過程。來電者會自然地理解為早上沒有可用的航班,計算機為他提供了一個可選擇的方案。否則的話,一個完全沒有表現力的系統會使來電者以為計算機誤解了他的意思而掛掉電話重打。
對于超級語音這樣的技術這依然是一個巨大的挑戰,雖然它聽起來已經與人聲驚人地相象了。畢竟,軟件無法理解它所說的,你不可能期望它象第八分類頻道一樣,在朗讀風格上具有富于表現力的變化,并能夠解釋他或她所讀的東西。獲得這樣的能力,這是我們的一個長久的任務。
——譯自 Scientific American? 2003年3月17日
總結
 
                            
                        - 上一篇: powerbuilder建数据库
- 下一篇: VRRP主备网关原理
