FC2ブログ

VS2017-はじめの1/10歩(6):音声辞書の調整

   プログラミング [2019/02/27]
前回のコードでは、認識(聞き取り)した後の処理について説明してませんでした。
少し補足します。

WM_RECOEVENTメッセージは、「話した内容をテキストに落としましたよ」というときに発信されて、
その内容はSPEI_RECOGNITIONというイベントIDになります。
その受け取りの処理を行っているのが、RecogEvent()という関数内になります。
関数内では、グローバル変数にマルチバイトストリングとして取り出してます。
さらにその後、ウィンドウプロシジャ内からChecKeyWord()で、期待しているキーワードが含まれているかをチェックすることを想定しています。
まあ、そこら辺りは「ご自由に」ってことで、省略してます。

例えば、
//----------------------------------------------------------

pos = (PTCHAR) _mbsstr((const unsigned char *) g_szRecogText, (const unsigned char *) pKeyWord);
if (pos != NULL) {
//###debug->
//wsprintf(g_MsgBuf, "キーワード発見!!=%s", pTxt);
//MessageBox(NULL, g_MsgBuf, "音声認識", MB_ICONERROR|MB_OK);
//###debug<-
return TRUE;
}

//----------------------------------------------------------

とかでいいかなと思います。


では、Windowsに含まれる音声認識機能で、少しでもうまい具合に言ったことを文字にしてくれるようにする設定です。

●聞き取りたいキーワードを音声辞書に登録
 例えば、こんにちは/ハロー/ニイハオ/ナニョハセヨを日本語音声認識で認識させたい
 場合、以下の手順で音声辞書に登録する。
 
◆Windows7の場合
[コントロールパネル]を開いて、右上検索欄に「音声辞書」と入力して検索し、さらに表示される「Windowsヘルプサポートで"音声辞書"を検索します」をクリック

「Windowsヘルプとサポート」ダイアログで「1.音声辞書で単語を追加または編集する」をクリック

説明文が表示されるので「音声辞書に単語を追加するには」をクリックし、「1.クリックして[Windows音声認識]を開きます。」をさらにクリック

「音声認識」のウィンドウが画面上部中央辺りに出るので、「オフ」と表示されている場合は、マイクのアイコンボタンをクリック

“音声辞書を開く”とマイクに向かって発話する。

「音声辞書」ダイアログが開くので、「新しい単語を追加する」をクリック。「音声認識」のマイクアイコンをクリックし、一旦認識をオフする。

「単語または表現」に登録したいキーワード(例えば“ハロー”)を入力し、[次へ]をクリック

「完了時に発音を録音する」をチェックして、[完了]ボタンをクリック

「音声認識」のマイクアイコンをクリックし、[音声辞書]ダイアログ上の[録音]ボタンをクリックした後、キーワードを発話する。しばらくすると録音が完了するので、[再生]ボタンで再生してみて、大丈夫なら[完了]ボタンをクリックする。

上記⑥から⑨を繰り返すことで、複数のキーワードを登録できる。

◆Windows10の場合
[コントロールパネル]を開いて、右上検索欄に「音声認識」と入力して検索。検索の結果、「音声認識」(複数あるので、縞の入ったマイクアイコン側をクリックし、「音声認識」ダイアログ内の「音声認識の開始」をクリック、あるいは、検索の結果に「音声認識の開始」がある場合は、それをクリック。

「音声認識」のウィンドウが画面上部中央辺りに出るので、「オフ」と表示されている場合は、マイクのアイコンボタンをクリック

“音声辞書を開く”とマイクに向かって発話する。

「音声辞書」ダイアログが開くので、「新しい単語を追加する」をクリック。「音声認識」のマイクアイコンをクリックし、一旦認識をオフする。

Windows7の⑦~⑧に同じ。

実際、動かしてみれば分かることですが、

続きを読む

スポンサーサイト





VS2017-はじめの1/10歩(5):音声認識をプログラム制御に使う

   プログラミング [2019/02/25]
しゃべった内容が即文章データになる?

Windows10とかだと、何かの拍子に「何かご質問は?」的な催促をしてくることありますよね。
調子にのって、「Xxxxってどうやるの?」とか聞いてやると、
「何ですか?」とか二三度聞き返した挙句に頓珍漢なことを答えてくれちゃったりする。

#スマフォのサービスだとそんなことないけど。

オンラインのサービスの方が、そりゃ上等な認識をしてくれるのは当然かとは思うけど、
こんなに酷いんじゃねー。
初回の「御使用感」がさんざんなので、その後は間違って押しちゃって出てきても、
「頼んでねーよ」で直ぐに消えてもらいます。

そんな、ネットアクセスが不要な音声認識を何かに使えないか
なーと考えて、短いワードを数種類くらいで、それを検知したら、プログラムの動作制御に使う。
キーボード/マウス・タッチの代わりくらいに使えないかってことです。

やってみることにしました。
ついでに、外人がしゃべったらそれなりに。

●音声認識のセットアップ
 通常、Windowsに標準で組み込まれている。
 デフォルトのロケールに合わせた言語(認識)が入っている。

◆確認の仕方
 [コントロールパネル]-[音声認識]-左側メニュー「高度な音声オプション」をクリック
 「音声認識のプロパティ」ダイアログの「言語」欄に現在の認識エンジンが表示される。
 プルダウンを開くと選択できる認識エンジンが表示される。

◆追加する場合
 Windowsのエディションにより、簡単に追加できる場合と、結構な手順があるエディションがある。
 後者の場合は、問題があっても非標準扱いなので、ケアされない。
 ちなみに、HomeやProfessionalは後者。インストール方法などは、以下を参照願う。
 https://denspe.blog.fc2.com/blog-entry-168.html

※他言語の音声認識を同時に使用することは、ちょっと難しそう。
 [認識言語の切り替え→認識→コマンド解釈→プログラム制御]となる。
 最初の「どの言語に切替えるのか」を、結局何か発話/操作させて行うことにならざるをえない。
 よって、ここは現状の言語(認識)設定で、キーワードを認識させるのが安易な方法だろう。
 [カレントの認識→キーワード解釈→プログラム制御]

続きを読む



VS2017-はじめの1/10歩(4):音声データを再生する

   プログラミング [2019/02/24]
やっとこさ「プログラミング」らしい内容になるのかな。

まずは、機械に喋らせた発話で.WAVファイルを作ります。
前回(3)で説明した「◆PowerPoint読み上げ&録音」⑦の手順(audacity)で、
「Export」形式を「WAV(Microsoft) 16bit PCM 符号あり」を指定してファイルに書き込みます。
audacityはでの、音自体の編集は、説明してくれてるところが沢山あるので、必要ならそちらを参考にされてください。


.WAVを再生するなんて、しかもVS6とか使うんじゃもはや古典ですな。
でも、構わず書きます。
さる的にも随分昔にコーディングしたので、
どこのサイトを参考(半分コピペ?)して作ったものなのかは、既に記憶にありません。
ちょっと、参考させていただいたところには申し訳ないです。

使用するのは、WaveOutXxxx APIです。
使うためには以下のヘッダが必要だそうです。

//----------------------------------------------------------
//****<<音声(.wav)再生API(waveOutXxxx)に必要
#include <mmsystem.h>
#pragma comment(lib, "winmm.lib")
//----------------------------------------------------------


で、参考にしたサンプルが、イッキに.WAVデータをメモリにロードして使っていたので、そこはそのままにしています。
1)ロードの処理と、2)解放、3)ロードされたデータを再生させて、4)再生が終了したら終了処理をする
をそれぞれ関数化。 サンプルもそうなってたかなー。

各関数のパラメタの数を減らすためにテーブルを定義しました。
//----------------------------------------------------------
//****<<Waveファイル再生制御用のテーブル定義
typedef struct _waveinfo {
PBYTE WaveBuff; //WAVEファイルデータバッファ
HWAVEOUT hWaveOut; //WAVEハンドル
WAVEFORMATEX Wfe; //WAVEフォーマットデータ
WAVEHDR Whdr; //WAVEヘッダ
} WAVEINFO, *PWAVEINFO;
//----------------------------------------------------------


では、実際の処理を載せます。








続きを読む



オレはやってない

   未分類 [2019/02/23]
ふだんWebブラウザはChromeを使っている。
IEも使ってはいるが、なんとなく イヤ。

Windows10にするとデフォルトではMicrosoft Edgeが勝手に動き出す。
しかも、慣れてないから使いにくい。
ホームがBingになってて。(そういうところが嫌い。)

勝手に動き出したので、自分のサイトをお気に入りに追加しておこうと思って、
「さるもすなる おまけ」を見ようとしたら、

危険なサイトだと真っ赤な画面が出た!

なんだ!?
「やばいサイトだと報告されてます。」みたいなメッセージ。

オレはフィッシングなんかやってねーぞ。
だれだそんなデマ流したのは。


とはいうものの、誰かにいたずらされて中身を書き換えられてるのか?
念のため、控えのソースと比較してみたが、そんな気配はなかった。

「おまけ」は、PHPの学習をかねて作ったCGIサイトで、
最初は・・・どこだっけか・・・忘れたけど・・・
どっかのフリースペース → ミライサーバー → ホスティンガー
とスペース貸しサービスを渡り歩いて、昨年秋に「000webhost」に新たに引っ越した。

どこも、数年はタダ貸ししてくれるんだけど、その内「止めます」か「タダは止めます」ってなる。
ホスティンガーは、有料化する(アップグレードという言い方)というので、
(大した使用料でもないので・・悩んだ末に、)紹介されていた乗り換え先の「000・・・」に引っ越した。


そんないきさつもがあったばかりなので、
「000・・・」はちょっとヤバイのか?と思ってしまった。



続きを読む



VS2017-はじめの1/10歩(3):続・多言語音声データを作る

   プログラミング [2019/02/21]
前のPCへのインストールと設定で、パワポが複数言語を読みげできるようになってるはず。
前回の続きです。

●多言語文章を作ってパワポに読み上げさせる
パワポのデータを作成する。説明は特定の言語(自国語)で。
作成した文章をinfoseek翻訳で他言語に翻訳する。
別名でセーブしたパワポを開き、自言語の文章を翻訳結果で置き換える。
※日本語→中国語(簡体字)、韓国語(ハングル)に置き換えた場合、数字/句読点やローマ字表記が残ってたりする。それをそのままコピペすると読み上げできない。
 <中国語(簡体字)>:
 日付などにローマ数字が入るとNG。句読点は、大丈夫。
 簡体字の数字コードを無理やり作る方法としては。
 例えば、「8」がほしい場合、infoseek翻訳で、「八代亜紀」を翻訳すると
 「八」(簡体字)が作れる。

 <韓国語(ハングル)>:
 本来、「、」→「,」、「。」→「.」らしいが、読み上げではNG。
 仮対処として、
 「,」→半角スペース(元々入っていた、「,」の後にスペースが入っているが取る)
 「.」→半角スペース(複数)

読み上げさせたい文章を選択(クリック&[Shift]+カーソル移動)する。
読み上げ可能かどうかは、範囲選択していけば「読み上げ」アイコンボタンの活性/非活性が変化するので分かる。

範囲選択して読み上げさせる。


●読み上げをパワポのナレーションにする
お分かりいただけたかと思うが、スライドショー時に自動で読み上げを行う仕掛けは、パワポにはないっぽい。
「なんだよ~」
ちょっと、世の中にないかググってみた。
※PPT2Voice Neo:パワポのノートを読み上げるアドイン(個人で使うにはお値段のハードルが。)
※「PowerTalk - automatic speech for PowerPoint presentations」:パワーポイント上のテキストを読み上げるフリーソフト。
 同時多言語読み上げが可能かは不明。(Windowsの音声合成設定を利用するらしいので、たぶんできない。)
※スクリーンリーダー:未調査。これが、よさそう。

上記のように新たなソフトを導入しないとスライドショーに同期してのナレーション再生はできなさそうなので、音声データを作成してページに貼り付ける方法を使う。

では、PCで再生中の音をサウンドレコーダーで録音・・・・
できねー。
前は、たしかできてたような・・・




続きを読む



VS2017-はじめの1/10歩(2):多言語音声データを作る

   プログラミング [2019/02/20]
音声とは言うものの、「声」の方です。
主題のVS2017からいきなり離れます。

最近は音声合成/音声認識とかやたら聞く。
お金を払って使えるものもあるらしいけど、GoogleとかSiriとか普通にしゃべるし、
こっちが話した文言なんかかなりの正確さで文字にしてくれる。
Windows10にしたら、音声の案内も機能としてある。(ほぼ使ったことないけどね。)

以前、ナレーションをプロに頼んで録音/データ化してもらったことがあったが、
さもない内容なのに費用は結構掛かった。
で結局、「気に入らない声」だというお客の意見でその「声」はボツになった。

今は、さらに外人向けに数ヶ国語の「声」が必要な時代。
日本語→翻訳→ナレーターに読み上げさせて録音→組込み となるわけだが、
却下されるかもしれない「声」にお金を掛けてらんない。
かといって、訛りまくりの自分の声の録音では、さすがにデモにもならない。
英語他も絶対だめだしね。

簡単に多言語のナレーションを作る術(スベ)はないか調べてみた。

パソコンに喋らせて、それを録音することを考えた。
他国の言語は、カタコト、もしくはちょとくらい変でも、ネイティブでもなければ気付くまい。
それに、「機械がしゃべるんだからこんなもんですよ。あくまでもデモですから。」という言い訳が利きそうだ。

つまり、なんちゃって多言語音声合成
これだけでも、数回になりそうです。

MS社PowerPointの機能に、書いた内容(文章)を「読み上げ」る機能があるらしい。
それを使っちゃえば、ナレーター雇って、録音スタジオ借りて・・・なんてやらなくていい。
PCの音声ならきっと元はプロの方のお声/発音がベースだろうし、PC上で再生することに何の縛りもないはず。
(「声」って、その声の主のなんか権利的なものがあって、
当初目的以外の用途で使っちゃならん!とかいうのがあると聞いたことがある。
なので面倒に巻き込まれないことが保障されるPCの音声合成は、お手軽です。)

さあ、やっと本題です。
おおまかな手順としては以下になります。

1)PowerPointにナレーションの元の文章を日本語で書き込みます。
2)その文章をコピペして、Web上の翻訳サービス(例えば、Infoseekマルチ翻訳)で
  よくある 英/中/韓に翻訳します。
3)その内容をコピペして、別のPowerPointファイルか、別ページにコピペします。
4)PowerPointに読み上げさせて、それを録音し.WAVデータを作成します。

そうすれば、日本語も合わせて、4ヶ国語の同じようなことを説明しているナレーションデータが出来上がる・・・はず。

1)と4)についての詳細を以降(続きを読む)で説明します。

続きを読む



VS2017-はじめの1/10歩(1):はじめのはじめ

   プログラミング [2019/02/17]
もう、いつ死んでもそんなに「早死に」とは言われない年齢なんですが、未だにプログラムを書いてます。
『もっと年相応にやるべきことあるだろ。』と思われているのは分かってますが、性格も能力もそっちには向かない。
結局、低レベルな職人気質(逃げですかね。)で、手を動かさないとやった気になれない。

MS様が開発環境を個人向けにタダにしてくれたので使ってみることにしました。

でも、結局は昔使ってたVS6-Win32SDKにしか「慣れ」がないので、
できればそれ以上のことは覚えたくない。
・・・というか、理解できないので、
「VS6である程度作って、VS2017に持っていく」をやってみることにしました。

何を作っているかは秘密ですが、
殆どの課題は自宅に帰ってからの調べ(サービスXXの内職)なのでいいよね。

初めにお断りしておきますが、
このあと続くであろうボヤキは、

・いわゆる、Win32SDKプログラムの話です。
・ウィンドウをCreateして、そのウィンドウに対するメッセージ(イベント)を
 switch-caseで分けて処理するようなプログラムです。
・C++的なクラスとかはほぼ使う気がありません。
・MFCも使いません。(仕上がりが大きくなるし、わけわかんないし。)
・COMとかATL(ActiveX/OLE)とか何なのか理解できてません。
・でも、コーディングが楽そうなら使っちゃいます。
・WPF?だったかな、その他新しいライブラリとかフレームワークとかも。
・他のサイトのさるまねです。
・「やったら動きました。」のレベルなので、「この場合は?」は皆目・・・。
・いわゆるディスクトップ・アプリです。


つまり、ヒトサマに自慢/説明してもいい話ではなく、
あくまでもさるの備忘録として残します。

前置き/言い訳が長くなりましたが、
以下のような、課題とその対応コードの説明になると思います。


・音声認識を使った制御とか。
・音を再生させる。(今更の話。)
・ちょっと見栄えも気にするので、背景に画像を使う。
・タブレットPCで使えるようにタッチパネルで・・・
 -ピンチイン/アウト
 -スワイプ(パン)
・サーバ側にあるデータを取り出して・・・
 -IE?WebBrowserの起動
 -暗号化(実は今ここを調査中。)

まだ、あったような・・・
いずれ、上記の課題をVS6(C・C++)で作って、VS2017に持っていくという流れになります。

今日は、前置きだけにして、本題は次回からとします。

では、この辺で。m(__)m









カレンダー
01 | 2019/02 | 03
- - - - - 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 - -
プロフィール

さるもすなる

Author:さるもすなる
さるです。別HPサイト「さるもすなる」から侵食してきました。 山菜/きのこ、それとタイトルにしたPPバンド籠のことをメインに徒然に・・・・暇を持て余したさるの手仕事:男手芸のブログってことで。

最新記事
最新コメント
月別アーカイブ
カテゴリ
天気予報

-天気予報コム- -FC2-
本家のHPのトップ
山菜や茸の話です
PPバンドの籠作品と作り方です
投稿をお待ちしております



PVアクセスランキング にほんブログ村 にほんブログ村 ハンドメイドブログへ



マニュアルのお申し込み



検索フォーム
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR