B級科学者もどきの憂鬱

とある理系になりきれない奴のつれづれなる活動記

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

最近の活動

書くほどの事が無かったので、
またまたこんなに空いてしまいました。
最近やってることを適当に書き連ねていきます。


図書館で、前々からやりたかった、
テンプレートメタプログラミングに関する資料を借りてきました。
目から鱗のテクニックが満載で、とても楽しいです。

ですが、やはり万人向けではないと思いました。
STLやBoostのようなライブラリの作成者のように、
パフォーマンスと柔軟性を極限まで追求する人向け、
という感じを受けました。知っていて損はないでしょうけど。


最近歌い手になった知り合いに頼まれて、
歌い手用のMIXをやることになりました。
音楽の素養は素人だし、センスに至っては素人以下の私に何故、
と思わなくもないですが、知人曰く「理系だろ?」とのこと。
理論に関して「だけ」は多少知ってるけどね……。

とりあえずやってみたら割とお気に召したようでした。
多分これからも参加することになると思います。


TIPSの開発は少しずつ進めています。
動作速度と品質のトレードオフを実現するために、
合成モードをいくつか用意する予定です。

爆速モード、それなりモード、高品質モードの三つです。
もしかしたら、それなりモードと高品質モードの間に
イイ感じモードが入るかもしれません。
ちなみに、モード名は今考えました。

爆速モードは、速度をひたすら優先します。
その分、精度が多少犠牲になり、フラグが色々無効になります。
高品質モードは、論文三つぐらいの内容を
全部詰め込んだ処理を行います。
その分、時間は結構かかります。

元々は、速度と品質のトレードオフを
シームレスに設定できるようにするつもりでしたが、
色々検討した結果、こういう形に落ち着きました。

実現できないというわけでは無いのですが、
現在検討中のアルゴリズムには、
連続的に設定できるパラメータがわずかしかないので、
無理に実装しても、あまり意味はないと思います。

あと、現行のTIPSでは、BREは扱えませんけど、
現在開発中の物では扱えるようになる予定です。
フォルマント修正系のフラグについては、
今までどおり扱えません。

やろうと思えば擬似的に扱えないこともないと思いますが、
多分誰も得しない&結構面倒なので、
熱烈な要望がない限りは実装しません。

現状はこんな感じです。
実装予定はあくまで予定なので、
これからまた変わっていくかもしれません。
スポンサーサイト

勉強とか進捗とか

新年明けましておめでとうございます。
……というにはあまりに時期違いですが、
一応、2013年度最初の記事になりますね。

前回からだいぶ空いてしまいました。
時間自体はそれなりにありましたが、
単に、書くほどのネタが無かったせいです。
というわけで、近況とか適当に書いていきます。

年末年始休みの間に、TIPSエンジンのプログラムを進めました。
休みが終わる頃には、WAVEファイルの読み込み処理まで書きました。
……あれ? もしかして、ほぼ進んでない?

どんなWAVEファイルでも問題なく読めるようにとか考えて、
RIFFファイルの英文の仕様書とか無理して読んだり、
その他色々とめんどくさいことやってた結果がこれだよ!

とはいえ、仕様を詳細に調べ直さないといけない箇所は
多分ここぐらいのものだと思いますので、
以降のプログラムは割とすんなり進む……はずです。

そういえば、次のバージョンでは、パラメータ推定に使うFFTを、
自作ではなく、他のライブラリに置き換える事を考えています。
自作は自作でそれなりに利点はあるのですが、
他のライブラリに比べると、やはり速度がかなり劣るので。

最も速いと言われているのはFFTWですが、
導入が少々面倒なのと、GPLライセンスなので、
これを採用するかどうかは分かりません。

あと、信号処理関連の書籍をもう一度読み直して、
基礎固めをやったりしてます。
前に一回やった分野のはずなのに、
何故か新しい発見があるという謎。

その他、本業関連で英語力がもっと必要だと痛感して、
タイミングよく拾った新品同様の単語帳で、
久しぶりに英語の勉強もやったりしてます。
やばい、高校英語とか半分位忘れてる!

日本語の資料ではあまり突っ込んだ所まで
資料が無いことが多いので、これで英語の論文とか
まともに読めるようになればいいんですけどね。

言い訳とか近況とか

二ヶ月以上も更新できませんでした。
とりあえず生きてます。体調は万全とは言えませんが。
誰か偏頭痛が完治する方法を教えて下さい。

最近は体の不調のせいか、数学や物理の専門書を
電車の中で読めるほど頭が回ってくれないので、
(本業の方には大した影響は無いです)
全然違う分野の啓蒙書を読んだりしています。

最近読んだ分野を列挙すると、民俗学、哲学、経済学etc...
分野がてんでバラバラで節操無いですね。
ただ私は、程度の差はあれど、興味のない分野が無いので、
どれを読んでもそれなりに楽しめます。

例えば日本の民俗に関する本を読んでいると、
色々な言葉の由来を知れたり、日本人の精神性について、
自分なりに新たな発見があったりします。
これだから雑学集めは楽しいんです。

上で書いたことと直接は関係ないのですが、
時間が出来たら、読んだ本のレビューをブログ記事として
書いてみてもいいかなと思っています。
でも、私が読む本のレビューなんて、需要あるんでしょうか。
それを言ったら、このブログの存在意義が無くなりそうですが。

DirectXのプログラムもちびちび進めています。
現在、クラス数がかなり増えてきて(100個ぐらい?)、
その管理方法を考えたり、色々な実装手段を考えたりして、
自分自身、だいぶスキルアップした気がします。

元々あまり進み気ではなかったのですが、
今はやってみて良かったかなと思います。
まだ全然目標のものは出来ていませんが……。

ただ私は、少しこだわりすぎてしまう所があって、
例えばメソッドの重複を極限まで減らそうとしたり、
非常に一般的なシステムにまで適用出来るクラスを作ろうとしたり、
そんな事ばかりしているので、本体以外の所で
どんどん時間を使ってしまいます。

何事も適材適所だと分かってはいるのですが、
でもどうせなら完璧を目指したいですよね。
これは私の性分なので、簡単にはやめられそうにないです。

それから、TIPSの改良も少しだけ行いました。
I/Oの効率がかなり悪かったのに気付いたので、
その部分を最適化してみたら、合成速度が数割上がりました。
まだ最適化の余地があるので、リリースはもう少し後にしようと思います。

音声合成の統一的規格

前回の記事から四週間弱が経過してしまいました。
本当に、どうしてここまで予定が詰まってるのか。
やっぱり年末年始に書き溜めておくべきでしたかね。

前回、力学の多分オリジナル問題を、
次の記事ででも書くと言いましたが、
説明用の図を用意する時間が無かったので、
次回以降(出来れば次回)にします。

ところで最近思ったのですが、
音声合成(歌声合成も含む)ソフトって色々ありますよね。
でも、例えばVOCALOIDのデータをUTAUで扱いたいなんて時には、
そのままでは使えず、適切に変換しなければなりません。

Cadenciiというソフトでは、UTAUもVOCALOIDも同じように扱えますが、
それはプログラムに応じた形に適宜データを変換しているからで、
単にユーザーはそれを意識しないで済むというだけです。

もし音声合成に、例えばMIDIのような統一的な規格があれば、
ユーザーの利便性も向上すると思うのです。
じゃあ、声のパラメータを扱う統一的な規格って、
現在までに何か考案されているのでしょうか。

歌声合成だけであれば、XML-VSQ形式(.xvsq)やMusicXMLなどが、
汎用性もあり今後の拡張にも十分耐えうると思うのですが、
TextToSpeachなどにも使えるようにするのはちょっと難しそうです。

そのような規格が考案され、取り扱うAPIが広く普及すれば、
今後別の音声合成ソフトが開発されても、
比較的簡単にデータのやり取りが行えるようになるはずです。

というわけで、誰か作ってくれませんかね?(笑)

重要なアルゴリズム

現在、様々なアルゴリズムが考案・利用されていますが、
その中でも、特に重要なアルゴリズムって何でしょうか。
今回はそれを、私の独断と偏見で選んでみました。

まず最初は、高速フーリエ変換。
文字通り離散フーリエ変換を高速に行う算法ですが、
例えば多倍長整数の積の計算など、とても広い分野で応用されています。
これ無しでは、恐らく現代の信号処理技術は成立しないでしょう。

次は、クイックソート。
平均実行時間が最も短い整列法として知られています。
データを扱うソフトには必ずと言っていいほど実装されている機能ですが、
どんなデータでも最高の効率が発揮できると言う訳ではなく、
理論的にも結構深い内容を持っていたりします。

三つ目は、差分法。
複雑な微分方程式を差分方程式に変換し、
数値的に解を求めてしまおうと言う手法です。
厳密解の求まらないような微分方程式にも適用できます。
これが無いと、現代の流体力学や構造計算は不可能です。

最後は、遺伝的アルゴリズム。
ある問題についてどのように振る舞うかを記した遺伝子を、
交配させたり突然変異させたりして、
より良い遺伝子(つまり、より良い解)を見つけるという、
生物の遺伝を模擬したアルゴリズムです。
遺伝子の設定を変えるだけで、多種多様な問題について適用できます。

以上、四つをセレクトしてみました。
他に、これも重要だろ! とかありましたら、
コメントにでも書いて下さると、追記するかもしれません。

上の話と全然関係ないんですが、
このブログのアクセス解析見ると、
音声処理関係の検索で来る人が結構いるみたいなんですが、
やっぱソースコードとか載せた方がいいですかね。


>>bagabaさん
お久しぶりです。

CodeGolfはあらゆる言語で行われていますよ。
VBでの結果もたくさんあるので、一度検索してみることをお勧めします。

まぁ、これはハッカー(コンピュータの達人的な意味で)の
知的な遊びとして考案されたものなので、
これでスキルが向上するなんてことは、あまり期待できませんけどね。
でもすごく楽しいのは確かです!
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。