TTS語音是什麼意思?使用者36895916996727112020-01-05 12:02:01

TTS就是Text To Speech,文字轉語音,文字朗讀,差不多是一個意思。在語音系統開發中經常要用到。 目前市場上的TTS很多,實現方式也各式各樣,有的很昂貴,如科大訊飛,據說當初得到863計劃的資助,有很高的技術;有的相對便宜,如捷通華聲, InfoTalk;也有免費的,如微軟的TTS產品。 相對於ASR(Automatic Speech Recognition,自動語音識別)來說,實現一個TTS產品所需要的技術難度不算大,在我看來也就是個力氣活。 要是讓我們來做一個能夠把漢語句子朗讀出來的TTS,我們會怎麼做呢? 有一種最簡單的TTS,就是把每個字都念出來,你會問,豈不要錄製6千多個漢字的語音?幸運的是,漢語的音節很少,很多同音字。我們最多隻是需要錄製: 聲母數×韻母數×4,(其實不是每個讀音都有4聲),這樣算來,最多隻需要錄製幾百個語音就可以了。 在合成的時候需要一張漢字對應拼音的對照表,漢字拼音輸入法也依賴這張表,可以在網上找到,不過通常沒有4聲音調,大不了自己加上,呵呵,要不怎麼說是力氣活呢。 這樣做出來的TTS效果也還可以,特別是朗讀一些沒有特別含義的如姓名,家庭住址,股票程式碼等漢語句子,聽起來足夠清晰。這要歸功於我們偉大的母語通常都是單音節,從古代的時候開始,每個漢字就有一個詞,表達一個意思。而且漢字不同於英語,英語裡面很多連讀,音調節奏變化很大,漢字就簡單多了。 當然,你仍然要處理一些細節,比如多音字,把“銀行”讀成“yin xing”就不對了;再比如,標點符號的處理,數字、字母的處理,這些問題對於寫過很多程式的你,當然不難了。 國內的一些語音板卡帶的TTS,不管是賣錢的還是免費的,大體都是這樣做出來的,也就是這樣的效果。 如果要把TTS的效果弄好一點,再來點力氣活,把基本的詞錄製成語音,如常見的兩字詞,四字成語等,再做個詞庫和語音庫的對照表,每次需要合成時到詞庫裡面找。這樣以詞為單位,比以字為單位,效果自然是好多了。當然,這裡面還是有個技術,就是分詞的技術,要把複雜的句子斷成合理的詞序列,也有點技術。這也要怪新文化那些先驅們,當初倡導白話文,引進西文的橫排格式、標點符號的時候,沒有引進西文中的空格分詞。不過即使分詞演算法那麼不高效,不那麼準確,也問題不大,如前面所說,漢字是單音節詞,把聲音合起來,大體上不會有錯。 至於增加一些銜接處的“詞料”,弄一些修飾性的音調,我認為是無關緊要的,對整體的效果改進不是太大。 市面上商品化TTS一般還支援粵語,請個粵語播音員錄音,把上面的力氣活重做一遍就是了。 再說句題外話,很多人覺得錄音最好找電臺、電視臺的播音員,其實找個你周圍的女同事來錄製,只要吐字清晰就可以了。在某種情況下,尋常聲音比字正腔圓的新聞聯播來得可愛。 再來說說文字的標識,對於複雜文字,某些內容程式沒有辦法處理,需要標識出來。比如,單純的數字“128”,是應該念成“一百二十八”還是“一二八”?解決辦法通常是加入XML標註,如微軟的TTS:“”念成“一百二十八”,“”將念成“一二八”。TTS引擎可以去解釋這些標註。遺憾的是,語音XML標註並沒有形成大家都完全認可的標準,基本上是各自一套。 再說說TTS應用程式設計,微軟的TTS程式設計介面叫SAPI,是COM介面,開發起來還是有點麻煩,還好MSDN的網站上資料很全面。微軟的TTS雖然免費,但其中文角色目前是個男聲,聲音略嫌混濁,感覺不爽。 國內一般的廠家提供API呼叫介面,相對比較簡單,可以方便地嵌入應用程式中去。 商品化的TTS還有個併發許可限制,就是限制同時合成的併發執行緒數,我覺得這個限制用處不大。無論哪種TTS,都可以將文字檔案轉換成語音檔案,供語音卡播放。大部分應用句子比較短小,一般不會超過100個漢字,合成的時間是非常短的,弄個執行緒專門負責合成,其它應用向該執行緒請求就是了,萬一句子很長,把它分解成多個短句子就是了,播放的速度總是比合成的速度慢。 也很多應用是離線合成,沒有實時性要求,就更不必買多個許可了。 更多情況下,我們甚至沒有必要購買TTS,比如語音開發中常見的費用催繳,撥通後播放:“尊敬的客戶,您本月的費用是:212元”,前面部分對所有客戶都一樣,錄一個語音檔案就是了,而數字的合成是很簡單的,你只要錄製好10個數字語音,再加上十,百,千,萬,再加上金錢的單位“元”。垍頭條萊