スポンサーサイト

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

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

Windows の音声認識を JavaScript で(WAVE ファイル入力編)

2012年02月13日(月)00時18分

WAVE ファイルを音声認識

今回は WAVE ファイルを音声認識にかけ、文字列化する方法についてです。
基本的な知識や準備については、「Windows の音声認識を JavaScript で(基礎編)」をご覧ください。
また、「音声認識」タグで当ブログの音声認識関連の記事が一覧できますので、目次代わりにご利用ください。

サンプルの内容

今回のサンプルは、スクリプトと同じフォルダにある「WAVE」フォルダ内に存在する WAVE ファイルを音声認識し、結果を「スクリプト名.txt」として出力します。
つまり、前回「Windows の音声認識を JavaScript で(録音再生編)」のスクリプト「DictJS01.js」で生成した WAVE ファイルを認識させよう、ということですが、もちろん IC レコーダーなどで録音しておいた WAVE ファイルを「WAVE」フォルダに入れておけば、それらを対象に認識処理が行われます。

サンプルの実行

DictJS02.js ← 矢印左側の文字の上で右クリックし、「対象をファイルに保存(A)…」して保存します。
保存したスクリプトファイルを右クリックし「プロパティ」を見たときに、「セキュリティ:このファイルは他のコンピュータから取得したものです。このコンピュータを保護するため、このファイルへのアクセスはブロックされる可能性があります。」と書かれている場合は「ブロックの解除」をしてください(しなくても使えますが)。
これ以降はサンプルの内容についての補足説明を書いていきます。

詳細説明

といっても、「WAVE」フォルダの存在確認や WAVE ファイル名一覧の取得、あるいは結果の TEXT ファイル出力といった枝葉の部分がいくつか追加されているため、いくらか見通しが悪くなってはいますが、これらを除いた「音声合成」処理の部分は単純です。 
作業としては、FileStream オブジェクト(前回「録音再生編」で説明)に、対象となる WAVE ファイルを読み込み、それを Recognizer オブジェクトの AudioInputStream プロパティに設定するだけです。
あとはマイク入力のときと同じく、認識処理の終了を待っていれば、RecoContext オブジェクトによって Recognition 関数が呼び出されます。
当然、マイク入力のときとは違い、マイク番号の設定は不要です(むしろするとエラーが出ます)。

必要最小限のコード

サンプル「DictJS02.js」から枝葉の部分を払い、「TEST.wav」という名の WAVE ファイル名を読み込んで、認識・表示するだけのコードにしますと、以下のようになります。

//音声認識オブジェクトの生成。WAVEファイルの認識には「Shared」でなく「InProc」を使う。
var RecoContextObj=WScript.CreateObject("SAPI.SpInProcRecoContext","Recog_");
//「InProc」では「RecoContext → Recognizer」の順でないとなぜかうまくいかない。
var RecognizerObj=RecoContextObj.Recognizer;
//「Grammar」オブジェクトの生成。
var RecoGrammarObj=RecoContextObj.CreateGrammar();
//WAVEファイル格納用オブジェクトを生成。
var FileStreamObj=WScript.CreateObject("SAPI.SpFileStream");

//WAVEファイルを読み込み設定(0=SSFMOpenForRead)で開く。
FileStreamObj.Open("TEST.wav",0);
//読み込んだWAVEファイルを音声認識オブジェクトの入力元に設定。
RecognizerObj.AudioInputStream=FileStreamObj;
//文法規則の適用(実質的には認識開始の合図)。
RecoGrammarObj.DictationSetState(1);
//ダイアログを出して認識終了まで待機。
WScript.Echo("認識処理の終了を待ちます。");
//認識が終わればWAVEファイルは閉じる。
FileStreamObj.Close();

//認識成功時に呼び出される関数。
function Recog_Recognition(StreamNumber,StreamPosition,RecognitionType,Result)
{
	//認識した文章を表示。
	WScript.Echo(Result.PhraseInfo.GetText());
}

認識率の悪化

今回のサンプルを、実際に WinXP 環境下で試してみたところ、何故かはわかりませんが、認識率があまりよくありません。
前回「録音再生編」のサンプルの段階では、100% の認識率を示した音声を保存した WAVE ファイルであっても、今回のサンプルにかけると(感覚的に)7~8割程度に落ちました。
それを考えると、前回「録音再生編」では、

ですのでおそらく、SAPI5 ではマイク音声を内部的に 16kHz16BitMono として録音し、解析しているのではないかと思われます。

というように書いたのですが、もしかしたらマイク入力時には内部的にもっと高い音質で処理しており、Recognition 関数に渡される際に 16kHz16BitMono に落とされたりしているのかもしれません。
ただ、サブ PC の Win7 環境下ではそれほど悪化しなかったため、何かハードウェア環境等に関連した別のことが原因である可能性もあるのですが。

ファジー

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

できれば Win7 で

まだ評価を下せるほどに試行を重ねたわけでもないのですが、とりあえず試した範囲では、少なくとも「WinXP + Speech SDK 5.1」という組み合わせでの WAVE ファイル認識は、ちょっと使い物にならないレベルでした。
マイク入力で認識結果を逐次確認しながら、というような使い方であれば、この組み合わせ(WinXP + Speech SDK 5.1)でもそれなりに実用レベルであると思うのですが。
しかし、Win7 で標準で付いてくる音声認識エンジンは、やはり WinXP のものより精度が良いようで、そこまでひどい結果は出ませんでした。
ということで、例えば出先で IC レコーダーにメモ代わりに吹き込んでおき、帰ってから PC の音声認識にかけて清書する、というような用途であれば、できれば Win7 がお勧めです。

関連記事

【同じタグを付けた記事の一覧】
ソースコード プログラミング JavaScript 音声技術 音声認識

スポンサーサイト

コメントの投稿

非公開コメント

最新記事
最新コメント
Amazonおまかせリンク
カテゴリ
タグクラウド
Amazonお買い得ウィジェット
カレンダー
09 | 2017/10 | 11
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アクセスランキング
最新トラックバック
アクセスランキング
[ジャンルランキング]
コンピュータ
161位
アクセスランキングを見る>>

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