回想很多年以前, 我在做 speech 的時候, 曾經和成大的王駿發教授, 交大的吳炳飛教授學過很多東西. 不過現在連王教授的弟子吳宗憲教授都升任副院長了, 可見得真是光陰似箭…. 我不免又想到當時做 internet 的時候, 也曾經和張系國教授一起開過會. 只可惜我沒有買過他的書, 我看的那些都是從交大圖書館借的或是看報紙連載的, 雖然他的著作我每一本都讀過, 但是我並沒有甚麼 "皮牧師正傳" 之類的書可以請他簽名, 想想真是殘念啊! 總之, 白頭工男話當年, 當初腦海中的知識, 似乎也俱往矣囉!
千金難買早知道, 現在我們又要做 speech 的東西了. 稍微 survey 一下, 現下的 speech 演算法還是免不了要用 LPC (linear-predictive coding) 與 LSFs (line-spectral frequencies). 過去從語音訊號中取得 LPC, 我只知道要先做 autocorrelation , 然後用 Levinsion -Durbin recursion 找出 LPC. 剛才看了一下, 還有個沒啥印象的 Yule-Walker method. 既然後者比前者晚了 10 年才推出 (2003 vs 1993), 不知道是否有比較厲害?!
得到 LPC 係數之後, 再轉到 frequency doamin, 其特性會比較'穩定. 所以 LPC 會轉成 LSP (line specttral pair) 或 LSF. 一般而言, LSP 會被量化, 就像 video coding 的 DCT 係數也要量化一樣. 接下來也和 video coding 一樣, 量化的結果再反量化, 補上一些內插值, 和原來的訊號計算求得殘餘量 (residual), Residual 的部分就可以查表編碼了.
其中, 可以把先前獲得的資訊拿去動態建立 code book, 若是沿用固定的 code book 則可以省略這一步, 根據量化後的 LSP 和 residual, 我們可以從 code book 中找到最適當的 code 來代表這個 sub-block 或是 sub-frame. 當然, 此時多半會運用均值化 (normalization) 的技巧, 使得 11111 和 99999 都對應到一樣的 code, 只不過它們的 gain 不相同而已.
複習起來, 差不多就是這樣了. 以後有想到什麼再來補充.
[note]
再看了一下, Levinson-Durbin 可以用來解 Yule-Walker equation. Yule-Walker method 本身是輸入 autocorrelation 數列, 輸出 PSD (power spectral density). 所以兩者之間沒有誰優誰劣的問題.
[ref]
2. http://thesis.lib.ncu.edu.tw/ETD-db/ETD-search/getfile?URN=89521046&filename=89521046.pdf