タグ: ruby

  • 記録:Ruby講演(2009年3月島根)

    Twilog で取得した過去のTwitterログの第2弾です。
    2009年03月23日(月) 電子情報通信学会 2008年度HCGシンポジウム(島根大学)招待講演(まつもとゆきひろ氏)のつぶやきです。
    自分の発言と中継の発言を区別しやすくするための書式の配慮(いわゆるtsudaる技術)をまだ意識できていませんでした。
    (フォロワーの方を混乱させてしまったと思います)
    私が副委員長をつとめている福祉情報工学研究会(WIT)はHCG(ヒューマンコミュニケーショングループ)に属しており、関連研究会同士でイベント企画の開催に関する相互協力を行っております。
    下記の企画はWI2研究会によるものです。
    2009年は個人的には、手段として Ruby や Rails を使いこなそうと努力した一年でした。heroku もいいサービスだと思ったのですが、delayed-job を実質値上げされてしまったので、ちょっと微妙な気分です。。
    私はこの1~2年のあいだ、電車の中で Railscasts や Rails Envy Podcast を見たり聞いたりして「Rubyコミュニティのノリの良さ」を常にリスペクトしています。でも年末になって気がつくと Python で仕事していたり Python を周囲に推奨していたりする今日この頃です。。
    (さらに…)

  • 島根県CMSの技術

    「島根県CMS」はRuby on Railsで作られたオープンソースソフトウェアの行政機関向けCMSです。このシステムの中で音声合成エンジン GalateaTalk がどのように使われているかを理解し、今後どのように改良のお手伝いをしていくべきなのか考えたいと思っています。

    以前「島根県CMS」について日記を書いてからずいぶん時間が立ってしまったのですが、やっとソースを眺めたり動かしてみたりする作業に手を付けました。配付パッケージに書かれているインストールの手順は複雑そうなので、あえてひねくれて手順を逸脱しながら作業してみることで、ちょっとでも内部の仕組みを明らかにできればと思います。

    作業環境はUbuntu Linux 9.04です。

  • rubyhtk

    HTKに関する先日の考察を踏まえて ruby による HTK ラッパーを実装してみました。

    いまは連続数字音声認識のタスク(CENSREC-4の音声をrawからwavに変換したデータが対象)に依存したスクリプトになっているのですが、

    $ rake clean

    $ rake

    $ rake train

    $ rake hvite

    $ rake hresults

    のように使うことができます。

    実装における基本的な考え方は

    • インタフェースが複雑であったり安定しない場合は、目的に応じて自前のラッパーをかぶせる
    • 手続きではなくモデルに着目してクラスを設計する

    というところでしょうか。もはや HInit と HCompV と HRest の違いで初心者が躓くのは時代遅れのような気もするし、やりたいことをコーディングするときに入出力をファイル名やディレクトリ名で指定することも直感的ではないと思うのです。

    下記では、音響モデルをコーパスで学習しながら精緻化するプロセスを、Model のインスタンス配列によって扱っています。

    models = []
    models << Model.first_train(data0,label)
    while models.last.num_mixes < TARGET_NUM_MIXES
    models << models.last.mixup_train(data0,label)
    end
    models.last.vite(data1,recout)
    

    first_train メソッドはプロトタイプのモデルを作る処理、HCompV で平均と分散の初期化をする処理、HERest で最初の連結学習を行う処理をまとめてラップしています。クラスメソッドになっており、新しい Model クラスのインスタンスを返します。

    mixup_train メソッドは Model のインスタンスメソッドです。HHEd でガウス分布の混合数をひとつ増やし、HERest を再度実行し、学習された新しいモデルのインスタンスを返します。メソッドの中で新しいインスタンスが生成されています。

    Model クラスのインスタンスの実体は、一時ディレクトリに作られる MMF ファイルですが、ファイルやディレクトリに通し番号を付けて管理する作業を Model クラス実装の中に隠しています。

    Model のインスタンスについて、dir メソッドで MMF が保存されたディレクトリ名を返します。また num_mixes メソッドは混合数を返します。

    認識結果を得る HVite コマンドは Model の vite メソッドにラップされています。vite メソッドの引数で認識対象データを指定します。MFCC (*.mfc) ファイルのリストが格納されたスクリプトファイル名を指定しています。

    まだまだ中途半端な実装ですが、なかなか興味深い方向性かなと思っています。

    R のクラス設計をお手本に考えると、HVite や HResults などの出力をクラス化するのもよさそうです。

    • 2009-06-27 : メソッドの説明を加筆しました。
    • 2009-07-02 : wav 変換されたデータが対象であることを加筆しました。