Re: [android-group-japan: 20010] Android音声認識JuliusForAndroidのビルドがうまくいきません

1,183 views
Skip to first unread message
Message has been deleted
Message has been deleted

Shigeo Mutoh

unread,
Sep 19, 2012, 1:38:17 AM9/19/12
to android-g...@googlegroups.com
tmhouseこと武藤です。

nativeのコンパイルが必要なら意味ない情報です。
音声認識に興味があったので試してみました。

Win7 64bit,Indigo Service Release 2, Android sdk r14
です。ndkなどのセットアップは済ませています。

私はnative libraryに手を出そうなどと思わなかったので、
libsの下に.soが既に入っているのを確認して、普通にeclipse
にtech-sketch-JuliusForAndroid-95e3c38直下をimportしました。
特に問題ないようです。

Galaxy Nexusにて動作しました。使い方がいまいちよく分からなかった
のですが、時々認識しかけている様子です。
「りんごが3個」とか言っても「ぶどうが」と返ってくればまだ
良い方で、大抵はでたらめな結果でした。
声が大きいとか小さいとか、様々な要因があると思うので、私の
問題の可能性は十分高いです。

nativeのコンパイルについては、intel環境は勝手にしてねって感じ
なので茨の道だとは思いますので頑張ってください、なのかなあ。

では。

ohisamallc

unread,
Sep 20, 2012, 11:48:06 PM9/20/12
to android-g...@googlegroups.com
山形のohisamaです。
山形は、雨が降って秋らしくなりました。
がんばろう、東北。

昔やって、動かなくて悔しかったので、やってみました。
結果は、android1.5で動きました。
「りんごをさんこください」の音声合成音を利用して
「リンゴが3個」と認識しました。

環境は、libjulius.aとlibsent.aをsuse linux上で
android_build.shでビルドしました。ndkは、r7bです。

windows7上で、libjulius.aとlibsent.aとヘッダーファイルを
コピーしてjniのandroid.mkでlibjulius.soをビルドしました。
ndkは、r8です。

お困りなら、直接メールください。協力できると思います。


-----Original Message-----
From: android-g...@googlegroups.com
[mailto:android-g...@googlegroups.com]On Behalf Of pez
Sent: Wednesday, September 19, 2012 1:57 PM
To: android-g...@googlegroups.com
Subject: [work] [android-group-japan: 20012] Re: Android音声認識
JuliusForAndroidのビルドがうまくいきません


julius-4.2.2ディレクトリでandroid_build.shがうまくいかない問題は、
android_build.sh の記載内容を以下のとおり修正することで解決できました。

-----------------------

export
TARGET_DIR="C:/androidRD/androidApps/tech-sketch-JuliusForAndroid-95e3c38/jn
i/"
export NDK_ROOT="C:/android-ndk-r8b"
-----------------------


しかし、jniディレクトリでndk-buildする点で以下のエラーで
手詰まりしています。
-----------------------
$ ndk-build
Cygwin : Generating dependency file converter script
Compile thumb : julius_arm <= interface.c
SharedLibrary : libjulius_arm.so
C:/android-ndk-r7b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windows/b
in/../lib/gcc/arm-linux-androideabi/4.4
.3/../../../../arm-linux-androideabi/bin/ld.exe: cannot find -ljulius
collect2: ld returned 1 exit status
/cygdrive/c/android-ndk-r7b/build/core/build-binary.mk:314: recipe for
target `/cygdrive/c/androidRD/androidApps/te
ch-sketch-JuliusForAndroid-95e3c38/obj/local/armeabi/libjulius_arm.so'
failed
make: ***
[/cygdrive/c/androidRD/androidApps/tech-sketch-JuliusForAndroid-95e3c38/obj/
local/armeabi/libjulius_arm.s o] Error 1
-----------------------
「cannot find -ljulius」とのことで、
Juliusのライブラリが見つからないようです。。。orz




2012年9月19日水曜日 12時56分12秒 UTC+9 pez:
https://github.com/tech-sketch/JuliusForAndroid

↑こちらのサンプルソースを参考に
音声認識アプリを作成してみたいと思っています。


しかし、このサンプルは開発環境が以下のとおりであり、
-----------------------
OS:Mac OS X Lion (10.7.4)
Android: Nexus 7 (Android 4.1.1)
Android SDK:API-15
Android NDK:r8b
-----------------------
私の開発環境と違うため、うまく開発ができないでいます。


[私の開発環境]
-----------------------
OS:WindowsXP SP3
Android: Galaxy S2 (Android4.0)
Android SDK:API-15
Android NDK:r8b
-----------------------


上記サイトに書かれている手順で
julius-4.2.2ディレクトリでandroid_build.sh を私の開発環境用に編集しました
が、

以下のエラーが出てしまい、うまくいきません。


[エラー内容]
-----------------------
$ ./android_build.sh
make: *** ターゲット `clean' を make するルールがありません. 中止.
loading cache ./config.cache
checking host system type... arm-unknown-eabi
checking host specific optimization flag... skipped
checking for gcc...
/cygdrive/c/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/
windows/bin/arm-linux-androideabi-gcc -mandroid --sysroot=/cygdrive/c/androi
d-ndk-r8b/platforms/android-8/arch-arm
checking whether the C compiler
(/cygdrive/c/android-ndk-r8b/toolchains/arm-linux-androideabi-4.4.3/prebuilt
/windows/bin/arm-linux-androideabi-gcc -mandroid --sysroot=/cygdrive/c/andro
id-ndk-r8b/platforms/android-8/arch-arm -nostdlib -DANDROID_CUSTOM -DANDROID
_DEBUG -Wl,-rpath-link=/cygdrive/c/android-ndk-r8b/platforms/android-8/arch-
arm/usr/lib/ -L/cygdrive/c/android-ndk-r8b/platforms/android-8/arch-arm/usr/
lib/) works... no
configure: error: installation or configuration problem: C compiler cannot
create executables.
make: *** ターゲットが指定されておらず, makefile も見つかりません. 中止.
make: *** ターゲット `install' を make するルールがありません. 中止.
-----------------------


スクリプトを読んでみると、
-----------------------
make clean
echo "ac_cv_c_bigendian=\${ac_cv_c_bigendian=yes}" > config.cache
./configure --host=arm-eabi --prefix=$TARGET_DIR
make
make install
-----------------------
となっていましたので、
cygwinで
/configure --host=arm-eabi --prefix=$TARGET_DIR(tech-sketch-JuliusForAndroid
-95e3c38/jni/への絶対パスを指定)
すると、makeファイルが出来上がるようなので、
makeすると以下のエラーが出てしまい、手詰まりになっています。
-----------------------
gcc -g -O2 -Iinclude -DHAVE_CONFIG_H -o src/util/jlog.o -c src/util/jlog.c
src/util/jlog.c:39:25: fatal error: android/log.h: No such file or directory
コンパイルが中断されました。
Makefile:15: recipe for target `src/util/jlog.o' failed
make[1]: *** [src/util/jlog.o] Error 1
-----------------------
上記ログ以降はlsentライブラリが無いためにmake処理ができない旨のエラーが
ダーっと流れてしまいます。
-----------------------
/usr/lib/gcc/i686-pc-cygwin/4.5.3/../../../../i686-pc-cygwin/bin/ld: cannot
find -lsent
-----------------------
おそらく何かしらのパスの指定がうまく出来ていないために、
android/log.h が見つからなくて、うまくいかないのだと思います。





すみませんが、上記サイトでJuliusをmakeしたことがある方がいらっしゃいました
ら、
正しい手順をご教授いただけないでしょうか?


--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られて
います。
このディスカッションをウェブ上で閲覧するには、
https://groups.google.com/d/msg/android-group-japan/-/mqst4XuIxY8J にアクセ
スしてください。
このグループに投稿するには、android-g...@googlegroups.com にメールを
送信してください。
このグループから退会するには、
android-group-j...@googlegroups.com にメールを送信してくださ
い。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja
らこのグループにアクセスしてください。

Message has been deleted
Message has been deleted
Message has been deleted

ohisamallc

unread,
Sep 27, 2012, 11:49:08 PM9/27/12
to android-g...@googlegroups.com
山形のohisamaです。
山形は、雨です。
がんばろう、東北。

メルアドは、このメールの差出人の詳細見ると書いてあります。
その際、プロジェクトをzipして、送って下さい。調べて見ます。


-----Original Message-----
From: android-g...@googlegroups.com
[mailto:android-g...@googlegroups.com]On Behalf Of pez
Sent: Wednesday, September 26, 2012 10:00 PM
To: android-g...@googlegroups.com
Subject: [work] Re: [android-group-japan: 20124] Re: Android音声認識
JuliusForAndroidのビルドがうまくいきません


petzです。


to ohisamaさん


>環境は、libjulius.aとlibsent.aをsuse linux上で
>android_build.shでビルドしました。ndkは、r7bです。
>windows7上で、libjulius.aとlibsent.aとヘッダーファイルを
>コピーしてjniのandroid.mkでlibjulius.soをビルドしました。
>ndkは、r8です。
↑このあたりの具体的手順について問い合せたいのですが、
どこのメールアドレスにご連絡すると良いのでしょぅか?


Googleグループ初心者なので色々と勝手がわからず、
すみません。

回答、お待ちしています。




2012年9月23日日曜日 12時34分44秒 UTC+9 pez:
petzです。ご協力、ありがとうございます。




>環境は、libjulius.aとlibsent.aをsuse linux上で
>android_build.shでビルドしました。ndkは、r7bです。
cygwinではなく、Linux環境が必要、ということでしょうか?
うーん、VMwareのubuntuまたはCentで対応してみようかな。


>windows7上で、libjulius.aとlibsent.aとヘッダーファイルを
>コピーしてjniのandroid.mkでlibjulius.soをビルドしました。
>ndkは、r8です。

android.mkって単体だけで動作するのでしょうか?
私が試しにやってみると以下のエラーでうまくいきませんでした。
-----------------------
$ ./Android.mk
./Android.mk: line 1: call: コマンドが見つかりません
./Android.mk: line 1: LOCAL_PATH: コマンドが見つかりません
./Android.mk: line 2: CLEAR_VARS: コマンドが見つかりません
./Android.mk: line 2: include: コマンドが見つかりません
./Android.mk: line 4: LOCAL_MODULE: コマンドが見つかりません
./Android.mk: line 5: LOCAL_SRC_FILES: コマンドが見つかりません
./Android.mk: line 6: LOCAL_PATH: コマンドが見つかりません
./Android.mk: line 6: LOCAL_C_INCLUDES: コマンドが見つかりません
./Android.mk: line 7: LOCAL_STATIC_LIBRARIES: コマンドが見つかりません
./Android.mk: line 8: LOCAL_CFLAGS: コマンドが見つかりません
./Android.mk: line 9: LOCAL_PATH: コマンドが見つかりません
./Android.mk: line 9: LOCAL_LDLIBS: コマンドが見つかりません
./Android.mk: line 11: BUILD_SHARED_LIBRARY: コマンドが見つかりません
./Android.mk: line 11: include: コマンドが見つかりません
-----------------------
NDK側のソースをいじるのは 、あまり慣れておらず、
やるとしたら、./android_build.shでライブラリ作って
jni側でndk-buildすると勝手にsoファイルができる、、
程度のことしかやっていませんでした。
もう少し勉強が必要ですね。すみません。

>お困りなら、直接メールください。協力できると思います。
ぜひともお願いしたいです。
ただ、他のメンバーの方への情報共有という意味でも、
出来るだけやりとりの内容はここの場所に残しておきたい、
という思いもあります。
個人情報が含まれていたり、公開できない情報がある場合は
メールで相談させてください。
今後やりたいことは、定義ファイルをいじって自分の思うとおりの
文字列を抽出してくれるようなものがほしいと思っています。
Juliusの精度検証・向上も上げていきたいと思っています。


よろしくお願いいたします。

2012年9月21日金曜日 12時49分31秒 UTC+9 ohisama:
https://groups.google.com/d/msg/android-group-japan/-/Nlqa0ZRndjUJ にアクセ
Message has been deleted

ohisamallc

unread,
Oct 2, 2012, 12:34:27 AM10/2/12
to android-g...@googlegroups.com
山形のohisamaです。

サンプルがビルドできるのであれば
自分の協力できることは、あまりありません。

libjulius.aとlibsent.aの提供とか
自前の辞書とか、だけです。


> -----Original Message-----
> From: android-g...@googlegroups.com
> [mailto:android-g...@googlegroups.com]On Behalf Of Shuichi
> Takenaka
> Sent: Saturday, September 29, 2012 6:45 PM
> To: android-g...@googlegroups.com
> Subject: [work] Re: Re: [android-group-japan: 20144] Re: Android音声認識
> JuliusForAndroidのビルドがうまくいきません
>
>
> petzです。
>
> to ohisamaさん
>
> ご協力、ありがとうございます。
> ZIP圧縮したものを添付したいのですが、30M程度あるようですので、
> エラーで送れなかったです。。。
> どこかのフリーftpサーバーをご存知でないでしょうか?
>
> 現状、ndkビルドせず、そのままeclipseでビルドして
> .apkファイルを作成することはできるのですが、
> 動くアプリの認識の精度はあまり良くありません。
>
> 連続音声認識は特に精度が良くないです。
> make手順が出来ていないのか、それとも実力なのか、
> 記述文法で改善できるのか。。。
> そのあたりのJuliusの使い方についても勉強中ですので、
> 宜しければ、相談させてください。
>
> 以上、よろしくお願いいたします。
>
> --------------------------------------------------
> From: "ohisamallc" <pen...@mui.biglobe.ne.jp>
> Sent: Friday, September 28, 2012 12:49 PM
> To: <android-g...@googlegroups.com>
> Subject: RE: Re: [android-group-japan: 20640] Re: Android音声認識
> JuliusForAndroidのビルドがうまくいきません
Message has been deleted

Shin Miyazaki

unread,
Oct 3, 2012, 9:20:32 AM10/3/12
to android-g...@googlegroups.com
こんばんは、みやざきです。

何か、色々試した挙げ句におかしくなってしまっている気がします。

1. あなたと同じようにandroid-build.shのTARGET_DIRとNDK_ROOTを自身の環境にあわせて書き換える。
 TOOL_ROOTもWindows 環境にあわせてarchの部分を書き換える。
3. プロジェクトディレクトリに戻り、ndk-build 実行

以上の3ステップで成功。

TARGET_DIR以下に、bin,include,libといったディレクトリとそれらしい内容が作られていなければ2で失敗しています。
あなたの場合最終的に3でリンクエラーですけど、2が失敗していたら3ではコンパイルエラーになる
(インクルードファイルが無い)はずで、そうでないということは3のコンパイルを通すために
jni/Android.mkあたりも何かいじってしまっている気がします。

今までの成果をチャラにして、もういちど上記1,2,3のステップをやり直したらどうでしょうか。


2012年10月2日 21:13 Shuichi Takenaka <rsnx...@gmail.com>:
petzです。

to ohisamaさん

お忙しい中、ご協力ありがとうございます。

サンプルがビルドできるのであれば
自分の協力できることは、あまりありません。
ビルドできるというか、サンプルを単にDLして、
eclipseにImportして.apkを作成する所までは出来ました。
しかし、JNI側のコードをいじった場合、cygwin等を使用して、
NDKビルドする必要があるかと思いますが、
その際のビルドが出来なくなりそうで心配です。
今のところ、サンプルソースのJNI側をいじる予定はないのですが、
もし今後いじる必要性が出てきた時のために、
もしご存知でしたら、NDKビルド手順を共有していただけると大変助かります。

libjulius.aとlibsent.aの提供とか
自前の辞書とか、だけです。
はい!!今まさにこのあたりにつまづいています。
サンプルソースでは
----------------------
        private static final String CONTINUOUS_JCONF = "/julius/fast-android.jconf";
        private static final String GRAMMAR_JCONF = "/julius/demo-grammar-android.jconf";
----------------------
↑のように指定している/sdcard/julius/以下にある辞書を指定して、
連続音声認識モードと、記述文法モードを切り替えているようですが、
このあたりの認識精度が悪く、どうしたものかと悩んでいました。

juliusの解説サイトなどを色々調べてみると、
連続音声認識モードで指定している辞書は多くの文言が登録されており、
 そのせいで認識精度が悪い。
・記述文法モードでは、「りんご3個」「葡萄5個」などの文言しか辞書に登録されておらず、
 辞書に登録されている特定の文言であれば、高精度に認識出来る。
という見解に至ったのですが、この理解であっていますでしょうか?
参考URL
http://d.hatena.ne.jp/hecomi/20120112/1326390200

認識精度向上のためには上記CONTINUOUS_JCONFと
GRAMMAR_JCONFを独自に編集して、自前の辞書を
作成擦る必要があるかと思います。
しかし、そのために下記公式サイトから、
カスタム実行キットを入手しようと思っていたのですが、
リンク切れで入手することもできませんでした。
http://julius.sourceforge.jp/index.php?q=julicus.html

このあたりの編集手順など、
ご存知でしたら教えていただけないでしょうか?m(_ _;)m
やりたいことは、下記WAVE_PATHに保存される音声ファイルを
-----------------------
private static final String WAVE_PATH = "/julius/voice.wav";
-----------------------
Juliusで音声認識した結果、
【特定のキーワードを抽出したら
所定のEditViewに認識した文字列を表示したい】
、といったものになります。
認識した特定のキーワード毎に格納するEditViewを切り替える、
 といったものになるかと思います。


また、少し話がずれてしまうかも知れませんが、
よろしければAndroidアプリのViewの振る舞いについて
質問させていただけないでしょぅか?

Androidアプリで使用する画像などは、
resディレクトリ以下のrawまたはdrawrableに格納して、
ImageViewを作成するときに
-----------------------
ImageView imageView = (ImageView) findViewById(R.id.myimageview);
imageView.setImageResource(R.drawable.myimage);
-----------------------
といった形式で指定することで、画像を表示することができますが、
ユーザーがこのImageViewの画像をタッチすると、
ユーザーが持っている画像へ自由に変更することができるようにしたいと思っているのですが、
そのような動作を実装することは可能でしょうか?
その際に使用する最適なVIewはImageView以外にあるのでしょうか?
 例えば、端末内のギャラリーにある場合と、ネット上にあげている画像をURL指定する場合とで
 最適なVIewが別々にあるのでしょぅか?


色々と質問してしまってすみません。
アドバイス頂けると大変助かります。

回答、お待ちしています。


--------------------------------------------------
From: "ohisamallc" <pen...@mui.biglobe.ne.jp>
Sent: Tuesday, October 02, 2012 1:34 PM
To: <android-group-japan@googlegroups.com>
Subject: RE: Re: Re: [android-group-japan: 20695] Re: Android音声認識JuliusForAndroidのビルドがうまくいきません



>
> スしてください。
> このグループに投稿するには、android-group-ja...@googlegroups.com にメー


>
> 送信してください。
> このグループから退会するには、
> android-group-japan+unsub...@googlegroups.com にメールを送信してくだ

> い。
> 詳細については、
http://groups.google.com/group/android-group-japan?hl=ja

らこのグループにアクセスしてください。


--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られ


います。
このディスカッションをウェブ上で閲覧するには、
https://groups.google.com/d/msg/android-group-japan/-/Nlqa0ZRndjUJ にアク


スしてください。
このグループに投稿するには、android-group-ja...@googlegroups.com にメール


送信してください。
このグループから退会するには、
android-group-japan+unsub...@googlegroups.com にメールを送信してくださ

い。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja

らこのグループにアクセスしてください。

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られ
ています。
このグループに投稿するには、android-group-ja...@googlegroups.com にメール
を送信してください。
このグループから退会するには、
android-group-japan+unsub...@googlegroups.com

にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja
からこのグループにアクセスしてください。


--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られて
います。
このグループに投稿するには、android-group-ja...@googlegroups.com にメールを
送信してください。
このグループから退会するには、
android-group-japan+unsub...@googlegroups.com にメールを送信してくださ

い。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja
らこのグループにアクセスしてください。



--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-group-ja...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-japan+unsubscribe@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。


Reply all
Reply to author
Forward
0 new messages