山からの景色('20春)
自然観察 [2020/06/27]
まあ、「登る事」を目的とはしない、
つまりそこにあるからと言って体力使ってただ山に登ることはしないさるです。
でも登ったら登ったで、そこからの景色は割と好きです。
普段見ない角度からの眺めは貴重なので、思わず写真撮っちゃいます。
5月の下旬、標高700mくらいのお山に登りました。
登山口から1時間もあれば十分頂上に着きます。
登り慣れてなくて、体力不足なさるでも登れます。
ゆっくりお散歩気分でいいかと。
お山周辺の田園・・・じゃなくて里山と牧草地の風景です。
遠くに海が見えて、天気がよかったのでその先の半島のお山も見えた。
狭い山頂で、50歩も反対側に行くと、隣のもっと高いお山も見えます。
すばらしい。
このとき、登る途中で珍しく、モグラが地上を歩いているのを山友が見つけた。
パパラッチしたら、激怒された。
鳴くんだね。
ちょっとびっくり。
調べたら、日本にもともといるモグラは、コウベモグラとアズマモグラが主で、西と東で棲み分けされているとか。
なのでこのモグラは「アズマモグラ」なんでしょうかね。
漢字で書くと「東土竜」。
番付表に載ってても違和感なさそう。
撮ってきた写真と動画があったので、載せちゃいました。
雄大な景色と小動物の話。
では、簡単ですがこの辺で。
m(__)m
つまりそこにあるからと言って体力使ってただ山に登ることはしないさるです。
でも登ったら登ったで、そこからの景色は割と好きです。
普段見ない角度からの眺めは貴重なので、思わず写真撮っちゃいます。
5月の下旬、標高700mくらいのお山に登りました。
登山口から1時間もあれば十分頂上に着きます。
登り慣れてなくて、体力不足なさるでも登れます。
ゆっくりお散歩気分でいいかと。
お山周辺の田園・・・じゃなくて里山と牧草地の風景です。
遠くに海が見えて、天気がよかったのでその先の半島のお山も見えた。
狭い山頂で、50歩も反対側に行くと、隣のもっと高いお山も見えます。
すばらしい。
このとき、登る途中で珍しく、モグラが地上を歩いているのを山友が見つけた。
パパラッチしたら、激怒された。
鳴くんだね。
ちょっとびっくり。
調べたら、日本にもともといるモグラは、コウベモグラとアズマモグラが主で、西と東で棲み分けされているとか。
なのでこのモグラは「アズマモグラ」なんでしょうかね。
漢字で書くと「東土竜」。
番付表に載ってても違和感なさそう。
撮ってきた写真と動画があったので、載せちゃいました。
雄大な景色と小動物の話。
では、簡単ですがこの辺で。
m(__)m
スポンサーサイト
スマフォのアプリを作りたい(26):スマフォだけで動作する音声認識②
プログラミング [2020/06/27]
前回、Juliusの導入説明をしてくれているチュートリアル文書を読んで、PC上で単語認識をさせてみるところをやって見ました。
使えそうなので、Androidスマフォ上に移植することを試行錯誤してみます。
「経過や失敗事項は要らない。旨くいく手順だけ書け。」と言われそうですが、
さるの自分のための備忘録なので、その辺りはご容赦の程。
今回の場合、React Native(JavaScript)→ Androidネイティブ(Java)→ Juliusライブラリ(C)と呼び出しが掛かりそうなので・・・
Ⅰ.まずはJavaコードからC関数を呼び出すようなアプリの作り方を調べます。
Ⅱ.Javaコード(Cライブラリ含む)をReact Nativeで使えるパッケージ化方法を調べます。
Ⅲ.React Nativeにパッケージを取り込んで、Build&Go。
こんな感じなのかな~
自信ないなー。汗)
以降、図の表示が小さくて見えない場合は、クリックすると文字が見える程度の画像で表示すると思います。
◆Android向けCプログラムのビルド環境
全くの素人です。Javaでプログラムを組んだことすらないし、AndroidStudioをIDEとして使うのも初。
なので、説明してくれているページを探します。そしたら、
参考:https://qiita.com/sanoh/items/ef0b99fc1dd2f1484d7a
タイトルもばっちし。
読みつつマネしていきます。
AndroidStudioは、React Nativeアプリの動作確認をするためのエミュレータ(AVD)の前提だったのでインストール済みです。
SDK(Android6,0/APIレベル23とAndroid4.0.3/APIレベル15)インストール済みです。
(インストール手順は「スマフォのアプリを作りたい(2):・・・」とかに書いてます。)
まずは、AndroidStudioのプロジェクトを作成するところから。
1)AndroidStudioを起動します
2)C++プロジェクトを作成します
2-1)「+ Start a new Android Studio project」をクリック
2-2)タイル風の絵の中から「C++」と書かれたものをクリックして[Next]
2-3)プロジェク名、パッケージ名、プロジェクトフォルダを入力
2-3)言語には「Java」を選択、ミニマムAPIレベルを指定して[Next]
※APIレベルは、エミュレーターの制限の23にしようか、Sound系パッケージの制限16にしようか迷ったのですが、Android6.0(23)にしました。
2-4)[finish]します。以下のような画面でした。
※ここで、OpenJDKが通信を使って何かしだしたようで、以下の警告が出ました。
何をする気なのか分かりませんが、拒否して後で何かが「古いんじゃ!」とか言われると面倒そうなので、許可しちゃいました。
参考サイトの説明だと、このテンプレートの状態でJavaからCを使うようになってるんだそうです。
JavaのコードはMainActivity.javaで、Cはnative-lib.cppのようです。
それっぽいですね。
MainActivity.javaを画面に表示してみました。
さっぱり、よくわかりません。
native-lib.cppの方はこんな内容。
これまた、短い割には何だかわかりません。
併せて見ると、
Java側がonCreateで何やらやろうとして、コード末尾の「public native String stringFromJNI();」がnative-libの中に実装されている処理のようです。
C側では何だか長たらしい名前の関数「Java_com_teburarec_call_1julius_MainActivity_stringFromJNI」として定義されてますが、ここをコールしているんでしょう。
この状態でしばらく放置していたら・・・
使えそうなので、Androidスマフォ上に移植することを試行錯誤してみます。
「経過や失敗事項は要らない。旨くいく手順だけ書け。」と言われそうですが、
さるの自分のための備忘録なので、その辺りはご容赦の程。
今回の場合、React Native(JavaScript)→ Androidネイティブ(Java)→ Juliusライブラリ(C)と呼び出しが掛かりそうなので・・・
Ⅰ.まずはJavaコードからC関数を呼び出すようなアプリの作り方を調べます。
Ⅱ.Javaコード(Cライブラリ含む)をReact Nativeで使えるパッケージ化方法を調べます。
Ⅲ.React Nativeにパッケージを取り込んで、Build&Go。
こんな感じなのかな~
自信ないなー。汗)
以降、図の表示が小さくて見えない場合は、クリックすると文字が見える程度の画像で表示すると思います。
◆Android向けCプログラムのビルド環境
全くの素人です。Javaでプログラムを組んだことすらないし、AndroidStudioをIDEとして使うのも初。
なので、説明してくれているページを探します。そしたら、
参考:https://qiita.com/sanoh/items/ef0b99fc1dd2f1484d7a
タイトルもばっちし。
読みつつマネしていきます。
AndroidStudioは、React Nativeアプリの動作確認をするためのエミュレータ(AVD)の前提だったのでインストール済みです。
SDK(Android6,0/APIレベル23とAndroid4.0.3/APIレベル15)インストール済みです。
(インストール手順は「スマフォのアプリを作りたい(2):・・・」とかに書いてます。)
まずは、AndroidStudioのプロジェクトを作成するところから。
1)AndroidStudioを起動します
2)C++プロジェクトを作成します
2-1)「+ Start a new Android Studio project」をクリック
2-2)タイル風の絵の中から「C++」と書かれたものをクリックして[Next]
2-3)プロジェク名、パッケージ名、プロジェクトフォルダを入力
2-3)言語には「Java」を選択、ミニマムAPIレベルを指定して[Next]
※APIレベルは、エミュレーターの制限の23にしようか、Sound系パッケージの制限16にしようか迷ったのですが、Android6.0(23)にしました。
2-4)[finish]します。以下のような画面でした。
※ここで、OpenJDKが通信を使って何かしだしたようで、以下の警告が出ました。
何をする気なのか分かりませんが、拒否して後で何かが「古いんじゃ!」とか言われると面倒そうなので、許可しちゃいました。
参考サイトの説明だと、このテンプレートの状態でJavaからCを使うようになってるんだそうです。
JavaのコードはMainActivity.javaで、Cはnative-lib.cppのようです。
それっぽいですね。
MainActivity.javaを画面に表示してみました。
さっぱり、よくわかりません。
native-lib.cppの方はこんな内容。
----native-lib.cpp---------------------------------
#include <jni.h>
#include <string>
extern "C" JNIEXPORT jstring JNICALL
Java_com_teburarec_call_1julius_MainActivity_stringFromJNI(
JNIEnv* env,
jobject /* this */) {
std::string hello = "Hello from C++";
return env->NewStringUTF(hello.c_str());
}
---------------------------------------------------
これまた、短い割には何だかわかりません。
併せて見ると、
Java側がonCreateで何やらやろうとして、コード末尾の「public native String stringFromJNI();」がnative-libの中に実装されている処理のようです。
C側では何だか長たらしい名前の関数「Java_com_teburarec_call_1julius_MainActivity_stringFromJNI」として定義されてますが、ここをコールしているんでしょう。
この状態でしばらく放置していたら・・・