檔案狀態:    住戶編號:2315968
 PaulLiu 的日記本
快速選單
到我的日記本
看他的最新日記
加入我的收藏
瀏覽我的收藏
Utau的 resampler 《前一篇 回他的日記本 後一篇》 免費的演講, 無經驗可~~
 切換閱讀模式  回應  給他日記貼紙   給他愛的鼓勵  檢舉
篇名: EFB-GW(改)
作者: PaulLiu 日期: 2011.04.10  天氣:  心情:
這週末, 不但移除了"不自由"軟體的相依性, 也終於得到一個較好的結果了!!
心情大好~~

繼之前的 Utau resampler.exe 的結果,
上上週試過用 autotalent 依然無法超越的情況下.
在上週找到了一個強大的演算法 World, 由森勢教授開發的
http://www.aspl.is.ritsumei.ac.jp/morise/world/

問題在於這個無法在 Linux 上 build.
於是昨天早上把程式 port 到 Linux 上之後.
將 patch 寄給教授審查. 看能否收錄於他新版免得我們日後每次都要 rebase.

主要的重點還是同網頁附贈的 EFB-GW. 直接使用的結果是,
不但某些元音會 crash, 他也不支援連續音
對於不支援連續音的狀況, 別的網友也有同樣的結果
http://kenchan22.blog53.fc2.com/blog-entry-145.html

所以只好去對 EFB-GW 主程式大修一陣.
首先 crash 的狀況是由於 buffer overflow 引起的.
他原本的程式會對整個 wav 檔進行處理後, 在某個中間點才把頭尾的 offset/blank 去除.
那段 code 會超寫. 實在是不知道為何會這麼做.
所以乾脆一開始就把輸入的資料 offset/blank 去除, 然後才丟給後面的演算法運算.
這樣後面就不用做那些動作了.

而連續音最重要的部份是 pitch bent, 這部份的參數其時間的單位是 1/96 拍,
所以跟音樂的 tempo 有關, 並非一個絕對值. 而 EFB-GW 內部的時間單位是 2.0 msec.
他原本的作法是不看 tempo, 而將參數內插到整個輸出時間上.
在我的認知這並非正確的.
應該要參考 tempo 而將數值 map 到 2.0 msec 上面這樣比較 ok.
而且因為該參數是 optional, 如果沒有給參數的情況下, 0 個元素也根本無法內插.
所以這部份也幾乎重寫了.

當然這些只是介面問題而已, 對於教授而言, 我想他不熟 UTAU 是應該的.
因為 UTAU 並非自由軟體. 介面部份我們這些外人都只能旁敲側擊.
而我對於逆向工程應該經驗比較多一些. 所以比較容易猜中介面的含義.
但是教授的三個演算法
DIO, STAR, PLATINUM 有著強大的精妙絕倫之處. 這些才是最重要的..
所以介面修正完成後, 便很容易超越 UTAU 的表現.

這些修改做完之後, 就產生了可以支援連續音的 EFB-GW. 等晚一些我會再寄回給教授.
目前產生的測試結果我用影片形式放在我的 facebook 帳號.
分別是 "連續音 EFB-GW(改)" "連續音 UTAU" "單獨音 UTAU". 可以輕易的比較出品質.
雖然我修改的程式碼還沒有對外公開.
不過有興趣的人可以直接寄信給跟我索取. 因為是 GPL 自由軟體, 分享是完全 OK 的.

Thanks.
標籤:
瀏覽次數:1612    人氣指數:1612    累積鼓勵:0
 切換閱讀模式  回應  給他日記貼紙   給他愛的鼓勵 檢舉
給本文愛的鼓勵:  最新愛的鼓勵
Utau的 resampler 《前一篇 回他的日記本 後一篇》 免費的演講, 無經驗可~~
 
給我們一個讚!