Juliusの音声認識を利用するプログラムを作ろうと思い当たったものの、モジュールモードで使うには使い勝手が微妙に悪く、JuliusLibをプログラムに組み込む方法を試してみようとしたところ、結構詰まってしまったので自分なりに備忘録を残しておきます。(割と当たり前のことかもしれませんが…)
実行環境
Windows 10 Home 64bit
Microsoft Visual Studio Community 2017
Julius 4.4.2
手順
今回は付属のjulius-simple.cをコンパイルして動かすことを目標にします。
makeコマンドでビルドする方法はエラーが出てしまうので、Visual Studioでビルドする方法を採りました。
-
Juliusのソースをダウンロード
GitHubのページから落としてきます。
git clone
コマンドか、zipでダウンロード・解凍して任意のディレクトリに配置します。
ここでは、インストールしたJuliusのソースのディレクトリをjuliusとします。 -
JuliusLib.slnを開く
julius\msvcにあるJuliusLib.slnをVisual Studioで開きます。
Windows APIを用いたGUIのサンプルプログラムが含まれています。 -
ソリューションをビルドする
ソリューションエクスプローラーの「SampleApp」の上で右クリックし「スタートアッププロジェクトに設定(A)」を選択します。
次に、上のメニューから「ビルド(B)」→「ソリューションのビルド(B)」を選択し、ビルドします。
ここでは、ソリューション構成を「Release」にしておきます。
この時に、JuliusLibのプロジェクト(libjulius,libsent)等も一緒にビルドされ、ライブラリファイルが生成されます。 -
新しいプロジェクトを作成する
先ほどのJuliusLib.slnをカスタマイズして使うと、ソリューションが大きくなって不便なので、上のメニューから「ファイル(F)」→「新規作成(N)」→「プロジェクト(P)」で専用のプログラムを実行する用に新しいソリューション・プロジェクトを作成します。今回はVisual C++の空のプロジェクトを作成します。 -
julius-simple.cをプロジェクトに追加する
とりあえず動かすサンプルプログラムとして、julius\julius-simpleにあるjulius-simple.cを新しく作成したプロジェクトにコピーします。 -
プロジェクトの設定をする
- インクルードパスを通す
プロジェクトのプロパティを開き「構成プロパティ→C/C++→全般」にある「追加のインクルードディレクトリ」に「julius\libjulius\include」「julius\libsent\include」のパスを追加します。 - ライブラリをリンクする
3の手順でビルドしてできたライブラリファイルをリンクします。
「julius\msvc\Release」にある「libjulius.lib」「libsent.lib」、「julius\msvc\Library_PortAudio\lib」にある「PortAudio.lib」、「julius\msvc\Library_zlib\lib」にある「zlib.lib」を作成したプロジェクト(.vcxprojファイル)があるディレクトリにコピー。または、ライブラリファイルがあるディレクトリのパスをプロパティの「構成プロパティ→リンカー→全般」にある「追加のライブラリディレクトリ」に指定します。
次に、「構成プロパティ→リンカー→入力」にある「追加の依存ファイル」に「libjulius.lib;libsent.lib;PortAudio.lib;zlib.lib;ws2_32.lib;」と追記します。
- インクルードパスを通す
-
ビルドする
プロジェクトのプロパティの変更を適用後、ビルドすると問題なくコンパイルが通るはずです。
出力されたアプリケーションを、コマンドプロンプト等で-C
オプションでjconfファイルを指定して実行すれば、julius.exeと同じように動作するはずです。
次からは、6の設定をするだけでJuliusLibを自分のプログラムで使うことができます。
#おわりに
ようやくJuliusを使うプログラムの環境構築ができたので、これからJuliusLibの使い方を読み解いて少しずつプログラムが書ければいいなと思います。
何か間違ってる・もっといい方法がある等あれば教えてください!