問題タブ [htk]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cmd - HTK ヘレストの問題
HTK (HMM ToolKit) を使用して音声認識を行っていますが、次の奇妙なエラーが発生します。
エラー [+7390] StepAlpha: アルファ プルーンに失敗しました sq(16) > qHi(15)
プルーニングを試してみましたが、15/16 だけが他の数字に変更され、同じエラーが発生しました。プルーニングを無効にしようとしても、このエラーが発生し続けます。
修正できることがわかっていれば、どこで何かを探すべきかわかりません。
これは私のHERestコマンドです:
HERest -C config -I Label.mlf -t 250 100 1000 -S trainlist.scp -H hmms\0\vFloors -H hmms\0\hmm0 -M hmms\1 ワードリスト
HTK の本を調べましたが、エラー番号 7390 については何もありません。
bash - プログラムからのエラーコードのチェック - 特に HTK Toolkit
やHTK
などのコンポーネントを呼び出して、テキストの電話レベルの境界を計算するbash スクリプトがあります。操作が成功したかどうかを確認するにはどうすればよいですか? 私は次のことを試しました: HCopy
HVite
./findWordBoundary.sh <input args> |& tee run.log
上記のアプローチは機能しません。HTK
ユーティリティによって出力されるすべてのものはrun.log
、Error ステートメントと条件を除いて に書き込まれます。したがって、grep
onの使用run.log
は非スターターです。
x=./findWordBoundary.sh <input args>
も機能しません。エラー状態を除いて、メッセージの負荷全体をダンプするだけです。x.
私が探しているのはこれです:操作がエラー
になったときにログを記録し、適切なアクションを実行する方法。HTK
また、これはより一般的な bash ユーティリティに拡張できると思いますwget
。スクリプト内から、bashユーティリティからログとエラーをどのように処理し、それを処理しますか(たとえば、 をwget
返すとき404:Not found exception
)?
ありがとう、
スリラム。
signal-processing - HTK と接続された数字認識装置
HTK を使用して基本的な接続数字認識装置を開発しようとしています。現時点では、レコグナイザーは 0 ~ 10 の数字のみを認識する必要があり、話者に依存します (現時点では問題ありません)。認識方法は次のとおりです。
- ユーザーが録音した wavfile を取得し、MFCC を作成します。
wordnet と辞書を入力として mfcc ファイルで HVite を実行します。
hmm モデルのトレーニングに関する注意:
初期の HMM モデルをトレーニングするための基本単位は、話された数字の文字列から選別されています。最終的に各桁の約 20 ユニット (約) が初期モデルの作成に使用されます。埋め込まれたトレーニング モデルは、基本ユニットを連結することによって合成されています (連結する基本ユニットはランダムに選択されます)。この方法で生成されたセンテンスの総数は約 20000 です。別の 109 センテンスは、テスト段階で実際に話された単語から取得されました。
私が直面している問題は次のとおりです
。
例) 入力: 99102、出力: 989818082
入力からのすべての数字が正しく認識されていることに注意してください。出力に余分な数字が導入されているだけです。mlf ファイルを見ると、これらの単語に関連付けられている尤度値も同様であることがわかります。なぜこれが起こっているのでしょうか?
これに対する解決策をネットで調べましたが、何も見つかりませんでした。どんな助けでも大歓迎です。
machine-learning - HTK による話者適応
モノフォン ベースの認識装置を特定の話者に適合させようとしています。で与えられたレシピを使用していHTKBook 3.4.1 section 3.6.2
ます。HHEd
spのように呼び出している部分に 行き詰まっています:
HHEd -A -D -T 1 -H hmm15/hmmdefs -H hmm15/macros -M classes regtree.hed monophones1eng
最終的に発生するエラーは次のとおりです。
ERROR [+999] Components missing from Base Class list (2413 3375)
ERROR [+999] BaseClass check failed
フォルダーには、次の内容を持つclasses
ファイルが含まれています。global
~b ‘‘global’’<br>
<MMFIDMASK> *
<PARAMETERS> MIXBASE
<NUMCLASSES> 1
<CLASS> 1 {*.state[2-4].mix[1-25]}
内部のhmmdefs
ファイルにhmm15
は、いくつかの混合コンポーネント (各電話の状態ごとに 25 の混合コンポーネントを使用しています) がありませんでした。私は、ランダムな平均値と分散値を持つ混合成分を与えることによって「空白を埋める」ことを試みましたが、重みはゼロでした. これも効果がありませんでした。
うーんは左右のうーんで、5 つの状態 (3 つの発光) があり、各状態は 25 のコンポーネントの混合物によってモデル化されています。各コンポーネントは、EDA コンポーネントを含む MFCC によってモデル化されます。電話機は全部で 46 台あります。
私の質問は次
のとおりです。 1. 呼び出す方法はHHEd
正しいですか? モノフォンの場合、上記の方法で呼び出すことはできますか?
2. 基本クラス リスト (rtree.base
すべての混合コンポーネントを含める必要があることはわかっていますが、これらの欠落している混合コンポーネントはどこにありますか?
注: さらに情報が必要な場合はお知らせください。
編集 1: ファイル regtree.hed には以下が含まれます。
ありがとう、
スリラム
speech-recognition - 音声認識における強制アライメントの問題-HTK
ユーザーがプロンプトの後に文を繰り返すように求められるシステムがあります。これは、(文の)事前定義された単語レベルのラベルファイルHTK
へのユーザーの口頭文を使用して、時間調整された電話レベルのファイルを取得します。force-align
HMMは大量のデータでトレーニングされており、。を使用して非常に正確な時間調整されたファイルを提供しHVite
ます。私の問題は、ユーザーが話す必要のある正確な文を話さない場合に発生します。例を挙げて説明しましょう。
話す必要のある(ユーザーに知られている)ターゲット文の単語レベルのラベルファイル:これは
非常に良い日です。ユーザーのコメント(ケース1):これはとても良い日です。
この場合、ユーザーはまったく同じ文を繰り返しています。時間調整されたファイルは非常に正確で、すべてが順調です。ユーザーのコメント(ケース2):これは良い日です。
この場合、強制位置合わせは、上記のように単語レベルのラベルファイルを使用して実行されます。結果として得られる時間調整されたファイルには、ユーザーが話したことがない単語の時刻が表示されます(元の文には存在するが、ここには存在しないVERYなど)。
HTK
これを検出し、場合によっては回避する 方法はありますか?
解決策の1つは、音声認識を行い(無限の語彙が必要になるため、それ自体が非常に難しい問題です)、話している内容が正しくないことをユーザーに知らせる、ある種のフロントエンドプリプロセッサです。
これを可能にするツール/コマンドラインオプションはありますHTK
か?
PS:詳細が必要な場合に備えて、私に知らせてください。
ありがとう、
スリラム
signal-processing - ある MFCC タイプから別のタイプへの変換 - HTK
HTK
ワード スポッティング タスクでツールキットを使用していますが、従来のトレーニング データとテスト データの不一致があります。トレーニング データは、「クリーンな」(マイク経由で録音された) データのみで構成されていました。データはパラメーターに変換さMFCC_E_D_A
れ、HMM (電話レベル) によってモデル化されました。私のテスト データは、固定電話と携帯電話のチャネルで記録されています (歪みなどを招きます)。MFCC_E_D_A
パラメータを使用すると、HVite
出力が正しくなくなります。cepstral mean normalization
パラメーターを使用したいのですがMFCC_E_D_A_Z
、HMM はこのデータでモデル化されていないため、あまり役に立ちません。私の質問は次のとおりです。
- に変換する
MFCC_E_D_A_Z
方法はありますMFCC_E_D_A
か? そのように私はこのように従います:input -> MFCC_E_D_A_Z -> MFCC_E_D_A -> HMM log likelihood computation
. MFCC_E_D_A
パラメーターをモデル化する既存の HMM を に変換する方法はありますMFCC_E_D_A_Z
か?
上記の (1) を行う方法がある場合、構成ファイルはHCopy
どのようになりますか? HCopy
変換用に次の構成ファイルを作成しました。
SOURCEFORMAT = MFCC_E_D_A_Z
TARGETKIND = MFCC_E_D_A
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12
ENORMALISE = T
これは動作しません。どうすればこれを改善できますか?
speech-recognition - 数字以外の認識にhtkを使用する
私は音声認識アプリケーションにsphinx4と組み合わせたHTkを使用しようとしています。私は入力をwavファイルとして提供しており、スフィンクスが提供する「Transcriberdemo」と「LatticeDemo」を使用していますが、出力はほとんど受け入れられませんでした。そこで、Sphinx4でHTKを導入することにしました。しかし、結果の出力は何マイルも離れているように見えます。私がやっていることよりも、構成をさらに微調整できると確信しています。私は、htkとsphinx4の使用に関連するチュートリアルがあるかどうかを調べるためによく検索しました。この素晴らしいブログ(http://nsh.nexiwave.com/2009/09/using-htk-models-in-sphinx4.html)を除けば、私は他に何も見つけていません。誰かが私の認識精度を向上させるためにここで私を助けてくれますか?
私の設定ファイルはsphinxです:
どんな助けでも本当にありがたいです
c++ - ffmpeg でデコードされたオーディオ パケットを処理する
私の他の投稿に続いて、デコードされたオーディオ パケットに対して MFCC 抽出のような処理を行うことができるかどうか疑問に思っています。私が使用するコードは、ffmpeg を使用して mpeg-2 ファイルからオーディオとビデオをデコードします。このライブラリはフレームを 1 つずつ取得することを許可しているため、ビデオの処理は opencv を使用して行われます。対応するオーディオ サンプルを同時に処理する必要があります。
ありがとう。
c++ - ファイルのフォーマットを理解する
ファイルの読み取りについて質問があります。手書き認識の開発を行っているのですが、使用しているツールがトレーニング データ ファイルを読み取らないようで、イライラしています。
したがって、完全に正常に機能するファイルが1つあります。そのファイルの内容の一部をここに貼り付けます。
ファイルは、最初の 12 バイトが 2 つの long と 2 つの short であり、データが 4 、 1000 、 1024 、 9 であると私が知っている形式ですが、T はファイルを読み取ってこれらの値を取得できません。
実際には、最初の 12 バイトを上記と同様の形式で書き込みたいのですが、その方法がわかりません。
残りのデータは浮動小数点であることを忘れていました。データをファイルに書き込むと、これらのシンボルではなく人間が読めるテキストが取得され、これらのシンボルを読み取っているときに実際の値が取得されません。これらのシンボル全体で実際の浮動小数点数と整数を取得する方法は?
私のコードは
a
、b
、c
およびで取得した値d
は、実際の値ではなく、85991456、-402448352、8193、および 2336 です。