嬉し恥ずかしお百姓Season2(18):野望の赤ソバ第2期
園芸 [2020/08/29]
毎日暑いですねー。
まあ、さるの棲む地域は、関東以西に比べれば、つい最近までは暑さも可愛いもんでした。
でも、ここ数日は灼熱です。
これまでクーラー無しでテレワークしてたのですが、ついに昨日挫けました。
さて、さるのオマンマのタネ(会社)では、
開催されなかったオリンピックと新型コロナ影響で、今年の夏休み(お盆休み)がグチャグチャでした。
通常のお盆期間(普通8/13~15)は休みじゃなくて、
8月の第1週目に「みんなで有休使いましょーデー」が割り当てられました。
はぁ?
そんな、世間様が休みじゃないときに・・・
案の定色んな外向きの予定が入って休めなかった。
逆にお盆期間は、新盆なんで、少しはちゃんとやんなきゃいけないだろうし・・・
というわけで、お盆の期間に「随分長く居たねご褒美休み」(リフレッシュ休暇)を割り当てさせてもらった。
なので、お墓参りとか、送り盆の習わし(和尚さんが檀家の各家家でお経をあげてくれる。)のため、実家に居なければいけない日も含めて、8月はかなりの頻度で実家に行ってました。
休みっちゃ75km離れた畑に日帰りで行ってたので、裏では「頭がおかしくなったのか? ボケが始まった?」とか言われてるらしい。
棲家の近所には、年間2000円で市が貸し出している河原の畑があるそうだ。
一回の実家畑までの往復交通費(ガソリン代)がだいたい1500円。
単に「野菜作りがしてみたい」だけなら、当然近所の土地を借りた方がお得で効率的です。
でも、そうじゃないんだよなー。
「畑があるから何か植える」なんですよ。
借りてまでしてヒト様の土地を耕す気はありません。
前置きが長くなりました。
話は変わって、昨年から始めた赤ソバ増殖計画の2期目です。
赤ソバにあまり馴染みはないでしょう。
こんなソバです。

荒れた畑を復活させて、ピンクの絨毯を敷き詰めたい。
との野望で、昨年「高嶺ルビー」という品種のタネを2400円分くらい購入して、
8畳くらいの広さに植えてみました。
その種(ソバ)を収穫して、今年再度植え付けます。
その作業を先週末に実施しました・・・
まあ、さるの棲む地域は、関東以西に比べれば、つい最近までは暑さも可愛いもんでした。
でも、ここ数日は灼熱です。
これまでクーラー無しでテレワークしてたのですが、ついに昨日挫けました。
さて、さるのオマンマのタネ(会社)では、
開催されなかったオリンピックと新型コロナ影響で、今年の夏休み(お盆休み)がグチャグチャでした。
通常のお盆期間(普通8/13~15)は休みじゃなくて、
8月の第1週目に「みんなで有休使いましょーデー」が割り当てられました。
はぁ?
そんな、世間様が休みじゃないときに・・・
案の定色んな外向きの予定が入って休めなかった。
逆にお盆期間は、新盆なんで、少しはちゃんとやんなきゃいけないだろうし・・・
というわけで、お盆の期間に「随分長く居たねご褒美休み」(リフレッシュ休暇)を割り当てさせてもらった。
なので、お墓参りとか、送り盆の習わし(和尚さんが檀家の各家家でお経をあげてくれる。)のため、実家に居なければいけない日も含めて、8月はかなりの頻度で実家に行ってました。
休みっちゃ75km離れた畑に日帰りで行ってたので、裏では「頭がおかしくなったのか? ボケが始まった?」とか言われてるらしい。
棲家の近所には、年間2000円で市が貸し出している河原の畑があるそうだ。
一回の実家畑までの往復交通費(ガソリン代)がだいたい1500円。
単に「野菜作りがしてみたい」だけなら、当然近所の土地を借りた方がお得で効率的です。
でも、そうじゃないんだよなー。
「畑があるから何か植える」なんですよ。
借りてまでしてヒト様の土地を耕す気はありません。
前置きが長くなりました。
話は変わって、昨年から始めた赤ソバ増殖計画の2期目です。
赤ソバにあまり馴染みはないでしょう。
こんなソバです。

荒れた畑を復活させて、ピンクの絨毯を敷き詰めたい。
との野望で、昨年「高嶺ルビー」という品種のタネを2400円分くらい購入して、
8畳くらいの広さに植えてみました。
その種(ソバ)を収穫して、今年再度植え付けます。
その作業を先週末に実施しました・・・
スポンサーサイト
嬉し恥ずかしお百姓Season2(17):今年もダイコン
園芸 [2020/08/28]
やっと、やっと今週は、晴れの日が続いています。
でも、熱中症警報が出る程、暑いです。
前回は、未だ天気が不安定なお盆期間中にジャガイモ堀りした話をしましたが、
さらにその数日前、天気に翻弄されつつダイコンの移植をしました。
去年は、地撒きしてみたら、新芽をムシかトリにだいぶ食われちゃったので、
今年は、棲家でポット撒きして、それなりに育ってから畑に移植してみました。
8月に入ってすぐにタネを撒きました。
数日で、芽を出して、10日後にはこんな感じになりました。

こっちに関しても、少々焦りました。(早く畑に植えなきゃ。)
だって、畑を作んなきゃいけないから。
去年も経験しましたが、この時期の植え付けは、春より大変な気がします。
手順はこうです。
①草ボーボーになっている畑の草を草刈り機で刈ります。
②刈った草を集めて排除しつつ、ホー(農具)で雑草にトドメを刺します。(根っこから刈る。)
③マメトラで畑を耕します。
④クワ(農具)で畝を作ります。
この時、畝の底部分にボカシ(肥料)をくれてやりました。
⑤畝に移植ベラで穴を掘って、さらにボカシとオルトラン(虫除けの農薬)をふって、
ダイコンの苗を移植する。
春だったら、①②はしなくて良い工程。
やり方が、正しいのか、あるいは効率的なのかどうかは分かりません。
自己流ですから。
去年との違いは、最初から農薬(虫除け)を使うってこと。
去年は1/3~1/2くらいの若芽を食べられちゃったので、今年は躊躇なく使います。
空模様を気にしつつ、朝6時半に棲家を出た・・・
でも、熱中症警報が出る程、暑いです。
前回は、未だ天気が不安定なお盆期間中にジャガイモ堀りした話をしましたが、
さらにその数日前、天気に翻弄されつつダイコンの移植をしました。
去年は、地撒きしてみたら、新芽をムシかトリにだいぶ食われちゃったので、
今年は、棲家でポット撒きして、それなりに育ってから畑に移植してみました。
8月に入ってすぐにタネを撒きました。
数日で、芽を出して、10日後にはこんな感じになりました。

こっちに関しても、少々焦りました。(早く畑に植えなきゃ。)
だって、畑を作んなきゃいけないから。
去年も経験しましたが、この時期の植え付けは、春より大変な気がします。
手順はこうです。
①草ボーボーになっている畑の草を草刈り機で刈ります。
②刈った草を集めて排除しつつ、ホー(農具)で雑草にトドメを刺します。(根っこから刈る。)
③マメトラで畑を耕します。
④クワ(農具)で畝を作ります。
この時、畝の底部分にボカシ(肥料)をくれてやりました。
⑤畝に移植ベラで穴を掘って、さらにボカシとオルトラン(虫除けの農薬)をふって、
ダイコンの苗を移植する。
春だったら、①②はしなくて良い工程。
やり方が、正しいのか、あるいは効率的なのかどうかは分かりません。
自己流ですから。
去年との違いは、最初から農薬(虫除け)を使うってこと。
去年は1/3~1/2くらいの若芽を食べられちゃったので、今年は躊躇なく使います。
空模様を気にしつつ、朝6時半に棲家を出た・・・
嬉し恥ずかしお百姓Season2(16):ジャガイモ収穫
園芸 [2020/08/20]
「いい加減にしてくれ!」と叫んでしまいたくなるような天気が続きました。
こんな不純な天気の8月はかなり珍しい。
地球温暖化の影響なんじゃなかろうか。
棲家で用事がある日は比較的晴れなのに、畑に行く予定の日に限って雨です。
晴れた翌日で幾分畑が乾いてから掘ろうと思ってたのですが、いい加減待てなくなりました。
「ジャガイモ掘らなきゃ」と思ってから、2週間以上経過してしまいました。
結局、前日の雨が乾ききらない火曜日(お盆休みの最終日)、仕方なくイモ堀りを強行しました。
雑草を排除しながら、かつ湿った畑のため結構時間が掛かりました。
およそ半日。
虻もブンブンたかるし、ドロドロのゴム手袋なので追い払うのままならず。
【所感】
・虫(テントウムシダマシ)にやられた株はイモの数が少ないか小さかったような。
・やはり、日当たりのいいところのイモが大きい。
・芽欠きした苗を植えてもイモは付きました。
・日当たりの悪い畑のイモはさっさと掘らないと腐る。
・肥料はコメ糠ボカシだけ。でもそれなりのイモになった。
最後の最後、イモ掘りのタイミングが遅すぎて、
芽欠き苗を植えた(日当たりもあまりよくない)部分のイモが半分くらい腐ってました。
(腐るとエモイハレヌ臭いになってました。)
湿気た畑だったので、そういう病気なのかもしれない。(軟腐病?)
では、結果発表です・・・
こんな不純な天気の8月はかなり珍しい。
地球温暖化の影響なんじゃなかろうか。
棲家で用事がある日は比較的晴れなのに、畑に行く予定の日に限って雨です。
晴れた翌日で幾分畑が乾いてから掘ろうと思ってたのですが、いい加減待てなくなりました。
「ジャガイモ掘らなきゃ」と思ってから、2週間以上経過してしまいました。
結局、前日の雨が乾ききらない火曜日(お盆休みの最終日)、仕方なくイモ堀りを強行しました。
雑草を排除しながら、かつ湿った畑のため結構時間が掛かりました。
およそ半日。
虻もブンブンたかるし、ドロドロのゴム手袋なので追い払うのままならず。
【所感】
・虫(テントウムシダマシ)にやられた株はイモの数が少ないか小さかったような。
・やはり、日当たりのいいところのイモが大きい。
・芽欠きした苗を植えてもイモは付きました。
・日当たりの悪い畑のイモはさっさと掘らないと腐る。
・肥料はコメ糠ボカシだけ。でもそれなりのイモになった。
最後の最後、イモ掘りのタイミングが遅すぎて、
芽欠き苗を植えた(日当たりもあまりよくない)部分のイモが半分くらい腐ってました。
(腐るとエモイハレヌ臭いになってました。)
湿気た畑だったので、そういう病気なのかもしれない。(軟腐病?)
では、結果発表です・・・
嬉し恥ずかしお百姓Season2(15):ラズベリーの実が付いた
園芸 [2020/08/10]
春に購入して、鉢で育てているラズベリーに実が付きました。
2種類あって、グレンモイというのと、インディアンサマーと言う名前らしい。
実が付いたのは、インディアンサマーという方。

見るからに美味そうです。
数は多くないけど採って来て食べて見ました。
美味いです。
前に紹介した、こちらでは野生のモミジイチゴよりも甘さがはっきりしてます。
「なるほどね。」という感じ。
これ、殖やせたらいいな。
ちなみにモミジイチゴはこんな。

ちょっと話は変わりますが・・・
2種類あって、グレンモイというのと、インディアンサマーと言う名前らしい。
実が付いたのは、インディアンサマーという方。

見るからに美味そうです。
数は多くないけど採って来て食べて見ました。
美味いです。
前に紹介した、こちらでは野生のモミジイチゴよりも甘さがはっきりしてます。
「なるほどね。」という感じ。
これ、殖やせたらいいな。
ちなみにモミジイチゴはこんな。

ちょっと話は変わりますが・・・
嬉し恥ずかしお百姓Season2(14):最近の畑状況
園芸 [2020/08/09]
今日も雨。大雨警報が出てら。
さすがに今日の畑仕事はお休みにしました。
やらなきゃいけないことがたくさんあるのに・・・。
暇なので、今シーズン前半の総括です。
◆ジャガイモ
6月までは元気そのものだったのに。
7月の頭頃から、虫(テントウムシダマシ)の被害を発見し、
翌週に殺虫剤にを撒こうと実家の納屋で噴霧器を探しました。
噴霧器らしきものは3台もあったけど、1台は蓄圧式の古ーいやつでサビサビ。
もう2台は蓄電式のもの。でも古い。かつ、充電用のアダプタが見当たらない。
3台もあるのに、どれも使えそうにありませんでした。
仕方なく、バケツでスミチオンを希釈して、ゴム手をした手でジャブジャブバケツから掛けてやりました。
撒き終わった後で「ジョウロでもよかったのに」と気付きましたが、ちょっと慌ててた。
それが、7/13。
でも、雨降りの合間だったので、あまり効果はなかった気がする。
翌週、見にいくと、さらに被害は進んでいたように思う。

前の週ほど、テントウムシダマシ(幼虫)は居ないように見えた。
被害に遭ってないのは、芽欠きしたものを、「試しに」と植え替えた部分。

さらに一週間。

春にみた光景の再来です。
テントウムシダマシが、成虫になってしかも交尾中。
溜息でちゃいましたが、今度は噴霧器を新調して再度スミチオンを噴霧してやりましたぜ。
さらに1週間経過して、先週みた感じでは、ほとんどが既に茎ごと枯れてた。
収穫時期に来たせいなのか、虫の食害で枯れちゃったのかちょっと分かりません。
もう、掘り起こしてしまいたいと思っていたのだけど、雨。
ぐちゃぐちゃした畑から芋を掘るのはなんかイヤなので、晴れの日が連続するのを待ってます。
◆ササゲ(インゲン)
「水やりとかいらないよ」との山友の奨めもあって、植えてみた。
地撒きして見たが、撒いた半分くらいしか芽がでなかった。

「蔓あり」という種類を買ってしまったのだが、巻き付く先を用意してやらないといけないので、面倒そうだが。
ともかく、畑に側に勝手に生えてきていたコナラの若木を切って、支柱にしてやりました。
最初の内はよかったのですが、あんまり勢いよくは育ちませんでした。
肥料には、ボカシをちょこっとやっただけだったので、合わないか、足りなかったのかと思います。
7月中旬、いくらか生ったので、収穫しました。

そのとき見つけた元気がない原因は、やはり虫でした。
たぶん、こっちはマメコガネでした。写真はありません。
マメコガネは、葉っぱを食べているようでした。
先週、少ないながらも生ってるササゲを収穫しに行ったら、実の方にも食べた跡があります。
食べた跡というよりは、サヤの中に入り込んでいってる感じです。
ちょっと、犯人は分かりませんが、
さっそく新調した噴霧器で、スミチオンをくれてやりました。
でもそのせいでしばらくは、食べられないけどね。
まだあります。
さすがに今日の畑仕事はお休みにしました。
やらなきゃいけないことがたくさんあるのに・・・。
暇なので、今シーズン前半の総括です。
◆ジャガイモ
6月までは元気そのものだったのに。
7月の頭頃から、虫(テントウムシダマシ)の被害を発見し、
翌週に殺虫剤にを撒こうと実家の納屋で噴霧器を探しました。
噴霧器らしきものは3台もあったけど、1台は蓄圧式の古ーいやつでサビサビ。
もう2台は蓄電式のもの。でも古い。かつ、充電用のアダプタが見当たらない。
3台もあるのに、どれも使えそうにありませんでした。
仕方なく、バケツでスミチオンを希釈して、ゴム手をした手でジャブジャブバケツから掛けてやりました。
撒き終わった後で「ジョウロでもよかったのに」と気付きましたが、ちょっと慌ててた。
それが、7/13。
でも、雨降りの合間だったので、あまり効果はなかった気がする。
翌週、見にいくと、さらに被害は進んでいたように思う。

前の週ほど、テントウムシダマシ(幼虫)は居ないように見えた。
被害に遭ってないのは、芽欠きしたものを、「試しに」と植え替えた部分。

さらに一週間。

春にみた光景の再来です。
テントウムシダマシが、成虫になってしかも交尾中。
溜息でちゃいましたが、今度は噴霧器を新調して再度スミチオンを噴霧してやりましたぜ。
さらに1週間経過して、先週みた感じでは、ほとんどが既に茎ごと枯れてた。
収穫時期に来たせいなのか、虫の食害で枯れちゃったのかちょっと分かりません。
もう、掘り起こしてしまいたいと思っていたのだけど、雨。
ぐちゃぐちゃした畑から芋を掘るのはなんかイヤなので、晴れの日が連続するのを待ってます。
◆ササゲ(インゲン)
「水やりとかいらないよ」との山友の奨めもあって、植えてみた。
地撒きして見たが、撒いた半分くらいしか芽がでなかった。

「蔓あり」という種類を買ってしまったのだが、巻き付く先を用意してやらないといけないので、面倒そうだが。
ともかく、畑に側に勝手に生えてきていたコナラの若木を切って、支柱にしてやりました。
最初の内はよかったのですが、あんまり勢いよくは育ちませんでした。
肥料には、ボカシをちょこっとやっただけだったので、合わないか、足りなかったのかと思います。
7月中旬、いくらか生ったので、収穫しました。

そのとき見つけた元気がない原因は、やはり虫でした。
たぶん、こっちはマメコガネでした。写真はありません。
マメコガネは、葉っぱを食べているようでした。
先週、少ないながらも生ってるササゲを収穫しに行ったら、実の方にも食べた跡があります。
食べた跡というよりは、サヤの中に入り込んでいってる感じです。
ちょっと、犯人は分かりませんが、
さっそく新調した噴霧器で、スミチオンをくれてやりました。
でもそのせいでしばらくは、食べられないけどね。
まだあります。
嬉し恥ずかしお百姓Season2(13):エダマメも結構大変だ
園芸 [2020/08/08]
もうずーーっと週末の天気に恵まれません。
日照の少ない圏ではあるのですが、こんなに狙ったように週末に集中するのもめずらしい。
6月中旬からこっち、実家付近の天気予報は、10割雨予報でした。
午前中だけ曇りとか、10時から13時くらいなら曇りとか、そんな予報を頼りにいくらかでも作業しておこうと思って出かけると、結局1日中降らなかったりするし、やっぱりザーザー降ったりもする。
かといって、カラっと晴れることはなくて、蒸しっとした曇り。
ピーカンよりは幾分動きやすいものの、出る汗はハンパない。
水は常に2リットルくらい持って出かけてます。
さて、昨年まで、荒らしていた拡張Aスペースに、今年の春(一行日誌によると5/5)にエダマメ(茶豆)を撒いた。
畑の目の前が、小学校のときの同級生の家の田んぼで、昨年あたりから米からエダマメに転作していたが、
春に、田んぼに作業しに来た彼に会った。で、少し話が聞けた。
どうやら、この付近では「エダマメ・センター※」と呼ばれるエダマメ作付け管理団体があって、種蒔きから収穫まで、センターの方でやってくれるんだとか。(※農協の下部組織の呼び名なのか、ローカルな集団なのか、はたまた全圏組織なのかは知りません。)
田んぼの持ち主には、春先に畑を耕しておくことと、畔(クロ)の草刈りくらいが役目としてあるだけらしい。
こんなに、毎週末行ってるのに、目の前のエダマメ田んぼで作業している同級生に会ったことがないのはそのせいだったらしい。
さるが拡張Aスペースに植えたエダマメが、やっとこんなになった時期くらいに田起こしが終わって。

それから種まきしたはずなのだが・・・
しばらくすると、目の前の田んぼのエダマメが芽を出してた。
いつの間に植えたんだろうとか思っている内にみるみる伸びてきています。
おそらくセンターは、平日に大型機械を持ってきて、50aくらいの広さならさもなくタネ蒔きして行くんでしょう。
(さるは、十分の一の広さに2~3時間掛けたけど。)
この分なら、収穫も一瞬にして終わるだろなー。
「連作はダメなんだべ?」とか聞いたら、「なんも、毎年植えられる」と話してました。
つまり、連作できるような効率のよい肥料とかもあるんでしょう。
文明の利器と組織には敵いませんよね。
ともかく、我が家のエダマメ君たちには「お向かいに負けるな」と願いながら毎週様子を見てました。
様子を見てただけで、植えてから何も手だししなかったので、周りの草はボーボーです。

ふと、お向かいの1か月遅れくらいのライバルを眺めてみたら・・・
日照の少ない圏ではあるのですが、こんなに狙ったように週末に集中するのもめずらしい。
6月中旬からこっち、実家付近の天気予報は、10割雨予報でした。
午前中だけ曇りとか、10時から13時くらいなら曇りとか、そんな予報を頼りにいくらかでも作業しておこうと思って出かけると、結局1日中降らなかったりするし、やっぱりザーザー降ったりもする。
かといって、カラっと晴れることはなくて、蒸しっとした曇り。
ピーカンよりは幾分動きやすいものの、出る汗はハンパない。
水は常に2リットルくらい持って出かけてます。
さて、昨年まで、荒らしていた拡張Aスペースに、今年の春(一行日誌によると5/5)にエダマメ(茶豆)を撒いた。
畑の目の前が、小学校のときの同級生の家の田んぼで、昨年あたりから米からエダマメに転作していたが、
春に、田んぼに作業しに来た彼に会った。で、少し話が聞けた。
どうやら、この付近では「エダマメ・センター※」と呼ばれるエダマメ作付け管理団体があって、種蒔きから収穫まで、センターの方でやってくれるんだとか。(※農協の下部組織の呼び名なのか、ローカルな集団なのか、はたまた全圏組織なのかは知りません。)
田んぼの持ち主には、春先に畑を耕しておくことと、畔(クロ)の草刈りくらいが役目としてあるだけらしい。
こんなに、毎週末行ってるのに、目の前のエダマメ田んぼで作業している同級生に会ったことがないのはそのせいだったらしい。
さるが拡張Aスペースに植えたエダマメが、やっとこんなになった時期くらいに田起こしが終わって。

それから種まきしたはずなのだが・・・
しばらくすると、目の前の田んぼのエダマメが芽を出してた。
いつの間に植えたんだろうとか思っている内にみるみる伸びてきています。
おそらくセンターは、平日に大型機械を持ってきて、50aくらいの広さならさもなくタネ蒔きして行くんでしょう。
(さるは、十分の一の広さに2~3時間掛けたけど。)
この分なら、収穫も一瞬にして終わるだろなー。
「連作はダメなんだべ?」とか聞いたら、「なんも、毎年植えられる」と話してました。
つまり、連作できるような効率のよい肥料とかもあるんでしょう。
文明の利器と組織には敵いませんよね。
ともかく、我が家のエダマメ君たちには「お向かいに負けるな」と願いながら毎週様子を見てました。
様子を見てただけで、植えてから何も手だししなかったので、周りの草はボーボーです。

ふと、お向かいの1か月遅れくらいのライバルを眺めてみたら・・・
スマフォのアプリを作りたい(31):スマフォだけで動作する音声認識⑥
プログラミング [2020/08/07]
前回、ちょっと横道に逸れてしまいましたが、元の流れに戻します。
とは言え、ReactNativeからは話が、2か月以上離れてしまってます。
ちょっとこれまでの経緯を説明します。
アプリを作るメインの環境/言語はReactNative(JavaScript:JSX)です。
作りたいアプリでは2種類の音声認識を使いたいと思ってます。
最初の短い単語で、なんらかの機能を選択します。
例えば、「メモ」と言ってから話す内容は音声をテキスト化して残すとか、「チャット」とか言ったらその後の内容をチャットするとか。
短い発話(キーワード)は、スマフォ本体のみで音声認識(Julius)し、長い発話はクラウドサービス(Google Speech)を使います。
そんなことを構想しながらアプリを作り始めて、主題の「スマフォのアプリを作りたい」ももう30回を超えてしまいました。
現在の副題「スマフォだけで動作する音声認識」は、JuliusをAndroidスマフォ上で動作させるところまで来ました。
これまで、以下の段取りで試行錯誤しています。
Ⅰ.まずはJavaコードからC関数を呼び出すようなアプリの作り方を調べます。
Ⅱ.Javaコード(Cライブラリ含む)をReact Nativeで使えるパッケージ化方法を調べます。
Ⅲ.React Nativeにパッケージを取り込んで、Build&Go。
前回までで、Ⅰは終わったかなという感じです。
今回からⅡになります。
パッケージ化の手順もそうですが、その前にReactNativeから利用できるライブラリとしてのI/Fを決めて、JuliusLibを使ってそのI/F・音声認識を実現させないといけない。
つまりⅡとして書いた段取りが、Ⅰ~Ⅲの中で一番重要かつたぶん大変かもしれません。
なぜ大変か。それは、さるがJuliusLibの本当の仕様、I/F、アルゴリズム?・・・何にも理解してないからです。
あちこちの書き込みの背景/前提をろくに理解しないで試すから、無駄、間違いも多いです。
なので、過去記事も含めて、ここの記述事例を「参考に」などと読む方がいらっしゃる場合は、その点を覚悟して読んでください。
またまた、前置きが長いですね。
では、前回からの続きです。
◆JuliusLibに対する機能変更について
だいぶ前に、react-native-google-speech-apiというパッケージをダウンロードしてきて、マイクから入力した音声をGoogle Speechに送り込んで認識させて見ました。(「:音声認識させたい」~「:音声認識させたい④」)
で、さらにそのパッケージに手を加えて、認識と同時に録音するようにもしてみました。(「:音声認識と同時に録音」~「:音声認識と同時に録音③」)
今回、単語認識を取り入れるとしたら、手を加える箇所はマイク入力音声を制御しているreact-native-google-speech-api(さるカスタマイズ版)だと思います。
Google Speechに渡す音声を録音処理に回したように、単語認識のタイミングならGoogle Speechに音声を渡さずにJuliusLibに渡すように作り変えます。
なので、JuliusLibに対して、バッファで音声を受け取れるI/Fを追加します。
まずは、JuliusLibが外部に公開しているI/F関数と、音声入力デバイス制御用の関数の関係をGrep機能(sakuraエディタ)でざっと調べてみました。
だいたい以下の感じ・・・かな。
adin_xxx_...関数は、使用する入力デバイス毎に関数(ソースファイル)が準備されていて、起動パラメタの「-input xxx」で使い分けされるようになっている。
音声データの入力部分(adin_xxx_read)で、バッファ渡しで音声を受け取る仕掛けを作り込めばできそうです。
ただ、「-input」に新しいオプションを追加して、まるっと疑似デバイスの仕掛けを準備するのは、修正がかなり広範囲に及ぶ懸念がある。
関連のパラメタとかも理解するのに骨が折れそう。
なので、既存の「-input stdin」を利用して、かつ対応するコードが含まれているソース(adin_file.c)に手を加えることで済ませたい。
だいたいの修正の内容は以下の感じになるかな。
・JuliusLibへの入り口のソースファイル名は、julius-entry.cppに変更。
・ビルド結果もjuliusword.soに変更。
・インタフェースは、jlibStart、jlibRecognize、jlibStopの3種類。
・jlib_recognize時にJava側コールバック関数を呼び出し、バッファ渡しで音声データを取得する。
・コールバック関数の指定は、jlibStart()コール時に行う。
・パッケージ名は、これまで通りcall_juliusのまま。calljuliusに変更。
・Java側のメソッドにjlib_call_start、jlib_call_recognize、jlib_call_stopの3種類を作ってそれぞれjulius-entry.cppの関数を呼び出す。
まずは、前回までのjulius_callプロジェクトをフォルダ丸ごとバックアップし、ともかくやり始めます。
続きます。長いです。
とは言え、ReactNativeからは話が、2か月以上離れてしまってます。
ちょっとこれまでの経緯を説明します。
アプリを作るメインの環境/言語はReactNative(JavaScript:JSX)です。
作りたいアプリでは2種類の音声認識を使いたいと思ってます。
最初の短い単語で、なんらかの機能を選択します。
例えば、「メモ」と言ってから話す内容は音声をテキスト化して残すとか、「チャット」とか言ったらその後の内容をチャットするとか。
短い発話(キーワード)は、スマフォ本体のみで音声認識(Julius)し、長い発話はクラウドサービス(Google Speech)を使います。
そんなことを構想しながらアプリを作り始めて、主題の「スマフォのアプリを作りたい」ももう30回を超えてしまいました。
現在の副題「スマフォだけで動作する音声認識」は、JuliusをAndroidスマフォ上で動作させるところまで来ました。
これまで、以下の段取りで試行錯誤しています。
Ⅰ.まずはJavaコードからC関数を呼び出すようなアプリの作り方を調べます。
Ⅱ.Javaコード(Cライブラリ含む)をReact Nativeで使えるパッケージ化方法を調べます。
Ⅲ.React Nativeにパッケージを取り込んで、Build&Go。
前回までで、Ⅰは終わったかなという感じです。
今回からⅡになります。
パッケージ化の手順もそうですが、その前にReactNativeから利用できるライブラリとしてのI/Fを決めて、JuliusLibを使ってそのI/F・音声認識を実現させないといけない。
つまりⅡとして書いた段取りが、Ⅰ~Ⅲの中で一番重要かつたぶん大変かもしれません。
なぜ大変か。それは、さるがJuliusLibの本当の仕様、I/F、アルゴリズム?・・・何にも理解してないからです。
あちこちの書き込みの背景/前提をろくに理解しないで試すから、無駄、間違いも多いです。
なので、過去記事も含めて、ここの記述事例を「参考に」などと読む方がいらっしゃる場合は、その点を覚悟して読んでください。
またまた、前置きが長いですね。
では、前回からの続きです。
◆JuliusLibに対する機能変更について
だいぶ前に、react-native-google-speech-apiというパッケージをダウンロードしてきて、マイクから入力した音声をGoogle Speechに送り込んで認識させて見ました。(「:音声認識させたい」~「:音声認識させたい④」)
で、さらにそのパッケージに手を加えて、認識と同時に録音するようにもしてみました。(「:音声認識と同時に録音」~「:音声認識と同時に録音③」)
今回、単語認識を取り入れるとしたら、手を加える箇所はマイク入力音声を制御しているreact-native-google-speech-api(さるカスタマイズ版)だと思います。
Google Speechに渡す音声を録音処理に回したように、単語認識のタイミングならGoogle Speechに音声を渡さずにJuliusLibに渡すように作り変えます。
なので、JuliusLibに対して、バッファで音声を受け取れるI/Fを追加します。
-ちょっと余談:AndroudStudioのTABの間隔変更- JuliusLibに含まれるソースの書き方が、ネストが深くなる毎に2カラムのインデントを追加しているようです。たまーにSPACEコードではなくTABコードが使われているのですが、それがどうも8カラムになっているみたい。それに対して、AndroidStudioのデフォルトは4カラムになっているみたいで、AndoidStudio上でソースを参照するとヒジョーに読みにくい。 なので、AndroisStudioでのTAB間隔の変更方法です。 -[File]-[Settings...]メニューを選択 -「Settings」ダイアログ左側で、「Editor」-「Code Style」-「C/C++」の順で展開/選択 -右側表示の「Scheme」で「Project」を選択し、その下の「Tabs and Indents」タブを選択 -タブ内の上から3番目「Tab size」欄に8をしてして画面右下の[OK]をクリック でも、ソースを追っかける場合は、AndroidStudioじゃなくて、慣れてるテキストエディタを使うけどね。 |
まずは、JuliusLibが外部に公開しているI/F関数と、音声入力デバイス制御用の関数の関係をGrep機能(sakuraエディタ)でざっと調べてみました。
だいたい以下の感じ・・・かな。
外部I/F (julius-simple.c使用関数) | 入力デバイス関数 (ポインタ名) | マイク入力時関数 | 機能概要 |
j_adin_init | a->ad_standby | adin_mic_standby | デバイスの初期化 |
j_open_stream | a->ad_begin | adin_mic_begin | 音の取り込みの開始 |
j_recognize_stream | a->ad_end | adin_mic_end | 音の取り込み終了 |
〃 | a->ad_read | adin_mic_read | 音声入力 |
〃 | j_get_current_filename | a->ad_input_nam | adin_mic_input_name | 入力デバイス名取得 |
〃 | j_request_pause | a->ad_pause | adin_mic_pause | 認識処理の一時停止時に呼出し |
j_request_terminate | a->ad_terminate | adin_mic_terminate | 認識処理の即時停止時に呼出し |
j_request_terminate | a->ad_resume | adin_mic_resume | 一時停止している認識処理の再開時に呼出し |
adin_xxx_...関数は、使用する入力デバイス毎に関数(ソースファイル)が準備されていて、起動パラメタの「-input xxx」で使い分けされるようになっている。
音声データの入力部分(adin_xxx_read)で、バッファ渡しで音声を受け取る仕掛けを作り込めばできそうです。
ただ、「-input」に新しいオプションを追加して、まるっと疑似デバイスの仕掛けを準備するのは、修正がかなり広範囲に及ぶ懸念がある。
関連のパラメタとかも理解するのに骨が折れそう。
なので、既存の「-input stdin」を利用して、かつ対応するコードが含まれているソース(adin_file.c)に手を加えることで済ませたい。
だいたいの修正の内容は以下の感じになるかな。
・JuliusLibへの入り口のソースファイル名は、julius-entry.cppに変更。
・ビルド結果もjuliusword.soに変更。
・インタフェースは、jlibStart、jlibRecognize、jlibStopの3種類。
・jlib_recognize時にJava側コールバック関数を呼び出し、バッファ渡しで音声データを取得する。
・コールバック関数の指定は、jlibStart()コール時に行う。
・パッケージ名は、
・Java側のメソッドにjlib_call_start、jlib_call_recognize、jlib_call_stopの3種類を作ってそれぞれjulius-entry.cppの関数を呼び出す。
まずは、前回までのjulius_callプロジェクトをフォルダ丸ごとバックアップし、ともかくやり始めます。
続きます。長いです。
スマフォのアプリを作りたい(30):番外編(MySQLからPostgreSQLへ)
プログラミング [2020/08/01]
これまでの「スマフォのアプリを作りたい」シリーズの流れから少し脱線します。
ちょっと前に、このアプリのサーバ側DBをメンテナンスするための管理スクリプトを作成したのですが、DBはEclipseに含まれてたMySQLになってました。
わけあってPostgreSQLもサポートすることになりました。
◆Eclipse+PostgreSQL環境の構築
参考:https://www.dbonline.jp/postgresql/install/
<PostgreSQLのダウンロード>
上記のサイトからリンクされているhttps://www.postgresql.org/を表示
-上部の[ダウンロード→]ボタンをクリック
-対象OSのボタンをクリック
-説明文中の「インストーラをダウンロード」をクリック
-OSとバージョンの組み合わせで、「Windows x86-64」の最新(12.3)の[ダウンロード]ボタンをクリック
<PostgreSQLのインストール>
-ダウンロードしたexeを起動します
-いつもの、OS環境に変更を加えますか的なメッセージにOKします
-インストーラ(Setupダイアログ)の初期画面で[Next>]
-インストール先フォルダを指定して[Next>]
※さるの環境の場合、C:ドライブは空きがないので「D:\・・・\PostgreSQL\12」を指定
以降、インストール先「D:\・・・\PostgreSQL」を「PostgreSQLフォルダ」と表記します。
-インストール・コンポーネント選択はデフォルトの全部のまま[Next>]
-データフォルダの指定はデフォルト(PostgreSQLフォルダ\data)のまま[Next>]
-スーパーユーザのパスワードを指定して[Next>]
-ポート番号はデフォルト(5432)のまま[Next>]
-ロケールは「Japanese, Japan」に変更して[Next]
-設定予定の内容がリストされるので、確認して[Next>]
-再度確認メッセージが表示されるので[Next]
※インストールが開始されます。結構な時間が掛かります。
参考:http://cmemo.net/articles/java/eclipse-%E3%81%A7-postgresql-%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B/
<ドライバのインストール>
-PostgreSQLのインストール完了画面の「Stack Builder・・・」をチェックして[Finish]
※あるいはインストール完了後、Windowsのスタートアップメニューから、[PostgreSQL 12]-[Application Stack Builder]を選択
-スタックビルダが起動します。
「PostgreSQL・・・」を選択して[次へ]
-「カテゴリ」-「Database Drivers」-「pgJDBC・・・」をチェックして[次へ]
-ダウンロード先フォルダを指定して[次へ]
※ダウンロード先には、PostgreSQLフォルダを指定した
-[次へ](インストール開始)
-表示された「Setup pgJDBC」ダイアログで[Next>]
-インストール先ディレクトリを指定して[Next>]
※インストール先には「(PostgreSQLフォルダ)\pgJDBC」を指定
-確認メッセージに対して[Next>]
-完了メッセージ画面で[Finish]
-スタックビルダのダイアログで[終了]
※ここからは、
・Eclipseが既にPC内にインストールされていること
・MySQL版のPHPプロジェクトが既に作成されていてベーススクリプトがあること
を前提にしています。
以降、Eclipse(Pleiades)のインストール先フォルダを「Eclipseフォルダ」と表記します。
<新規PHPプロジェクトの作成>
-Eclipseを起動し、ワークスペースはMySQL版のプロジェクトと同じにして続行
-Eclipseのメニューから[ファイル]-[新規]-[PHPプロジェクト]を選択
-ダイアログ上でプロジェクト名を入力して、その他はデフォルトのまま[完了]
-エクスプローラで、ベース(MySQL版)のスクリプトをプロジェクトフォルダにまるっとコピー
-Eclipseに戻って、「プロジェクト・エクスプローラ」タブ上の新規に作成したプロジェクトを選択し、[F5]キーを押す
※これで、新しいプロジェクトの作成は完了。
<Eclipseに対するPostgreSQLドライバの設定>
※この手順はJava用なので不要。かつ動作確認をしていないので無保証です。
-「(PostgreSQLフォルダ)\pgJDBC\」にある postgresql-42.2.12.jre7.jarをコピーして「(Eclipseフィルダ)\eclipce\jre\lib\」に貼り付けます
<php.iniの修正>
「(Eclipseフォルダ)\xampp\php\php.ihi」をエディタで開いて、以下2つの指定のコメントアウトを外します。
extension=php_pdo_pgsql.dll
extension=php_pgsql.dll
1番目の指定は、PDO経由でのアクセスを有効にするためのものだそうです。「PDO」って何?
→PHP Data Objectsの略。「通常、DBの種類毎に異なるI/Fを使用しなければならないが、PDOは共通のI/Fを提供する。」んだそうです。
ちなみにMySQL版のスクリプトで使っているmysqliは、PDOではない。つまり、現状ではPDOを使ってないのでコメントのままでもよいのだが。
<phpPgAdminのダウンロードとインストール>
phpPgAdminは、httpベースでPostgreSQLのデータベースの設定を行えるツールのようです。
MySQLのDB設定のときに使ったxamppに含まれていたphpMyAdminのようなものなのかな?
ともかくダウンロードしてインストールしてみます。
-以下のURLのページ上の
http://phppgadmin.sourceforge.net/doku.php?id=download
「https://github.com/phppgadmin/phppgadmin/archive/REL_5-6-0.zip」をクリック
-ダウンロードした「phppgadmin-REL_5-6-0.zip」をダブルクリックして、解凍先に「(Eclipseフォルダ)\xampp\htdocs」を指定
-「(Eclipseフォルダ)\xampp\htdocs\phppgadmin\conf」に含まれるconfig.inc.php-distを同フォルダにコピーしてconfig.inc.phpにリネームします。
-作成したconfig.inc.phpを編集します。
$conf['servers'][0]['host'] = ''; → 'localhost';
:PosrgreSQLサーバのhost名かIPを指定する。
$conf['servers'][0]['defaultdb'] = 'template1'; → 'postgres';
:ログインユーザがアクセスできるDB名を指定するらしい。
template1はインストール直後は存在しない。
$conf['extra_login_security'] = true; → false;
:trueにしてあると、postgres、root、adminなどのユーザでは
ログインできないらしい。
<PostgreSQL上へのDBの作成>
-Eclipseに含まれるXAMPP Control Panel((Eclipseフォルダ)\xampp\xampp-control.exe)を起動
-「Apache」を[開始]
-「http://localhost/phppgadmin」をブラウズする
-「phpPgAdmin」画面左上側の「サーバ」>「PostgreSQL」を選択
-右側入力欄のIDに「postgres」を指定して、パスワードにはPostgreSQLをインストールしたときに指定したスーパーユーザ用パスワードを入力して[ログイン]
※環境によって「ログインできない」事例が多数あるようです。さるも上記のconfig.inc.phpの処置が分からなくて結構ハマった。
ちなみにこの現象の対策例として、config.inc.php同様編集対象に上げられる頻度が高いpg_hba.confは、Windows版では「(PostgreSQLフォルダ)\12\data」にありました。
-左側の「PostgreSQL」を選択
-右側の最終行「データベースを作成する」をクリック
-名前:データベース名、Templates:(デフォルト)、エンコード:UTF8、他:お好きに指定して[作成]
DBの枠だけ作成されます。
これって、http(apache)&PHPでPostgreSQLにアクセスできたってことですよね。
ちなみに、PostgreSQLをインストールした結果、スタートアップメニュー内の「PostgreSQL 12」フォルダが作成されています。
そのメニューフォルダ内に「pgAdmin 4」というメニューがあるのですが、実行させたら、Fatal Error:エラー「The application server could not be contacted.」になりました。当面放置します。
まだまだ続きます。
ちょっと前に、このアプリのサーバ側DBをメンテナンスするための管理スクリプトを作成したのですが、DBはEclipseに含まれてたMySQLになってました。
わけあってPostgreSQLもサポートすることになりました。
◆Eclipse+PostgreSQL環境の構築
参考:https://www.dbonline.jp/postgresql/install/
<PostgreSQLのダウンロード>
上記のサイトからリンクされているhttps://www.postgresql.org/を表示
-上部の[ダウンロード→]ボタンをクリック
-対象OSのボタンをクリック
-説明文中の「インストーラをダウンロード」をクリック
-OSとバージョンの組み合わせで、「Windows x86-64」の最新(12.3)の[ダウンロード]ボタンをクリック
<PostgreSQLのインストール>
-ダウンロードしたexeを起動します
-いつもの、OS環境に変更を加えますか的なメッセージにOKします
-インストーラ(Setupダイアログ)の初期画面で[Next>]
-インストール先フォルダを指定して[Next>]
※さるの環境の場合、C:ドライブは空きがないので「D:\・・・\PostgreSQL\12」を指定
以降、インストール先「D:\・・・\PostgreSQL」を「PostgreSQLフォルダ」と表記します。
-インストール・コンポーネント選択はデフォルトの全部のまま[Next>]
-データフォルダの指定はデフォルト(PostgreSQLフォルダ\data)のまま[Next>]
-スーパーユーザのパスワードを指定して[Next>]
-ポート番号はデフォルト(5432)のまま[Next>]
-ロケールは「Japanese, Japan」に変更して[Next]
-設定予定の内容がリストされるので、確認して[Next>]
-再度確認メッセージが表示されるので[Next]
※インストールが開始されます。結構な時間が掛かります。
参考:http://cmemo.net/articles/java/eclipse-%E3%81%A7-postgresql-%E3%81%AB%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B/
<ドライバのインストール>
-PostgreSQLのインストール完了画面の「Stack Builder・・・」をチェックして[Finish]
※あるいはインストール完了後、Windowsのスタートアップメニューから、[PostgreSQL 12]-[Application Stack Builder]を選択
-スタックビルダが起動します。
「PostgreSQL・・・」を選択して[次へ]
-「カテゴリ」-「Database Drivers」-「pgJDBC・・・」をチェックして[次へ]
-ダウンロード先フォルダを指定して[次へ]
※ダウンロード先には、PostgreSQLフォルダを指定した
-[次へ](インストール開始)
-表示された「Setup pgJDBC」ダイアログで[Next>]
-インストール先ディレクトリを指定して[Next>]
※インストール先には「(PostgreSQLフォルダ)\pgJDBC」を指定
-確認メッセージに対して[Next>]
-完了メッセージ画面で[Finish]
-スタックビルダのダイアログで[終了]
※ここからは、
・Eclipseが既にPC内にインストールされていること
・MySQL版のPHPプロジェクトが既に作成されていてベーススクリプトがあること
を前提にしています。
以降、Eclipse(Pleiades)のインストール先フォルダを「Eclipseフォルダ」と表記します。
<新規PHPプロジェクトの作成>
-Eclipseを起動し、ワークスペースはMySQL版のプロジェクトと同じにして続行
-Eclipseのメニューから[ファイル]-[新規]-[PHPプロジェクト]を選択
-ダイアログ上でプロジェクト名を入力して、その他はデフォルトのまま[完了]
-エクスプローラで、ベース(MySQL版)のスクリプトをプロジェクトフォルダにまるっとコピー
-Eclipseに戻って、「プロジェクト・エクスプローラ」タブ上の新規に作成したプロジェクトを選択し、[F5]キーを押す
※これで、新しいプロジェクトの作成は完了。
<Eclipseに対するPostgreSQLドライバの設定>
※この手順はJava用なので不要。かつ動作確認をしていないので無保証です。
-「(PostgreSQLフォルダ)\pgJDBC\」にある postgresql-42.2.12.jre7.jarをコピーして「(Eclipseフィルダ)\eclipce\jre\lib\」に貼り付けます
<php.iniの修正>
「(Eclipseフォルダ)\xampp\php\php.ihi」をエディタで開いて、以下2つの指定のコメントアウトを外します。
extension=php_pdo_pgsql.dll
extension=php_pgsql.dll
1番目の指定は、PDO経由でのアクセスを有効にするためのものだそうです。「PDO」って何?
→PHP Data Objectsの略。「通常、DBの種類毎に異なるI/Fを使用しなければならないが、PDOは共通のI/Fを提供する。」んだそうです。
ちなみにMySQL版のスクリプトで使っているmysqliは、PDOではない。つまり、現状ではPDOを使ってないのでコメントのままでもよいのだが。
<phpPgAdminのダウンロードとインストール>
phpPgAdminは、httpベースでPostgreSQLのデータベースの設定を行えるツールのようです。
MySQLのDB設定のときに使ったxamppに含まれていたphpMyAdminのようなものなのかな?
ともかくダウンロードしてインストールしてみます。
-以下のURLのページ上の
http://phppgadmin.sourceforge.net/doku.php?id=download
「https://github.com/phppgadmin/phppgadmin/archive/REL_5-6-0.zip」をクリック
-ダウンロードした「phppgadmin-REL_5-6-0.zip」をダブルクリックして、解凍先に「(Eclipseフォルダ)\xampp\htdocs」を指定
-「(Eclipseフォルダ)\xampp\htdocs\phppgadmin\conf」に含まれるconfig.inc.php-distを同フォルダにコピーしてconfig.inc.phpにリネームします。
-作成したconfig.inc.phpを編集します。
$conf['servers'][0]['host'] = ''; → 'localhost';
:PosrgreSQLサーバのhost名かIPを指定する。
$conf['servers'][0]['defaultdb'] = 'template1'; → 'postgres';
:ログインユーザがアクセスできるDB名を指定するらしい。
template1はインストール直後は存在しない。
$conf['extra_login_security'] = true; → false;
:trueにしてあると、postgres、root、adminなどのユーザでは
ログインできないらしい。
<PostgreSQL上へのDBの作成>
-Eclipseに含まれるXAMPP Control Panel((Eclipseフォルダ)\xampp\xampp-control.exe)を起動
-「Apache」を[開始]
-「http://localhost/phppgadmin」をブラウズする
-「phpPgAdmin」画面左上側の「サーバ」>「PostgreSQL」を選択
-右側入力欄のIDに「postgres」を指定して、パスワードにはPostgreSQLをインストールしたときに指定したスーパーユーザ用パスワードを入力して[ログイン]
※環境によって「ログインできない」事例が多数あるようです。さるも上記のconfig.inc.phpの処置が分からなくて結構ハマった。
ちなみにこの現象の対策例として、config.inc.php同様編集対象に上げられる頻度が高いpg_hba.confは、Windows版では「(PostgreSQLフォルダ)\12\data」にありました。
-左側の「PostgreSQL」を選択
-右側の最終行「データベースを作成する」をクリック
-名前:データベース名、Templates:(デフォルト)、エンコード:UTF8、他:お好きに指定して[作成]
DBの枠だけ作成されます。
これって、http(apache)&PHPでPostgreSQLにアクセスできたってことですよね。
ちなみに、PostgreSQLをインストールした結果、スタートアップメニュー内の「PostgreSQL 12」フォルダが作成されています。
そのメニューフォルダ内に「pgAdmin 4」というメニューがあるのですが、実行させたら、Fatal Error:エラー「The application server could not be contacted.」になりました。当面放置します。
まだまだ続きます。