開發TTS產品就是個力氣活

2021-04-07 12:26:08 字數 1683 閱讀 8701

--tts漫談

首先宣告,我不是語言專家,以下討論從程式設計師的角度出發。

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:"128"念成「一百二十八」,"128"將念成「一二八」。tts引擎可以去解釋這些標註。遺憾的是,語音xml標註並沒有形成大家都完全認可的標準,基本上是各自一套。

再說說tts應用程式設計,微軟的tts程式設計介面叫sapi,是com介面,開發起來還是有點麻煩,還好msdn的**上資料很全面。(鏈結是:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sapi51sr/html/welcome.asp),微軟的tts雖然免費,但其中文角色目前是個男聲,聲音略嫌混濁,感覺不爽。

產品專案的九個敏捷開發經驗

編者按 本文作者 朱軍華ronzhu 敏捷開發越來越火熱,但在實際應用當中很多時候都是只有敏捷的 形 卻缺少敏捷的 神 還只是在摸索中。在 scrum 兼顧計畫與靈活的敏捷開發 一文中,作者最後也提到過,借鑑一種新的模式的時候,最好能夠批判性的吸收其精華的部分,不能全部照搬,照搬了反而會出問題。其實...

直播課堂 乙個值得開發的產品

在這樣的趨勢下,網路課堂應運而生。以前大家也聽到過網路教育,學生們在教室 大螢幕,老師遠端授課,後來很多的 上開始有了可以點播的課件,學生在家可以 可是這樣的課堂呆板,沒有互動性,學生即使有聽不懂的也沒辦法發問。直播課堂是應網際網路發展到現階段的乙個必然產物 1 每家都有電腦 手機 直播課堂乙個有良...

資料產品開發的四個關鍵要素

最近兩年,我一直跟it公司裡面的演算法工程師們一起工作,自己也算一名演算法工程師,也面試過各個級別的演算法工程師。來了it公司之後,我剛開始面臨的乙個很大的問題,短時間內很難看清楚申請人真實的演算法水平。主要難點有兩個 這兩個難點就是短時間內,沒有乙個可信的標準來衡量對方的演算法水平。我在學界做了快...