スポンサーサイト

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

【同じタグを付けた記事の一覧】

続・Windows の音声認識に自動学習機能?

2013年06月23日(日)00時32分

結論

前回「Windows の音声認識に自動学習機能?」において、「おそらく自動学習的な機能はないであろう」と書いたのですが、どうもやはり、「使っているうちに結果が変化することがある」ようだ、というのが今回のお話です。
以下、長々と書きましたが、結論を先に書きますと、音声認識を発音学習目的で使用するのであれば、毎回プロファイルを作り直すか、「C:\Users\[ユーザー名]\AppData\Local\Microsoft\Speech\Files\MSASR」フォルダ内にあるファイル群を削除(または退避)しましょう、と。

前回の理屈

今、「音声認識で英語発音を矯正する」ということをしています。
具体的にはまず、「We must respect the will of the individual.」という一文を認識させようと奮闘しており、構成する各単語を、それなりに認識させられるようになりました。

ただこの過程において、「当初、全く認識しなかった単語が、特に何かを変えたわけでもないのに、ある日突然認識され始める」ということが多かったのです。
そのため、「自分の発音能力ではなく、PC の認識能力が向上しているのではないか?」と疑い、その検証のため、各単語が正しく認識されたときの自分の音声を録音し、その WAVE ファイルを新規インストールした PC で認識させてみる、という実験を行いました。
その結果、確率はやや落ちるものの、一応認識はされました。
これをもって、「自身が正しく発音できるようになった結果である」と結論付けることとし、つまり、「PC の自動学習的な機能によるものではない」としたのが前回の内容です。

認識できなくなった

そしてその後、「We must respect the will of the individual.」に関しては、日に何度かは完成文を見ることができるようになり、「ついに第一文終了!」と、意気揚々と第二文に取り掛かりました。
ところが、これまたある日突然、第一文を全く認識させられなくなりました。
それも、かなり早い段階で認識に成功し、その後も長く問題がなかった単語である、「must」や「respect」等が全然認識しなくなったのです。
そして何故か、最後まで手こずった「will」と「individual」は、100% に近い確率で認識できるようになっています。
また、誤認識にはある程度の傾向が見受けられ、「we」が「way」、「must」が「mark」、「respect」が「the fifth」、「of the」が「have to」に、かなりの高確率で誤認します。
つまり、何度やっても「way mark the fifth the will have to individual」という意味不明の文が連発するわけです。

理解不能へのいらだち

前回、「無意識下の学習」というようなことを書きましたが、実際、「なぜできるようになったのか?」が理解できていない、ということは、「なぜできなくなったのか」も、さっぱりわからないということです。
そして、「なぜできないのか」「どこに問題があるのか」がわからない以上、修正のしようもありません。
「たった一文に二か月もかけてまだ出来ない」という自分の無能さ、そして「どこを直せばいいのかわからない」という無力さにいらだち、意地になって、壊れたレコードのように、日に何時間も何日もにわたって唱え続けましたが、相変わらず前述の意味不明な文が表示され続けるばかりでした。

Vista ノート PC との比較

あまりにも認識されないため、ためしに前回比較のために使用した Vista ノート PC で認識させてみると、これが 100% に近い確率で認識に成功します。
念のため、メインで使用中の Win7 自作機と同時に起動して交互に試してみましたが、やはり、「Vista ノート PC は正解文」「Win7 自作機は意味不明文」と、はっきり変わります。
たんにマイクを繋ぎ換えるだけで、自分の発音がそこまで劇的に変化するとは思えませんので、さすがに「これはおかしい」と考えざるを得ません。
そこで、マイクの設定等を比較し、いろいろと変更してみましたが、録音された音声を聞く限り、むしろ Win7 自作機の方が、ノイズの少ない聴きやすい音で録れているように感じます。

トレーニング済み

そこで一つ思い出したのが、この Vista ノート PC は、認識率を上げるためのトレーニングをしていたはず、ということです(このノート PC を使っていたのはずいぶん前だったので忘れていました)。
それで、コントロールパネルの音声認識設定で新規にプロファイルを作り直し、そのプロファイルで認識させてみたところ、確かに Vista ノート PC でも、認識率が落ちました。
ただし、今まで 100% に近かったものが、「数回~十数回に一度」に落ちたという程度で、少なくとも Win7 自作機のような、「万回単位で唱えても認識不能」というようなことはありませんでした。

トレーニングは全言語共通?

これは余談ですが、確かにこのノート PC でプロファイルのトレーニングはしたはずですが、しかしそれは確実に、「日本語認識用のトレーニング」です(英語でトレーニングされても読めませんので)。
つまり、たとえ「日本語認識用のトレーニング」であっても、やれば何故か「英語認識」にも(良い)影響が出る、ということになります。
しかし、認識エンジンがユーザー毎に生成するデータ保存用ファイルは、どうにも言語ごとに別ファイルが設定されており、複数言語で共有している、つまり全言語が共通で参照していそうなファイルというのは、自分が見た範囲ではなさそうに思います。
ですので、この辺りの原理はよくわからないのですが、ともかく、「日本語認識用のトレーニング」をしたデータを消すと、何故か「英語認識能力」まで下がった、というのは確かです。

音声認識用個人データファイル削除で元通り

話をもとに戻しまして、音声に大差がないにもかかわらず、認識結果がこうまで明確に違うというのは、あまりにもおかしすぎる、ということで、ともかくいろいろ試してみようと、音声認識用の個人データファイルを全消ししてみました。
Win7 や Vista では「C:\Users\[ユーザー名]\AppData\Local\Microsoft\Speech\Files\MSASR」フォルダ、WinXP では「C:\Documents and Settings\[ユーザー名]\Local Settings\Application Data\Microsoft\Speech\Files\MSASR」フォルダにあるファイル群全てです(実際にはたぶん英語用のファイルだけでもいいのではないかと思いますが)。
するとなんと、Win7 自作機でも、ちゃんと認識されるようになりました。
あれだけ連発した「mark」も「the fifth」も全く出ません。
Vista ノート PC の新規プロファイルで認識させたときと、同程度の認識率にまで戻ったのです。

なぜそれをしなかったのか

ちなみに、なぜこの「設定ファイル削除」を、これまで試すことがなかったのか、といいますと、自分にとってこの Win7 自作機が、メインの環境であると同時に、自作プログラム等の貴重な実機でのテスト環境でもあるためです。
そのため、「常用するためにどうしても必要な作業」以外はできる限り行わず、なるべく手つかずの状態を維持しようと努めていました。
ですので、この Win7 自作機に関して言えば、音声認識についても、トレーニングはおろか、「音声認識の開始」処理(基本的な初期設定)ですら済ませていません。
そんな状態ですから、音声認識用の個人データは完全に初期の状態のままのはずであり、これが何かに影響するということは、絶対にありえないし、あってはならない、と考えていたのです。

やはり「何か」を学習している

しかしながら、実際にこのファイル群を削除すると、認識結果が明確に変化します。
ということは、このファイル群は、明示的にトレーニングを行わなくとも、普段の認識処理の中から、何かしらのデータを蓄積し、それを認識結果に反映させていることになります。
これも前回に書いたことですが、通常この手の自動学習には、音声とあるべき認識結果(正解文)が必要です。
理屈で言えば、ただ音声だけを大量に入手しても、それに対してどういう結果を返せばよいのかがわからなければ、品質を向上させようがありません。
実際、音声認識のトレーニングでは、「提示された文章を読み上げる」という作業を繰り返すことで、「正解文とそれに対応する音声」をセットで入力していくことになります。
ところが今回のパターンでは、ただ音声だけがひたすら入力されている状況で、しかしそこから「何か」を学習しています。
結局そのために、「間違った結果」を学習し、「間違った結果」を返し続ける、という状態になったものと思われます。

ファジーな理由

もう一つ、以前「Windows の音声認識を JavaScript で(WAVE ファイル入力編)」において、以下のように書きました。

それと、同じ WAVE ファイルを使っても、実行するたびに認識結果が結構変わったります。
デジタルな処理ですから、同じデータで同じ計算をすれば同じ結果が出そうなものなのですが、これもよくわからないところです。

これも、ただ認識処理を繰り返しているだけで、認識エンジンがそこから「何か」を学習し、それを次の認識処理にフィードバックしているとすれば、つじつまが合います。
つまり、認識エンジンが毎回少しずつ学習内容を反映して変化していくならば、当然、返す結果も毎回少しずつ変わっていくわけです。

学習させないためには?

ここまでに書いた理屈が、本当に正しいのかどうかはわかりませんが、ともかく、少なくとも自分の環境において、語学の発音練習という用途のためには、このよくわからない学習機能は邪魔になります。
そこで、何とかこれを停止できないものかと、「TrainingStatus」などという怪しげなレジストリキーを変更してみたものの、音声認識終了後には元に戻ってしまいます。
また、各データファイルを読み取り専用にしてもみましたが、そうすると音声認識が実行されません。
そういうことで、とりあえず今のところ、「学習させない」という方法がわかりませんので、発音練習目的として使用するためには、せめて「学習内容を最低限に抑える」よう、以下のような手段をとるしかないかと考えています。

毎回データファイル削除

練習前に毎回「C:\Users\[ユーザー名]\AppData\Local\Microsoft\Speech\Files\MSASR」フォルダの内容を全消しする方法です。
ファイル名は環境毎にランダムな英数字を振られるようですが、同一環境内では固定的なようですから、BAT ファイルなどで消すようにすれば、手軽な方法と言えます。

毎回プロファイル新規作成

練習前に毎回、コントロールパネルの音声認識設定で、練習用のプロファイルを新規作成します。
この方法ですと、「BAT ファイルで手軽に」というわけにはいきませんが、その代り、普段はメインのプロファイルとして、しかっりトレーニングした認識率の高いものを使用しつつ、練習は癖のつかない汎用的なもので行う、という使い分けができるメリットがあります。

トレーニングデータの移植

なお、「C:\Users\[ユーザー名]\AppData\Local\Microsoft\Speech\Files\MSASR」フォルダに存在する DAT ファイル群ですが、各言語ごとに3~5個のファイルが割り当てられています。
ですので、例えば英語認識用の学習データだけをクリアしたいのであれば、ここにあるすべてのファイルを削除する必要はないわけです(多分)。
で、どのファイルがどの言語に関連するものかという情報は、レジストリの「HKEY_CURRENT_USER\Software\Microsoft\Speech\RecoProfiles\Tokens\{英数羅列1}\{英数羅列2}\Files」に記されています。
このうち、「英数羅列1」の方はプロファイル毎に存在するようですので、複数のプロファイルを使用している場合は、複数のレジストリ情報が作られていると思われます。
そして、その中にあるレジストリキー「1033\L1033.tpc」「AM031033.am」「AM031033.am_bak」「AM031033.fpr」「AM031033.fpr_bak」の値が、英語認識用のデータファイルです。
このうち、末尾に「_bak」と付いているファイルは、文字通りバックアップのようで、初回実行時には生成されず、二回目以降に、前回の AM ファイルと FPR ファイルが複製されるようです。
なお、WinXP では少し構成が違い、「AM031033.am」「AM031033.env」「AM031033.nsc」「AM031033.fpr」の四つとなっていました。
それから、キー名に「1033」という数値が共通していますが、これは十六進数にすると「0x409」となり、つまりアメリカ英語「en-US」を示す言語 ID です(この「言語 ID」は、以前に「パソコンにいろいろな国の言葉をしゃべらせる」でまとめています)。
ですので、例えば日本語の言語 ID は「0x411」で、これを十進数に戻すと「1041」になりますから、「1041\L1041.tpc」「AM031041.am」…というのが、日本語認識エンジン用のデータファイルということになります。
この辺りの情報を押さえておけば、OS の再インストールや PC の買い替え時に、これまでのトレーニングデータを手動で移植する…、といったこともできるのではないかと思います。

関連記事

【同じタグを付けた記事の一覧】
バックアップ Windows 音声技術 語学学習 音声認識 英語発音矯正実験

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
07 | 2017/08 | 09
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
月別アーカイブ
プロフィール

電脳太助

Author:電脳太助
Website:電脳スピーチ web

RSSリンクの表示
メールフォーム

名前:
メール:
件名:
本文:

サイト内検索
Ads by Google
FC2アクセスランキング
Ads by Google
FC2拍手ランキング
ユーザータグ

音楽管理(66)
ポータブル(57)
ソフト紹介(44)
プログラミング(42)
音声技術(41)
自作ソフト(35)
サイト運営(32)
FC2(31)
ブログ(30)
iTunes(27)
Windows(25)
LISMO(24)
音声合成(23)
音声認識(22)
x-アプリ(22)
電子ブック(22)
eラーニング(20)
バックアップ(19)
語学学習(19)
foobar2000(18)
ソースコード(18)
WindowsLiveWriter(15)
画像管理(15)
C++(14)
アフィリエイト(10)
DnspTools(10)
fi-6130(9)
FLAC(9)
JavaScript(9)
ウォークマン(9)
英語音読学習計画(8)
Gracenote(8)
Prolog(8)
ベクター(8)
雑記(8)
CodeBlocks(7)
SyntaxHighlighter(7)
TraConv(7)
spcbght(7)
wxWidgets(7)
VirtualBox(6)
W63CA(6)
DCP-J552N(6)
WinRT(6)
WindowsLiveMesh(6)
iGoinLM(6)
英語発音矯正実験(6)
ExactAudioCopy(6)
MP3Gain(6)
LAME(5)
音楽技術(5)
Mery(5)
楽器演奏(5)
GalateaTalk(4)
nLite(4)
WindowsLiveSkyDrive(4)
ホームページ(4)
GalateaProject(4)
MIDI(4)
LLVM(4)
PC-98(3)
カウンター(3)
AACGain(3)
iTCDini(3)
OverCutChecker(3)
拍手(3)
PK-513L(3)
UniversalExtractor(3)
アクセスランキング(3)
ImageCompositeEditor(2)
アクセス解析(2)
OCR(2)
qtaacenc(2)
資格試験(1)
AquesTalk(1)
AquesCmdDl(1)

FC2アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
135位
アクセスランキングを見る>>

[サブジャンルランキング]
ソフトウェア
16位
アクセスランキングを見る>>
FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。