使用Lipsync插件做中文口形動畫


LipSync主要由三個模塊組成。

·前端負責分析語音,辨識指定的音節,輸出位置、類型和強度。LipSyncPro的作者直接使用了PocketSphinx開源庫來完成這部分的內容。

·中端沒有明確的界限,負責將語音識別的結果轉化為驅動表情動畫的事件幀。LipSync中提供一個ClipEditor,界面功能全面,可以方便的增減和編輯AutoSync生成的幀信息。

*前端和中端都是在編輯器中離線完成的。

·后端負責在runtime時根據事件幀驅動表情動畫。LipSync支持BlendShape、骨骼動畫和2D幀動畫。

 

初步試用下來感覺挺好用,但有個關鍵問題:插件不支持中文! 強行識別的結果根本沒法看。作者已經在嘗試做多國語言的支持,但因為不會中文,暫時還無法支持。

 

內置的英語音素分類定義

 

總結一下,要擴展LipSync支持中文,需要解決兩個問題:

1)尋找中文音素表

2)尋找一個開源庫來識別中文語音中的音素(最好還是Sphinx)

對於第一個問題,英文搜索幾乎沒有靠譜的內容,百度倒是找到好幾篇研究中文LipSync的論文[1][2],看引用數不高,可能是LipSync的學術價值太低,但工程上還是挺有意義的。

[1]使用HTK自行訓練中文語音模型,我沒做過語音識別,比較苦手。只能看看有沒有現成可用的中文模型。

[2]提出一個三段式的方案,先結合過零率和短時能量將語音切割為片段,逐片段識別為文字(論文里使用的是微軟SpeechAPI),然后查字典將字拆分為音節。這個方案可行性較高,效果預期也有保證,但工程量較大。

[3]提出了一個根據聲韻母發音規律進行分類的方法,如下圖

 

 

[1][2]都使用了這個分類模型。

 

為CMUSphinx構建音素模型

語音識別Toolkit中,只有CMUSphinx默認有提供音素識別(Phoneme Recognition)的功能。

先准備一些文字,轉化為音素作為測試數據,然后使用cmuclmtk來構建音素語言模型 [5]。

我沒有合適的測試數據,於是將語言字典zh_broadcastnews_utf8.dic中的音素序列剝離出來作為測試數據。

Commands:

text2idngram.exe -vocab F:\MyProject\Sphinx\Project\Phoneme.tmp.vocab -idngram F:\MyProject\Sphinx\Project\Phoneme.idngram < F:\MyProject\Sphinx\Project\Phoneme.txt

 

idngram2lm -vocab_type 0 -idngram F:\MyProject\Sphinx\Project\Phoneme.idngram -vocab F:\MyProject\Sphinx\Project\Phoneme.tmp.vocab -arpa F:\MyProject\Sphinx\Project\ChinesePhoneme.lm

 

sphinx_lm_convert.exe -i F:\MyProject\Sphinx\Project\ChinesePhoneme.lm -o F:\MyProject\Sphinx\Project\ChinesePhoneme.lm.bin

 

[1] 基於HTK的語音驅動唇形動畫的實現

https://wenku.baidu.com/view/e3cf6acdbb4cf7ec4bfed003.html

[2] 基於SAPI的語音驅動口型動畫方法

http://www.ixueshu.com/document/b6cc0c79686c53bb318947a18e7f9386.html

 

 

[3] 唇讀中序列口型的分類

https://cmusphinx.github.io/wiki/phonemerecognition/

 

[4]

https://www.leiphone.com/news/201703/RccQRMCqbgxnFFS3.html

 

[5] CMUSphinx - Phoneme Recognition

https://cmusphinx.github.io/wiki/phonemerecognition/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM