yoshi.shun.kaldi

Forum Replies Created

Viewing 5 posts - 1 through 5 (of 5 total)
  • Author
    Posts
  • yoshi.shun.kaldi
    Participant

      お忙しいところご回答いただきありがとうございました。

      >目的に関して、かしこまりました。
      >オフライン処理の場合、そしてマイクアレイを使用しない場合でしたら、
      >HARK自体は不要になり、Kaldiの特徴量作成とオフラインデコードツール
      >(steps/make_mfcc.shとsteps/nnet/decode.sh)のみで出来ます。
      >その手順に関してはKaldiのCSJレシピをご参照ください。

      ご教示いただきありがとうございます。
      マイクアレイを使わないかつオフライン処理の場合は、
      HARKではなくKaldiのツールで行える旨承知いたしました。

      確認し試してみたいと思います。

      >HARK特徴量に対応した音響モデルの作成ですが、
      >下記投稿の通り、HARKで保存したMFCCまたはMSLS特徴量をfeats.scpファイルに列挙し、
      >copy-feats –htk-inコマンドを使用して頂ければ
      >Kaldiアーカイブに変換されたデータを通常のレシピに使用出来ます。
      >大変恐縮ですが、HARKは商品ではなくオープンソースプロジェクトのため、
      >HARKに対応したKaldi音響モデル作成に関してのサポートは出来かねます。ご了承ください。

      上記旨承知いたしました。
      今後は、マイクアレイによる認識も考えているため今後の参考にさせていただきます。

      >MFCCとMSLSは特徴量作成に用いる手法で、
      >ファイルの扱いは同じですが後者の方が若干性能的に良いため
      >サンプル音響モデルに使用しております。
      >またMSLSはKaldiのfbankに近い処理を行います。

      MSLSはfbankに近い処理を行うとのこと承知いたしました。

      この度はご多忙に関わらずご回答いただき誠にありがとうございました。
      引き続き、HARKおよびKaldiについて学んでいきたいと考えております。
      今後またお力添えいただくこともあるかと存じますが、
      その際は何卒よろしくお願いいたします。

      以上です。今後ともよろしくお願いいたします。

      yoshi.shun.kaldi
      Participant

        迅速なご回答をありがとうございます。大変助かります。
        以下、インラインにて失礼いたします。

        >現状は特徴量を40次元に設定して処理が通るようになりましたが、
        >fMLLR法を用いた音響モデルですとミスマッチがあり、認識性能が出ません。

        クラッシュは防げるものの認識できない旨承知いたしました。

        >Kaldi本家のレシピのままですとfMLLR(話者適応処理)を使用しますが、
        >その手法はオンライン処理に向いていないためkaldidecoderは対応しておりません。

        fMLLR法の場合、オンライン処理に向いていないとありますが、
        オフライン処理の場合は認識させることはできるのでしょうか。

        私自身の直近で実施したいことといたしましては、
        マイク経由ではなく事前に用意した「こんにちは」などの
        “発話者一人が静音環境下が録音した音源”を認識させたいと考えております。

        理由といたしましては、
        OSSのjuliusやサードパーティ製の音声認識エンジンと認識精度を比較する目的で、
        既に用意してある音声ファイルを使用したいと考えておりご質問させていただいている次第です。

        >恐れ入りますが、HARK+kaldidecoderを使用する場合はfMLLRを使わず、
        >MFCC/MSLSそのもので音響モデルを学習する必要があります。

        もし、上記に記載させていただいたオフラインによる認識ができない場合は、
        私自身でHARK+KaldiDecoderに対応する音響モデルの作成をしたいと思います。
        # その場合も事前に用意した音声を認識させるようにしたいです。

        例えば、nnet1モデルでも以下の手順で行えるものなのでしょうか。

        KaldiとHARKそれぞれでどのようなデータが必要でどのような手順が
        必要なのかあまり理解できておらずご教示いただけると幸いです。

        音響モデルの作成について

        >また、HARKのMFCCとKaldiのMFCCが若干異なりますので、
        >HARKのSaveHTKFeatureノードで出力した特徴量を用いて
        >音響モデルを学習した方が条件としてマッチすることになります。

        MFCCあるいはMSLSと2つの方法で音響モデルを作成かと存じますが、
        私のような初心者が行う場合はどちらが比較的容易に行えますでしょうか。

        以上です。
        引き続き、何卒よろしくお願いいたします。

        yoshi.shun.kaldi
        Participant

          五月雨で申し訳ありません。
          追加で1点確認させてください。

          >HARKの分離音をSaveWavePCMで出力して学習に使用された場合などは

          こちらの内容についてですが、
          そもそもデフォルトのKaldi+CSJオリジナル音源で音響モデルを作成した場合、
          2SPK-ja.wavのような複数話者が話している音源は認識できないため、
          “HARKの分離音をSaveWavePCMで出力して学習”が必要ということでしょうか。

          再度、”dnn5b_pretrain-dbn_dnn_smbr_i1lats”で作成されたモデルで、
          差し替えて動作させてもやはり想定する認識結果とならず手が詰まっております。
          # また現状のnnet1モデルはCSJオリジナルのクリーンな音源でのみ学習したものです。
          # harkの分離音などの学習はしておりません。
          # 現在の目標としては発話者一人が静音環境下が録音した音源を認識させたいと考えております。

          ● 認識結果(kaldi_out.txt)
          0, 135.0, 
          1, 105.008911, か
          2, 64.972717, 
          3, 40.01096, か
          5, -35.024876, 
          4, 45.0, 
          11, 120.000725, 
          10, 94.992081, 
          6, 45.0, 
          7, -35.024876, 
          9, -35.024876, 
          8, 49.98904, 

          差分としては必要最低限に抑え、
          以下の変更で実施いたしました。

          ● online.conf (online_chain.confと差し替えました)
          --port-mfcnet=5530
          --port-result=10500
          --filename-words=./my_model_conf/words.txt
          --filename-align-lexicon=./my_model_conf/align_lexicon.int
          --max-active=2000
          --filename-feature-transform=./my_model_conf/final.feature_transform
          --filename-nnet=./my_model_conf/final.nnet
          --filename-mdl=./my_model_conf/final.mdl
          --filename-class-frame-counts=./my_model_conf/ali_train_pdf.counts
          --filename-fst=./my_model_conf/HCLG.fst
          --splice=17
          
          ● MFCCExtraction (MSLSExtractionと差し替えました)
          ・FBANK_COUNT = FBANK_COUNT ★ MSLSExtractionと同様の値。
          ・NUM_CEPS = 12→40 ★40に変更。
          ・LIFTERING_COEF = 22
          ・USE_POWER = false

          お忙しいところ大変申し訳ありませんが、
          ご回答いただけると幸いでございます。

          yoshi.shun.kaldi
          Participant

            お世話になっております。
            お忙しいところ詳細なご回答ありがとうございます。

            ご教示いただいた内容を参考に以下の手順(※1)で動作させることができました。
            ありがとうございます。大変助かりました。

            また、動作させる中で大変恐れながら1点質問がございます。

            私の最終的に実現したいことといたしましては、マルチマイクではない通常マイクで録音した音声ファイル(例えば、発話者一人が静音環境下が録音した「おはようございます」など一言で終わるwavファイル)を、”2SPK-ja.wav”と差し替えて認識させてみたいと考えております。

            ご教示いただいた内容で動作させることができましたので、早速任意の音声ファイルと差し替えたところ正常に動作する(クラッシュしない)ものの認識結果が出力されないでおります。(kaldi_out.txtに何も出力されない)
            # sox –i 2SPK-ja.wavで情報は確認しbit数等を合わせた音声ファイルを使用しております。

            認識させる上で何か設定が必要でしたらご教示いただけないでしょうか。

            また、”2SPK-ja.wav”を認識させた場合は想定(HARK_recog_3.0.0_practice2を修正しないで認識させた結果)とは大分異なる結果となっております。

            ●認識結果(自作nnet1による”2SPK-ja.wav”の認識結果)

            0, 135.0, いう
            1, 105.008911, じ か
            2, 64.972717, か きく
            3, 40.01096, か
            5, -35.024876, ちゅ いう いう 地域 いう 
            4, 45.0, いう い いう い 
            11, 120.000725, いう
            10, 94.992081, か き
            6, 45.0, か いう い 言う か い 言う か
            7, -35.024876,  いう  言う か
            9, -35.024876, 釣っ  いう 
            8, 49.98904, か い  いう  言う か

            お忙しいところ大変恐縮ではございますがご回答いただける幸いでございます。

            以上です。
            何卒よろしくお願いいたします。

            (※1)
            以下試した手順となります。

            1.HARKのネットワークファイルの差し替え
            ご教示いただいた通り、HARK_recog_2.3.0.1_practice2を使用するのではなく、
            HARK_recog_3.0.0_practice2を使用しネットワークでは以下の変更をいたしました。

            ● HARK_recog_3.0.0_practice2(sub_recognitionシート)の変更

            変更箇所:MSLSExtraction ノード ⇒ MFCCExtraction ノードに変更

            パラメータについては以下の通りです。

            ・FBANK_COUNT = FBANK_COUNT ★ MSLSExtractionと同様の値。
            ・NUM_CEPS = 12→40 ★40に変更。
            ・LIFTERING_COEF = 22
            ・USE_POWER = false

            2.KaldiDecoderに渡すconfigファイルの変更
            こちらはHARK_recog_2.3.0.1_practice2のconfigに加え、ご教示いただいた通り--splice=17を追加いたしました。
            # .nnetや.mdlなどはnnet1モデルを使用しております。

            --port-mfcnet=5530
            --port-result=10500
            --filename-words=./my_model_conf/words.txt
            --filename-align-lexicon=./my_model_conf/align_lexicon.int
            --max-active=2000
            --filename-feature-transform=./my_model_conf/final.feature_transform
            --filename-nnet=./my_model_conf/final.nnet
            --filename-mdl=./my_model_conf/final.mdl
            --filename-class-frame-counts=./my_model_conf/ali_train_pdf.counts
            --filename-fst=./my_model_conf/HCLG.fst
            --splice=17 ★追加
            yoshi.shun.kaldi
            Participant

              お忙しい中迅速なご回答いただき誠ありがとうございます。

              言葉足らずな質問で申し訳ございません。

              目的といたしましては、HARK_recog_2.3.0.1_practice2で使用しているモデルを
              私自身がKaldi+CSJコーパス+IRSTLMで作成したnnet1モデルへ入れ替えたいです。
              # 既に私自身が作成したnnet1モデルがあるためそれを用いてHARK_recog_2.3.0.1_practice2を動作させたいです。

              nnet3モデルを推奨されているとのことですが、
              私の環境上直近で用意できるのがnnet1モデルのみであるため、
              どうにかnnet1で動作させたいという思いがございます。
              # 目下、私自身が作成したnnet1モデルで動作実績を作りたいです。

              そのためkaldi nnet1 model samplesとある、
              HARK_recog_2.3.0.1_practice2を使用しモデルを入れ替えたところ、
              以下のエラーとなりご質問させていただいた次第です。

              [ERROR] Non-matching dims on the input of <AddShift> component. 
              The input-dim is 1400, the data had 189 dims.

              ご教示いただいた内容からnnet3の場合Kaldiのモデル作成からやり直す必要が
              あるように見受けられますがnnet1の場合も同様なのでしょうか。

              KaldiおよびHarkに触れてからまだ日が浅い部分もあり、
              まずは動作させるというところ目指しております。
              大変恐れながらnnet1で動作させる方法をご教示いただけると大変助かります。

              以上です。
              何卒よろしくお願いいたします。

            Viewing 5 posts - 1 through 5 (of 5 total)