PROCESSINGで音声認識を行うには(Windows編)

◆PROCESSING 逆引きリファレンス

 カテゴリー:ゲーム作成

PROCESSINGで音声認識を行うには(Windows編)

【概要】

最近のスマホはよく出来ていて、人間の話し言葉を理解して、音声で受け答えしてくれます。

このような機能としてはAppleのSiriが有名ですね。

以前の記事「PROCESSINGで音声合成を行うには(Windows編)」では音声合成により、PROCESSING(Java)に喋らせる方法を紹介しました。

今回はその逆で、人間の話言葉をPROCESSING(Java)に認識させる方法について紹介したいと思います。

コンピュータに人間の話し言葉を認識(音声認識)させるには、GoogleやMicrosoftが有料で公開しているオンラインサービスを利用するのがトレンドです。

これらの技術は各メーカーがしのぎを削って開発競争をしている分野であるため、どんどん進化しています。認識速度と精度を求めるなら、素直に各メーカーのオンラインサービスを利用するのが良いと思われます。

一方で

  • オンラインでのサービスが利用できない(ぜひオフラインで利用したい)
  • 無料が良い
  • PROCESSING(Java)から手軽に試してみたい

といった場合、これらのオンラインサービスはちょっとミスマッチなところがあります。

そんなニーズを満たすために、Windowsに標準搭載されているSystem.Speech機能を利用して、PROCESSING(Java)から音声認識を行えるライブラリーを用意しました。

ただしオフラインでの音声認識は、各社のオンラインサービスと比べて

  • 認識精度が悪い
  • 動作が遅い

といった欠点があります。

認識精度や動作スピードが気にならないよという方は、以下の利用条件を熟読の上、利用規約を守れる方のみ利用することが可能です。

動作環境は以下のようになります。

  • Windows10 以降のOS上から利用する事
  • 利用環境にJRE1.8以降がインストールされている事

OSは最新のWindows10を利用してください。

本ライブラリはJavaプログラムからも利用可能ですが、PROCESSINGからのみ利用するのであれば、JREのインストールは不要です。

今回のライブラリーは64bit版のみの提供となります。

また本ライブラリーを利用する場合は、PROCESSING(JRE/JDK)は必ず64bit版を利用してください(重要)。開発環境にIDEを使われる方は、EclipseやIntelliJ IDEAなどのbit数も合わせてくださいね。

一部でも x86 と x64 が混在していると動作しないので、注意が必要です。

 

ライブラリの入手と利用条件について

下記からダウンロードしていただけるプログラムとドキュメント(以下、本APと呼称)の著作権はMSLABOにあります。

本APのMSLABO作成部分は、クリエイティブ・コモンズ 表示 – 継承 4.0 国際 ライセンスに従い提供されています。

また本APが利用しているJNA、PROCESSINGなどの各モジュールについては、各ソフトウェアのライセンス規約に従うものとします。

利用にあたっては、必ず自己責任でお願い致します。

本APの不具合については極力善処を行う予定ですが、これを保証するものではありません。

また本APに関する情報はすべてMSLABOのHPから一方的に公開するものとし、原則として、個別の問い合わせや要望は受け付けません。

上記事項に同意頂ける方のみ、下記よりダウンロードする事が可能です。

WinSpeech

WindowsのSystem.Speech機能をPROCESSINGから使うためのライブラリです。Javaアプリケーションから利用することも可能です。64bit版のみの提供となりますので、32bit環境では動作しません。

クリエイティブ・コモンズ・ライセンス
MSLABO 作『WinSpeech』はクリエイティブ・コモンズ 表示 – 継承 4.0 国際 ライセンスで提供されています。

ダウンロードすると「WinSpeech_20200301.zip」というファイルが出来上がります。
以下はダウンロードファイルの構成です。

 

インストールについて

PROCESSINGの場合

まずPROCESSINGの標準エディタから「新規プロジェクト」を作成し、空で良いので一度保存します。

なお保存前に「ファイル→設定」で、スケッチブックの場所に「わかりやすいパス」が指定されている事を確認してください。


上記例なら、スケッチを保存すると「C:\processing-3.5.4\src」に「sketch_200321a」などのフォルダが作成され、空のプログラムソースファイルができあがります。

この時点で、一度標準エディタを閉じておきます。

続いて、作成されたスケッチフォルダ(C:\processing-3.5.4\src\sketch_200321a)配下に、ダウンロードしたファイルを解凍した中にある code フォルダーを、フォルダーごと複写してください。

複写できたら、「sketch_200321a.pde」をダブルクリックして、標準エディタを起動します。

WinSpeechを利用する際は、プログラムの先頭に以下の import 文を追記してください。

import SpeechPkg.*;

 

Javaの場合

お好きなエディタでプロジェクトを作成し、 codeフォルダの中にある jar ファイルと dll を、プロジェクトに取り込んでください。

以下は VisualStudioCodeでJavaのプロジェクトを作成し、libフォルダー配下にjarとdllを置いて、クラスパスを通した例です。


.classpassに WinSpeech.jarのパスを追記してあります。場所は適当(私の環境)ですので、あなたの環境に合わせて変更してくださいね。

 

ライブラリの動作原理について

PROCESSINGから呼び出すJavaライブラリー(Jarファイル)と、WindowsのSystem.Speech機能を使うためのC#マネージドDLLから構成されています。

(画像URL:illust-AC 様:ぷーちゃんさん)

こんな感じです。

DllExportというライブラリーを利用する事で、なんとJavaからJNA経由で直接マネージドコードを呼び出しています!。

詳しくは「JavaからC#のDLLを呼び出す」で記事にしていますので、興味がある方は参考としてください。

 

使い方

ダウンロードしたファイルを解凍すると出来上がる doc フォルダ配下に、リファレンス(index.html)があります。

また下記サンプルプログラムも参考としてください。

 

【関連記事】

 


サンプルプログラム

シンプルな音声解析例:

シンプルな音声解析例です。上記例では、解析を非同期で1回だけ行っています。

<出力サンプル>

 

音声で操作する例:

実行すると、画面に円と四角が描かれます。
「左」と発音すると円に、「右」と発音すると四角形に色が付きます。

この例のように限られた言葉を認識させれば良いケースでは、自由会話解析よりも辞書解析の方が精度が高くなります。

辞書ファイルはWinSpeechのコンストラクタで指定したDLLのパス(例ではsketchパスのcodeフォルダー)と同じフォルダーにあるものとみなして処理されます。

リファレンスにも記載しましたが、辞書ファイルはShift-JISで記述してください。

以下は上記サンプルの文法ファイルの中身です。

 

<出力サンプル>

 


PROCESSING逆引きリファレンス一覧 へ戻る

本ページで利用しているアイコン画像は、下記サイト様より拝借しております。各画像の著作権は、それぞれのサイト様および作者にあります。