WORLDのさらなる高速化なと
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
ところでWORLDにCUDAを導入する案がありましたが,音声処理のようにFFT長が4桁前半の場合,全然早くならないオチがあり断念しました.
2012-04-06 23:53:43![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@m_morise 前検討したことがあったんですがボトルネックはどのあたりなのですか?次元数高くて嫌だなあという程度でやめたのですが。
2012-04-06 23:55:36![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP 主にボードとの通信速度ですね.大量のデータを一度に渡してFFTする用途じゃないと通信速度のほうが高くつきます.
2012-04-06 23:58:39![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@m_morise ああ、やはりですか。上りも遅そうですが下りは悲惨だろうなあと考えて没にした記憶があります。学科としてはまさにそこが専門なんですけどね。
2012-04-07 00:01:17![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP 音声処理の場合,GPGPUにメリットは無さそうです.やはりOpenMPなどの導入で並行処理にするのが時代の流れにはあいそうですね.WORLDの実装は並列処理と相性が良くなるようフレーム単位で完結させるように書いています.
2012-04-07 00:04:42![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@m_morise やはりそうですか.どのシステムを対象にするかですが,最近のCPUでは並列化が高速化に直結してしまうので工夫の市街がなくて悲しいです.その分いろいろ処理できてありがたいんですけどね…
2012-04-07 00:23:27![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
音声のGPGPUとか点数が多すぎていいイメージが思い浮かばない.信号処理のプリミティブなところをGPGPUで,っていうのはあまりいい方法では無いんだろうなあ.
2012-04-07 00:27:44![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP 歌声に話を限定するなら全ての処理を内部的にサンプリングを22.05 kHzに落とすだけで随分とパフォーマンスは上がりますけどね.音声なら22.05 kHzサンプリングでも品質にあまり影響しません.
2012-04-07 00:33:26![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP それと,どこまでオンライン性を求めるかも重要ですね.無理して1%速度を挙げるために品質を下げるくらいなら,半年くらい待って新しいPC導入するほうが良いという考えもありますので,そのトレードオフは色々悩みがあります.
2012-04-07 00:44:22![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@m_morise ひとまず今のところCore2Duoをベースに考えているんですが,買い換えタイミング考えたらそろそろCore iシリーズを考えていいような気もします.大量のメモリアクセスがある音声信号処理だと,Core iの速度は異常に速いのでマルチスレッダイズで事足りるかも…
2012-04-07 00:45:33![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP それと使い手がどのくらい気が長いのかは我輩には分からないところです.自分で使う分には今の速度で全く不満はありませんけど,人によってはダメなんだろうな,と.
2012-04-07 00:49:06![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@m_morise 僕は割と気が短い方なので,リアルタイムに合成できないとちょっと,となるので今回変な高速化していますが…正直モーフィングやその他のアルゴリズム側の重さも実装で異なるはずなので,マルチスレッダイズして余裕がある現在は十分であると判断はしています.
2012-04-07 00:54:34![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP 合成の場合,理論的にはストリーミング再生に間に合えば問題無いですね.信号処理レベルでの高速化はもはや重箱の隅をつつく程度の改善しか期待できないので,我輩は自分の得意なテーブルで勝負することにします.
2012-04-07 00:59:34![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@m_morise 合成を考えればWORLDは名前の通りものすごく速いので,分析をどうごまかすか力技に任せるのか,と言ったところでしょうか.実装側で速度がどうとでもなると思いますし,下地にするには十分というかものすごく速いはずです.
2012-04-07 01:03:45うちに戻ったら蓄積したログに引っかかる
![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP ログを見るとなんかGPGPUの話をしていたらしい。以前 @heigazen さんのところも確かにCUDAで言語分析とかの話があったけどどうなってるのかな。
2012-04-11 19:48:20![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@ejiwarp どうなんでしょう.本来専門のはずなんですが,あまり詳しくなくてお恥ずかしい…WORLDはじめ音声分析合成系などの低レベルAPIの場合データ数が多すぎて扱いづらいのは間違いないです.データの転送がネックですしね.
2012-04-11 20:26:42![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP GPGPUはやはり画像みたいなものがやりやすいよね。ピクセルの間にあまり関連性が多くないから並行化しやすいとか。音は時間性的なもので....
2012-04-11 20:28:30![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@ejiwarp 組んでみないとわからないのですが,GPGPU内で処理が完結するならお得にはなるかもしれないけど,ちょっといい使い道が思いつかないです.なんかもう,Core i7とかで8スレッド立ててぶん回したほうが楽そうとか思ってしまいます…
2012-04-11 20:30:53![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@shurabaP ただ8スレット以上はサーバー用CPUなんで値段かかるよね。Appendみたいな複数DB同時合成はすごく性能かかるものになると実用化はだいぶ先になるから惜しいね....そこでGPGPUを考えるだがさすがにためになさそう。
2012-04-11 20:32:44![](https://tgfile.tg-static.com/static/web/img/placeholder.gif)
@ejiwarp WORLDの合成速度ならCore2Duoで2コア使えば工夫次第でなんとでも,とか思ってしまいます.合成だけならものすごく速いので,高速化するほどではないです,多分.HMMの学習は時間がかかるので,その辺高速化している人たちはいるみたいですが.
2012-04-11 20:34:37