FC2ブログ


謎の藁人形17(アマビエ流行りにあやかって)

   藁人形・地域 [2020/05/21]
未だ三密回避のための変則カレンダ勤務中です。

こんなご時世なのに
ペタペタ話す首相が強引に検察官の定年延長法改正を採決するかと思いきや、急に取り下げましたね。
若干の肩透かしを食らった印象を持ったのはさるだけではないでしょう。

そしたら、渦中の検事長の賭けマージャンが露見して辞任とは・・・
内閣は一足先にそのことが公にされそうなのを察知したんでしょうね。だから、急に取り下げた。
今までのペタペタ話す首相のやり口からすると、市井の騒ぎなんて気にしなかったはず。

ただ、そうまでしてこの違和感のある法改正をしたかった、あるいは当の検事長に検察庁を仕切らせたかったのには、何か裏の事情があったのでは?
疑り深いさるは、テレビドラマのように権力者の悪事がいつかは暴かれるのではないかと期待しております。はい。


あっタイトルに関係ない話を長々書いてしましました。

さて、話は変わりますが、
最近ニュースを見ていて、青森のコケシ作家が疫病除けにアマビエのこけしを作って販売しているという話題を紹介していた。

アマビエこけし自体、ペンギンみたいで結構かわいい。

でも待てよ。
アマビエって熊本の妖怪(神様?)じゃ?
それに、疫病が流行るのを予言し、自分を描いた絵を世間に広めろと言ったとか。
疫病を治めた的な伝説ではない。
除災のご利益があったかどうかは定かではない?
それを青森でキャラクター化って・・・


さあ、それに比べれば、

さるの棲む圏で、道端に未だに飾られている謎の藁人形:鹿島様軍団の中の三ツ村のお方
20140706_52.jpg
や、御返事のこのお方
20140706_61.jpg
に関して言えば、疫病に関する除災でご利益があったと横の看板に書いてありました。
20140706_54.jpg

ならば地元ビイキの方々で、鹿島様をモチーフにしたキャラクターなんかを考えてほしいなー。

なんて、ふと思いました。(すいません。さる自体にそんな才能はないので、他人頼みです。)

お隣の圏だと、こんなマスコットがあったりしたし。
20160719_24.jpg

圏内13神まとめて、悪病退散!カシマンジャー なんてね。
うわー、センスねー。
(注:数は正確ではありません。おにょ様、しょうき様もまとめるともっとおられます。)


最近、雨降りが続いて、外遊び×、外仕事できてないので、雑感でした。

では。m(__)m


スポンサーサイト





採ったら食べよー(18):ちょっとチャレンジングな

   山菜・きのこ採り [2020/05/14]
外出自粛/自宅勤務期間中なので、棲家にいるときのお昼ご飯は自分で火を使います。

採ってきた山菜が冷蔵庫に放置されぎみなので、何とか消費しようとしてます。

家人はさるが採って来る山菜にかなり飽き飽きしているようです。
ですが、そこを推して、リクエストして料理していただいたものを先に。

まずは、アイコの炒め物
今回は、アイコとブタバラ。
20200505_ra.jpg
味付けは、おそらく塩、コショウ、万能つゆ。
サクサクと食べられて、美味いんだこれが。

前回は、さる自身が料理したのですが、比較的好意的な感想を頂いた
ニオサクのキンピラ
それを「自分が作ったらこうだ!」ということらしい。
20200506_rn.jpg
コブとサツマアゲが追加されてます。
確かに、こっちの方が美味い。

「こんなにシドケ採って来て、てんぷら以外にどうやって食うんだよ!」と言われたので、
思わず以前飲み屋さんで頂いたことのある「カルパッチョ!」と答えたら出てきました。
シドケとタイ&サーモンのカルパッチョ
20200507_rs1.jpg
やるもんだ。
20200507_rs2.jpg
結構美味い。
というか、刺身が美味かった。
タレはどうやって作るのか聞いたら。
・醤油 大さじ2
・レモン汁 大さじ2
・オリーブ油 大さじ1
・酢 少々
・粒胡椒 少々
だそうです。
対象となるシドケ&刺身の量が不明です。
なので、調味料の割合とお考え下さい。
たぶん、写真の4倍の量に対しての分量だと思います。


さあ、この後はさるの消費することが目的の・・・・

続きを読む



スマフォのアプリを作りたい(24):サーバ側の仕掛けを作る①

   プログラミング [2020/05/13]
スマフォだけで全て完結するシステムって言うのはなかなかねー。
一人だけで使うアプリならありそうだけど・・・
複数の人で、データを共有したいとなったら、当然間を取り持つサーバーが必要になります。

今回作っているアプリも基本、チャットの機能だし。
さらに、データが蓄積させたり、利用内容が高度になれば、DBも必要です。

なので、DBを使ったシステムということで、その動作環境とサーバ側アプリ(スクリプト)を作成します。


ちょっとだけやったことがある言語と言えば
・ASP(古い。その実VB)
・PHP(これも古いが最近も使った)
・Perl(もう懲り懲り)

既にEclipseの環境があるので当然PHPを選びました。
DBはMySQLです。

始めます。


◆プロジェクトの作成
この辺の手順は、以前の備忘録Eclipse-PHP環境でちょっとハマった辺りが何かの足しになるかもしれません。そちらを参考にされてください。

ともかくPHPのプロジェクトを新しく作ります。
ソースはまだ何も入ってません。


◆DBの作成
参考:https://blog.goo.ne.jp/xmldtp/e/8cf1d195d8f18661884b7c1c90cca0c4
1)Eclipseのメニューから
-[ウィンドウ]-[パースペクティブを開く]-[その他]を選択
-続けて、「パースペクティブを開く」ウィンドウで、[データベース開発]を選択
-Eclipse画面の左側が、「データ・ソース・エクスプローラー」に変わります。
2)データベース接続
-「データ・ソース・エクスプローラー」の[データベース接続]を右クリックして
-プルダウンから[新規]を選択
-「新規接続プロファイル」上のリストから「MySQL」を選択して[次へ]をクリック


-ファイル選択ダイアログでJDBCを指定?・・・

あれ?こんなに面倒くさかったかしら。
以前にもDBの作成はやってみたことがあったはずなのに、全くこの手順に馴染みがありません。

・・・

続きを読む



嬉し恥ずかしお百姓Season2(7):棲家の育苗場

   園芸 [2020/05/12]
さるの棲む圏の自粛ムードは若干緩くなったみたいなのだが、オマンマのタネは都会に合わせた対応。

既に変則的な勤務=出勤率低減策実施を決めていて、それに従わざるを得ない。
同僚が集まる率を50%に抑えるための変な勤務シフト(カレンダ)を組まされている。

日曜は稼働日で、週休3~4日になってます。
その分、お盆の休日を返上して働けとのこと。
やれやれ。

そんな感じで、生活リズムがかなり乱れ気味です。


さて、お百姓のまね事の方は、何を植えようか色々検討中。
でもちゃっちゃと種まきしないと、去年の小松菜(ギシギシの夏小松菜)のようなことになる。

植えたいものがたくさんあって少々焦り気味です。

地植え/直播きじゃない方がいいものは、棲家の脇のスペースを使って作業しています。
家庭菜園ってやつですな。

棲家脇は、今こんなんなってます。
20200511_tm.jpg

はい。
色々な種をポット播きして見ました。
カボチャ、オクラ、鷹の爪、里芋(種芋)、モロヘイヤ。
カボチャ、オクラ、鷹の爪は、去年育てたやつからタネを取ったもの。

モロヘイヤは去年買ったタネ。(植えられずじまいだった。)
里芋は今年仕入れたもの。ちょっと状態が良くなかった。目が出るか不安。

ラディッシュ、インゲン、ニラ(球根)、シソ、エゴマなど、今年も植えようと思っている。
いくつかは直播でもいいかとも思っている。

昨年挿し木したブルーベリーは、こんな感じ。
20200511_bb.jpg
新芽が出始めました。
3割くらい枯れてしまって、昨年の半分くらいですね。

ベリー繋がりで・・・

続きを読む



嬉し恥ずかしお百姓Season2(6):掘って掘って

   園芸 [2020/05/08]
圃場拡張計画続行中です。

連休終わりの2日間は耕作放棄地の掘り起こし作業でした。

耕作放棄スペースに何か植えてやろうとしてます。
まずは、根っこがやっかい過ぎるススキをスコップと鍬で掘り起こして破壊してました。

昨年の夏からずっとススキを排除していた拡張スペースAを4月になってからマメトラで一度掘り起こしてます。
4月の最終日曜日に2度堀りして、その途中で止まってた。

ススキではなく、ヨモギやイタドリが蔓延っていた拡張スペースBには、既にブルーベリーの苗を移植しました。

さらにその先の拡張スペースCのススキの排除を4月にそれなりの日数と労力を掛けてやってました。

1日目
気持ちのいい天気でした。
こちらのハクサイも既に花が咲いてました。
20200505_8.jpg

「フクタチ祭」は終わりです。
去年から使い始めたこのスペースは・・・もう少し後で考えます。
10時過ぎくらいに、マメトラのエンジンを始動し、拡張スペースAの2度堀りを完了。

拡張スペースBのブルーベリーの苗木の間を掘りました。
雑草除けの意味です。
でも、固い。
仕方ないです。たぶん20年くらいは何も植えたことがないはずです。
というか、もっとかな?
ともかく、スイカが植わっているのを高校生自分に見た切りな気がする。
掘るとイタドリの根がものすごく出てきます。
20200505_9.jpg

4時間くらいは掘り続けたと思います。

で、マメトラがガス欠で、堀り起こしは終了。
拡張スペースに枝豆を撒いて、5時を過ぎてました。

翌日、どうしようか迷ったのですが・・・
幾分天気もよさそうだしと思って、再度実家畑に。

続きを読む



嬉し恥ずかしお百姓Season2(5):花もワラビも盛り

   園芸 [2020/05/07]
連休最後の2日間は、畑堀り/畑起こしです。
荒らしていた畑を掘り起こします。

その前に、大急ぎで埋めたジャガイモの様子を見に段々畑の方へ。

まだ芽は出てませんでした。
そりゃそうだ、10日くらいしか経ってないもの。

ハクサイ(スペースC)は、採り切れなかったフクタチが花を咲かせてました。
20200505_1.jpg

小松菜も花盛り。
20200505_2.jpg

アスパラ菜も含めてみんな黄色い花なんですね。
菜の花っぽい・・・・待てよ・・・菜・の・花だから・・・

今調べました。
「菜の花」と言うのは固有種の名前ではなく、アブラナ科の植物(花)の総称なんだそうです。
知らなかったー。

ともかく、見回っていると。
奥の荒らしてある(ここにもある耕作放棄スペース)ところに、
20200505_3.jpg
ワラビがにょきにょき出てました。

10分くらいで、こんな。
20200505_4.jpg
お土産代わりに持って帰ります。喜ばれないけど。

ワラビを撮り終えて振り返ると・・・


続きを読む



三密自粛中:’20山菜採り3回目

   山菜・きのこ採り [2020/05/06]
中4日で三回目の山菜採りです。
場所は前回と同じ、さるの実家付近の沢の奥。

前回は、未だ出始めということもあってスーパーの袋1つ分くらいの収穫でした。
でも、今回は、アイコ・パラダイスになってるハズ。
※アイコ:ミヤマイラクサ

メンバはいつもの山友2名といっしょ。
行く途中、先週は無かった「クマ注意!」の看板が。

目覚めたクマが里界隈に出没してるんですね。
そう言えば、前週実家周辺の掃除(暴風杉の落ち葉がもの凄い。)している最中の防災無線(スピーカー)のアナウンスでも、「注意しろ。山菜採りはできるだけ控えろ。」的なことを言ってたな。

って言われてもね~。
「できるだけ」って言うところが、今の自粛要請と同じですね。^^;)

テレビで都会の河川敷のゴルフ練習場が混んでて、練習している人の距離が2mに満たないと批判めいた放送がされてましたが、我々は、最チカ(近)でも、3mくらいの距離を保ってますよ。えーえー。
だから、責めないでね。

ともかく、2時間くらい山歩きして、アイコでリュックサックは満杯になりました。
予想どおり盛りでした。
もう、採り切れないので、帰り道はほとんどスルーして来た。

それと、シドケも今回は採ってきた。
20200504_1.jpg

余り、好きな部類ではないが食わず嫌いはいけないかなとか思って。
昨年、飲み屋さんで出たシドケと魚の刺身のカルパッチョ?風の料理が美味かったので。

帰り際、山友が木の芽を指して「これも食べられるらしいぞ」と言う。
「えー?」
タラノメでもコシアブラでもない。
何とか名前を言っていて、「写真をとってGoogleレンズで調べれば直ぐわかる。」と言うので、写真を撮ってきた。
20200504_2.jpg

ピントずれてた。
現地では、電波がなくて直ぐにはGoogleレンズできず。

帰って来て、やってみたが、それっぽいものは引っかからない。
唯一「ハリギリ」という、聞いたことがなかった木の芽が引っ掛かったが。
これとは違うよーな。
山に行くとたまーに素晴らしく棘のとがった、カエデのような葉っぱの木を見掛けるが、どうもそれのようだ。
コシアブラよりは、稀にしか見ない。
樹高も大人の背丈より少し高いくらいのしか見たことがない。

芽は春に食べるとあるが、割と苦味があるらしい。
ともかく写真の木の芽ではなさそう。では、この写真のは?勘違い?

まいっか。

さて、この日の成果は・・・



続きを読む



採ったら食べよー(17):ニオサクで2品

   山菜・きのこ採り [2020/05/03]
一昨日、雨で外に行けなかったので、
家で、採ってきたニオサク(蝦夷にゅう)を料理してみました。

ニオサクは、2日前に山で採ってきたもの。
下茹でしたものを、2日間水を取り替えつつさらしてあります。
20200429_2.jpg

食感はフキに似てます。
むしろフキより癖が少なくて、かつ食べ応えもある。

例年、思ったような料理にしてもらえないので、この機にさっさと食べたいものに調理してしまいます。

まずは、まださるが山菜採りにそれほどハマる前の若かりしころ、
知り合いの奥様がこさえて食べさせてくれた、ニオサクの甘辛煮
ずっと食べたかったんです。

当然、ずいぶん昔のことだし、作り方なんか聞いてないから手探りです。
「フキの甘辛煮」で検索した作り方を参考にしました。

ニオサク500gを適当な長さ(2.5cmくらい)にぶつ切り。
太いのは、縦に半分とかに。

フライパン(深め)にごま油を薄くひいて、ニオサクを投入して軽く炒めます。

「出し汁1/2カップ」とあったが、出し汁なんか用意してないから、梅昆布茶をパラパラ振って、水100ccを投入。
※1/2カップって100ccなのね。

砂糖大さじ2~3、酒50~100cc、みりん大さじ2、醤油50~100ccを投入。
※参考のフキの甘辛煮の作り方だとかなり濃くなりそうだったので、かなり適当に減らして少ない方の分量でやりました。

鷹の爪を細かく切ったものをパラパラ入れます。
お好みです。
さるは自家製の粗びき一味唐辛子を3摘まみ入れた。

弱火で水分が飛ぶまで煮込みます。

出来上がり。
20200501_s1.jpg
家人からは、辛すぎるとまたもや不評。

続いてもう一品・・・

続きを読む



三密自粛中:’20山菜採り2回目

   山菜・きのこ採り [2020/05/02]
非常事態なので、自粛してます。人混みは・・・

さるの棲む地域は、高齢者が多いし、移動はほとんど自家用車だし、
人気のアクティビティなんか・・・「何?それ」だし。
「人混みなんか、元々どこにあったんだ?」ってな感じの地域。
だけど、みんな真面目だから普段ちょっと人通りの多い駅前とかでも、なおさら閑散としているようです。


さて、ワサビを採りに行って、中三日で今度は、アイコ他採りです。

集合するまでは、マスク着用で車で移動しますが、
現地(山林入口)に着くと、皆マスクを外します。
(・・・意味ないよね。)

ともかく、山友二人とも楽しみにしていたアイコの収穫です。

ちょっとまだ時期が早くて、2時間半徘徊してアイコはスーパーの袋1っ個分。
4人家族でも、数日ワシワシ食べるのには十分な量ですが、ご近所に配る程はない。

アイコ(ミヤマイラクサ)他は、
ホンナ(イヌドウナ)、
コゴミ(クサソテツ)、
ニオサク(エゾニュウ)などを例年通り採取。

ともかく、半日移動と採取で、残り半日は洗ったり煮たりの後始末です。
で・・・写真を残すほどの景色も目新しい発見・・・・

あっあった。
山友が見つけた鬼?の骨?
20200429_1.jpg
角があります。シシガミ様のようです。
いつ亡くなったんでしょうね。綺麗に白骨化してました。

話を戻して・・・

続きを読む



三密自粛中:’20山菜採り開始

   山菜・きのこ採り [2020/05/02]
自粛中です。

今年は、やっぱりちょっと山菜の出足が早め。

積雪が少なくて、雪がなくなるのは1か月くらい早かったけど、
4月に入ってから雪がちらついたりして、気温がなかなか上がらず、
結局例年より1週間早いくらいですね。

4/25 マスクを装着していることを前提に、いつもの温泉施設駐車場に集合。
予報では、雨模様となっていたが、予報通り天気は雨。

なので、全員雨合羽持参。

なぜ、そうまでして4/25(土)にこだわったかというと、
翌日も余りお天気の予報とはなっておらず、
次の週末まで時期を外すと、獲物が成長して、美味しく頂けないから。

そうまでして採りに行くのは、葉ワサビです。
毎年、書いているので、詳しくは説明省きます。

それと、同じスポットに赤コゴミが同時期に生えるので、
一石二鳥なのです。一回で済む。

例年だと「まだ早いでしょ」の日程なのですが、
登ってみるとやっぱ遅いくらいでした。

ギリセーフ。

赤コゴミも出始めで、皆さん満足のコメントと共に下山。

実は山菜採りと言うのは、採ってからが大変なのです。



続きを読む



育てたら食べよー(6):カボチャと栗の煮物

   園芸 [2020/05/02]
GWで雨って・・・。
外出自粛期間なのでおとなしく・・・・

暇だし久々に料理でもしてやろう。
手始めに、目についたのが去年収穫したカボチャ(たしか雪化粧とかいうカボチャらしからぬ品種名)がまだ台所に転がってました。

そう、いつか栗の甘露煮と一緒にデビューさせてやろうと思ってた。

カボチャも栗もあまり好きな方ではないけど、やって見ます。

クックパッド的なサイトの説明を参考にしてます。


まずは、カボチャを半分にします。
腐ってませんでした。タネを取ります。
20200501_k1.jpg

半分をさらに半分にしてラップします。
20200501_k2.jpg
レンジで600wくらいで3~4分チンします。

一口大に切って、外皮は剥きます。
20200501_k3.jpg

ここで、昨年秋に作って瓶に入れて冷蔵してあっった栗の甘露煮登場。
20200501_k4.jpg

カボチャと栗を鍋に投入。
醤油:大さじ2
甘露煮の露:大さじ6
(※カボチャだけで煮込む場合は、砂糖さじ2、ミリン大さじ2、お酒少々)
昆布茶:少々
(※なんかおだしの素みたいなのを入れろとあったが、なくて代用。)
水:200cc
(※ちょっと水分多かったので、もうちょっと少なくてもいいかと思う。)
火にかけます。
20200501_k5.jpg
煮たってきたら、火を弱火にして、およそ30分。

出来上がり。
20200501_k6.jpg

栗の色が・・・・
あと、ちょっと汁が多かったかなー。
目分量で入れたので。

栗の味は、あまーいですが、
カボチャは、いい感じの味です。

カボチャを煮る場合、砂糖、みりん、お酒なんかも入れるみたいですが、
甘露煮を作るときに、砂糖とブランデーを使ってたので、その露で代用しました。

栗も、前よりホクホクした感じになってました。

これで、気が済みました。
でも、家人はだれも食べません。

結局、さるのみで消費することになりそう。

では、暇つぶし料理一品目の話は終了です。

m(__)m・・・
っと、
さるが自分で作った分けではない数日前のものもついでに紹介します・・・


続きを読む



嬉し恥ずかしお百姓Season2(4):圃場拡張中

   園芸 [2020/05/01]
コロナ騒ぎで、さるもテレワーク1週間やってからの連休突入です。

非常事態宣言を受けて、三密を避けるべく、連日山(山菜採り)畑(農作業)にしか行ってません。
って、さるの場合、昨年と何も変わらず一緒かな。
元々の行動範囲というか、環境というか、嗜好が三密とは無縁だったのね。

連休前の先週末と連休初日は山菜採り。
それぞれ、その翌日は畑仕事というパターン。
今日は、雨模様なので・・・


さて、去年から準備してた、畑の拡張の状況とか、その他の作業のこととか書きます。
暇だから。日誌替わり。

3/29 ボカシ肥の仕込み
20190503_3.jpg

量は、昨年の半分で、コメ糠を50Lくらい、近所の精米機からGet(無料)してきて、
糠3、油粕1、牡蠣石灰1なので合計で80Lくらい仕込んだのかな。
現在、嫌気発酵中。

昨年は、4月末にやったようだったので、今年は一か月くらい早め。

3/末~4/初旬 ブルーベリーの移植、山林片付け
ちなみに山林の片付けも昨年は連休中にやってたようなので、やっぱり一か月早い。

4/12 開墾部分土起こし1回目
荒れてた部分の邪魔もの(ススキ 100株くらい?)を昨年中に掘り起こして破壊。
(これまでのガンバリは、過去の記事にネチッっと書いてます。)

掘り始めました。
20200412_z3.jpg
って、それだけです。

10年も耕作放棄した土地なので固い。
耕すと言うよりは、畑起こしですね。
もう一回くらい耕す必要がありそう。
まずはそれくらいで、枝豆(茶豆)でも植えようかと思ってます。

翌週は・・・

続きを読む



スマフォのアプリを作りたい(23):実際のスマフォでアプリを試す

   プログラミング [2020/04/27]
これまで、ずーーっとエミュレータ(AVD:Android Virtual Device)でしか試作したアプリを動作させてませんでした。
そもそも、エミュレータを使っていたのは、買った中古のSIMフリー・スマフォのAndoridバージョンが古くて対象として使えなかったから。
富士通 ARROWS Me F-11D Android4.0 APIレベル15

APIレベル15だとVisualStudio2017(NDK)ではサポートされてなかった。
たしかAPIレベル19以降だったかと思う。

一方、React Nativeに切り替えたときには、もうエミュレータを使うことしか頭になくて。
エミュレータの最低の前提バージョンが、6.0(APIレベル23)。

ずっと、それで動作確認してきたが、そろそろ実機を使ってみたくなった。

ここで、倅が以前使っていたLUMIXというスマフォが引き出しから出てきた。
確認してみると、Androidバージョンは、4.04となっている。
もしかしたら使えるかも。

ただ、4.0xのコード名がIceCreamSandwichです。それに対して4.1-4.3がJellyBeanという名前。
どっかの機能制限で、「JellyBean以降」というのがあった気がします。

まあ、どうなるかやってみます。


◆SDKの追加インストール
Android SDKとしては、かなり古いバージョンのものまで用意されていたはずなので、SDKの追加インストールから。

-AndroidStudioを起動
-Welcome画面の右下の[Configure]をクリックして、プルダウンから「SDK Manager」を選択
-各SDKの選択画面が表示されます。すでにインストールしてある10.0と6.0にチェックが入ってます。
-「SDK 4.0.3(IceCreamSandwich)」をチェック
-右下の「Show Package Detail」をチェック
-「SDK 4.0.3」の構成が確認できます。
-全部にチェックが入ってるのをそのままにしました。
-一応「SDK Tools」タブを確認しましたが、何か追加要かわからなかったのでここもそのまま
-右下の[OK]ボタンをクリック
-インストールが完了(Done)したようなので、[Finish]をクリック


◆スマフォのPCへの接続
LUMIXの場合
-スマフォ(LUMIX)の画面下のボタンの左側(三本線のマーク下)を押す
-プルアップメニューから「本体設定」を選択
-設定メニューの一番下の方の「開発者向けオプション」を選択
-「注意」メッセージが表示されるのでよく読んでから[OK]をタップ
-「USBデバッグ」項目をチェック状態にします。
 (その他の項目はご自由に)

チャント接続可能かどうかは、以下で確認するのだそうです。
参考:https://reactnative.dev/docs/running-on-device

-コマンドプロンプトを起動します。
-カレントドライブをSDKインストール先の「platform-tools」にします。
-「adb devices」コマンドを打ち込んで、表示内容に「xxxxxxxxxxx device」が出るか確認します。
----コマンドプロンプト-----------------------------
C:\WINDOWS\system32>cd /d d:\appmake\android\sdk\platform-tools

d:\AppMake\Android\Sdk\platform-tools>adb devices
* daemon not running; starting now at tcp:5037
* daemon started successfully
List of devices attached
5C84000600000001 device
---------------------------------------------------


参考(React Native)サイトの説明では、このあと「react-native run-android」をやればいいように書かれています。
それだと、エミュレータが起動されちゃうんじゃ?
「adb -s (デバイス名) reverse tcp:8081 tcp:8081」とやるとありますが、「デバイスがAndroid5.0以降を実行していて」とあります。
じゃ、それより前のバージョンのデバイスはどうするの?
なんで、こういう説明の仕方しかしないのかなー。ちょっとイラつきますよね。

あと、ベースのSDKを変更する部分の設定がまだです。


◆プロジェクトのベースSDKの変更
「どこで、対象Androidのバージョンを決めてたっけ?」と考えて、過去の書き込みを自身で読み返してみました。
(このブログを備忘録として使ってます。)

これかな?
「スマフォのアプリを作りたい(14):音声認識させたい②」
react-native-google-speech-apiを導入しようとしたときに、ビルドが通らなかった原因が、android\build.gradleの中に指定してあった、「minSdkVersion = 16」という記述。
この辺の指定で、四苦八苦したのをジワジワ思い出してきた。

ってことは、
その時ダメだったAPIレベルより低いものを指定して、ビルドが通る分けがない。
でも、試しにやってみた。
----build.gradle-----------------------------------

buildscript {
ext {
buildToolsVersion = "28.0.3"
//*** changed min_version for google-speech-api by sarumosunaru
//minSdkVersion = 16
//minSdkVersion = 21
//compileSdkVersion = 28
//targetSdkVersion = 28
//*** try old api level
minSdkVersion = 15
compileSdkVersion = 15
targetSdkVersion = 15
}


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


見事に、エラーが出まくりました。
----コマンドプロンプト-----------------------------
D:\AppMake\proj\VTChat>react-native run-android
info Running jetifier to migrate libraries to AndroidX. You can disable it using "--no-jetifier" flag.
Jetifier found 1034 file(s) to forward-jetify. Using 4 workers...
info Starting JS server...
info Installing the app...

> Configure project :react-native-audio
WARNING: Configuration 'compile' is obsolete and has been replaced with 'implementation' and 'api'.
It will be removed at the end of 2018. For more information see: http://d.android.com/r/tools/update-dependency-configurations.html
WARNING: minSdkVersion (16) is greater than targetSdkVersion (15) for variant "debug". Please change the values such that minSdkVersion is less than or equal to targetSdkVersion.
WARNING: minSdkVersion (16) is greater than targetSdkVersion (15) for variant "release". Please change the values such that minSdkVersion is less than or equal to targetSdkVersion.

> Configure project :react-native-google-speech-api
The com.google.protobuf plugin was already applied to the project: :react-native-google-speech-api and will not be applied again after plugin: android-library
WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
For more information, see https://d.android.com/r/tools/task-configuration-avoidance.
To determine what is calling variant.getJavaCompile(), use -Pandroid.debug.obsoleteApi=true on the command line to display more information.

> Task :react-native-audio:compileDebugJavaWithJavac

> Task :react-native-audio:compileDebugJavaWithJavac FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 6.0.
Use '--warning-mode all' to show the individual deprecation warnings.
See https://docs.gradle.org/5.5/userguide/command_line_interface.html#sec:command_line_warnings
28 actionable tasks: 6 executed, 22 up-to-date
D:\AppMake\proj\VTChat\node_modules\react-native-audio\android\src\main\java\com\rnim\rn\audio\AudioRecorderManager.java:87: error: diamond operator is not supported in -source 1.6
Map constants = new HashMap<>();
^
(use -source 7 or higher to enable diamond operator)
D:\AppMake\proj\VTChat\node_modules\react-native-audio\android\src\main\java\com\rnim\rn\audio\AudioRecorderManager.java:277: error: multi-catch statement is not supported in -source 1.6
} catch (InvocationTargetException | RuntimeException | IllegalAccessException e) {
^
(use -source 7 or higher to enable multi-catch statement)
D:\AppMake\proj\VTChat\node_modules\react-native-audio\android\src\main\java\com\rnim\rn\audio\ReactNativeAudioPackage.java:22: error: diamond operator is not supported in -source 1.6
List modules = new ArrayList<>();
^
(use -source 7 or higher to enable diamond operator)

3 errors

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':react-native-audio:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.


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

前の方のreact-native-audioのエラーは明らかにAPIレベルが合ってないという感じですかね。
後の方は、Javaのバージョンが合ってないから?TypeScript記述?でエラーになってます。

ここで、Android/APIレベル/Javaのバージョンの関係について、ちょっと気になったのでぐぐって見ました。
参考:https://so-zou.jp/software/tech/programming/java/introduction/version/
参考:https://development.relaxes.jp/android%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%80%81api%E3%83%AC%E3%83%99%E3%83%AB%E3%80%81%E3%82%B3%E3%83%BC%E3%83%89%E3%83%8D%E3%83%BC%E3%83%A0%E4%B8%80%E8%A6%A7/

なんか、Javaのバージョンってややこしい。
たぶん、スマフォはAndroid4.0(APIレベル15)-Java1.6 で、
さるの現状の環境はJDK8(Java1.8)だから確かに合ってない。

----コマンドプロンプト-----------------------------
D:\AppMake\proj\VTChat>java -version
Picked up _JAVA_OPTIONS: -Duser.language=en
java version "1.8.0_231"
Java(TM) SE Runtime Environment (build 1.8.0_231-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.231-b11, mixed mode)
---------------------------------------------------


まあでも、ここを何とか切り抜けたとしても、その先の見通しもない気がします。
なので、この前提不一致の件の対策方法を探るのはやめて、build.gradleは元の記述に戻します。

続いて・・・

続きを読む



スマフォのアプリを作りたい(22):音声ファイル(.m4a)を再生する

   プログラミング [2020/04/16]
前々回までに音声認識と同時にその音声を録音する機能を作りました。
録音した音声は、.m4aファイルとして、保存してあります。
その音声ファイルを再生する部分をやってみます。

いつものボヤキに入る前に。

「スマフォのアプリを作りたい」シリーズを最初から読まないとどういう環境でやってることなのか分からないかと思いますので、ここでさらっと説明しておきます。
React Nativeを開発環境としています。
 開発環境のmustな前提/構成については省略します。
 スマフォのアプリを作りたい(2)~(4)辺りには書いてあります。
-最初のターゲットとしてはAndroidスマフォとうことにしています。
-動作環境は、AndroidStudioのAVD(エミュレータ)を現状は使用しています。
 (未だ実機での動作を一切確認したことがありません。)
Build、Load&Goは、「react-native run-android」コマンドで行っています。
-デバッガは、Chromeのデベロッパーツールです。
-コードの編集は、sakuraを使っちゃってます。つまり、AndroidStudioは使ってません。
 (使い方を現時点で知りません。)
-パッケージ(Javaコード)に手を入れてしまった場合は、デバッガは使ってなくて、
 logcatのメッセージログを使ってます。
-これらの開発・動作環境を全てタブレットPC(+SSD増設HDD)に突っ込んでます。
-OSはWindows10です。
-外部との接続は、主にポケットWifiです。

かなり、素朴なやり方ですかね。
そもそも、タブレットPCなので、そんなにパワーはなくて、サクサクというわけには行きません。
「react-native run-android」がかなりか確率で失敗するので、効率は良くありません。
また、Chromeでのデバッグもとっても重い印象です。
でも、「持って歩ける開発環境」です。

では、本題に入りましょう。


◆音声ファイルの再生には何を使う?
ちょっと前に、「録音」に関しては「react-native-audio」を使いかけました。
これで、「再生」もできるのかと思いきや・・・録音だけの機能なんだそうです。
再生」は、「react-native-sound」を使うのが、どうも定番っぽい?

でも、.m4aは再生できるんでしょうか?
ちょっとぐぐってみました。
参考:http://www.npmjs.com/package/react-native-sound
本家?Ver.1.11.0では、アルファ版だからバグがあるかもしれないよと書いてます。
また、ストリーミング再生はサポートしてないとある。
.m4aが扱えるのかは、上記URLのページ内には書かれていない。
んーー。

一方、以下のサイトには「.m4a」の単語が含まれていました。
参考:https://reactnativeexample.com/play-or-stream-audio-files-in-reactnative-on-ios-android/
タイトルからしてファイル再生とストリーミングもできるっぽい。
パッケージ名はちょっと長くなって」「react-native-sound-player」だそうです。
.m4aがサポートされているかどうかは、Android本家のサイトにリンクがされてあって、
参考:https://developer.android.com/guide/topics/media/media-formats
サポートされてるっぽいぞ。

ちなみに「AVPlayer(iOS)」と書かれている方(リンク先がなぜかstackoverflowのページ)では・・・
iOSのバージョン次第ってことなんでしょうか。10.9.1で問い合わせたときのリストには「public.mpeg-4-audio」がある。
まあ、そっちはまた後で考えるということで。

さるがこの手のページに慣れて来たせいもあって、説明も割と分かりやすいという第一印象。
なので、react-native-sound-playerを使ってみます。


◆追加インストール
参考:https://reactnativeexample.com/play-or-stream-audio-files-in-reactnative-on-ios-android/
に従ってインストールしてみます。

いつもの通りプロジェクトフォルダにカレントを移動して「npm install ・・・」と
いつもと違う「react-native link ・・・」を実行します。(でも、実は実行しなくてよかった。
----コマンドプロンプト-----------------------------
:
D:\AppMake\proj\VTChat>npm install react-native-sound-player --save
npm WARN @typescript-eslint/eslint-plugin@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN @typescript-eslint/parser@1.13.0 requires a peer of eslint@^5.0.0 but none is installed. You must install peer dependencies yourself.


+ react-native-sound-player@0.10.4
added 1 package from 1 contributor and audited 957490 packages in 64.888s


D:\AppMake\proj\VTChat>react-native link react-native-sound-player
info Linking "react-native-sound-player" iOS dependency
info iOS module "react-native-sound-player" has been successfully linked
info Linking "react-native-sound-player" Android dependency
info Android module "react-native-sound-player" has been successfully linked
---------------------------------------------------

何事もなく成功したようです。

ですが、「react-native run-android」したときに以下のエラーが出ました。
----コマンドプロンプト-----------------------------
D:\AppMake\proj\VTChat>react-native run-android
error React Native CLI uses autolinking for native dependencies, but the following modules are linked manually:
- react-native-fs (to unlink run: "react-native unlink react-native-fs")
- react-native-sound-player (to unlink run: "react-native unlink react-native-sound-player")
This is likely happening when upgrading React Native from below 0.60 to 0.60 or above. Going forward, you can unlink this dependency via "react-native unlink " and it will be included in your app automatically. If a library isn't compatible with autolinking, disregard this message and notify the library maintainers.
---------------------------------------------------

もし、さると同じように、サイトの説明を斜めに読んで「react-native link ・・・」を実行してしまった場合は、「react-native unlink ・・・」を実行するとエラーは消えます。

さるにとって「link」というパラメタ指定は鬼門のようです。

あと、本題には関係ないですが、録音音声のファイルリストを表示するために「react-native-fs」をインストールします。
手順としては、「npm install react-native-fs --save」を実行するだけです。
※本家のサイト等に「react-native link react-native-fs」を実行するように書いてありますが、さるの環境では必要ないらしい。また、本家サイトのUsageには、settings.gradle等に何か修正を加えるような記述が書かれているけど、DocumentDirectory以外をアクセスする場合に必要な設定なのかな? 幸いにして今回扱う録音ファイルはDocumentDirectory下なので必要ないはず。


それでは、実装に入ります・・・

続きを読む



嬉し恥ずかしお百姓Season2(3):ふくたち祭り

   園芸 [2020/04/15]
昨年の夏~秋口にかけて、新たに畑に戻したスペースに植えたハクサイ

昨年中は、ハクサイの玉にならず、雪のシーズンに突入。
収穫はあきらめて、春の董立ち(花が咲くときに茎がニョキっと伸びる現象)に期待を掛けたヤツです。

雪が消えかかった辺りから見張ってました。

3月の下旬、雪が日陰にまだ残っているころ、見に行ったら、こんな感じでした。
20200328_f1.jpg

冬の間に、全て朽ち果ててるかと思いきや、それなりに元気そうでした。
20200328_f2.jpg
なにしろ、シシガミ様うさちゃんたちの楽園なので、雪解けと同時に「食われちまうだろう」と思ってたのですが、それ程の被害もなく。(食った跡はありましたよ。)

そこからさらに1週間。
20200405_f1.jpg
花芽が出始めました。
と言うか、もう採っても大丈夫なくらいでした。

さるの棲む地域では、これをふくたちと言って、春野菜として食します。
20200405_f2.jpg
実家界隈の特産品として、絶賛売り出し中です。
馴染みはないかと思いますが、本当です。

この時は、スーパーの袋に満杯になるくらい収穫しました。
さらに、先週末。

続きを読む



嬉し恥ずかしお百姓Season2(2):水汲み場を整備

   園芸 [2020/04/14]
例年、雪が消えると、栗林や畑の柿の木の周辺の片付けをします。
冬の間に雪の重みで折れて散乱した木の枝、倒木などをできるだけ集めて置きます。

ほぼ、荒らしてあるのに何故やっているかと言うと、夏の間の草刈りのときに、
草刈り機が木の枝を食っちゃったり、刺さったりして、危ない&邪魔になるからです。

栗林は、こんな感じ。
20200412_z1.jpg

カタクリの花が咲き始める前に済まそうと思ってたのですが、
ブルーベリーの地植えを優先させたので、結局咲き始めちゃってました。

上の写真の場所に結構な数でカタクリが咲きます。
写真はだいぶ前のものですが、こんな感じです。
090412_1_2.jpg

柿畑の方もあらかた終わって、残り
この冬に倒れた大きなタラの木の解体をしているときに、
割としっかりした木だった(脆くない)ので・・・いいことを思いつきました。

続きを読む



嬉し恥ずかしお百姓Season2(1):ブルーベリーを地植え

   園芸 [2020/04/13]
冬のあいだ、例年には考えられない程、雪が降らなかった。
実家内陸部の積雪は、ホンの一時期1mくらいはあったかと思うが、普段の半分。
お陰で、例年だと3回~4回の雪下ろしするのが、今回は1回しかしないで済んだ。

ともかく、いつもより雪解けが1か月くらい早い。

畑の雪も早めに無くなったので・・・
自宅裏に鉢植え/ポットで育ててたブルーベリーの苗を畑に移すことにした。

YouTube先生が、春先に地植えするのだと言ってたから。

でも、先生が地植えした苗よりだいぶ小さい。
挿し木して、2年近く経ってるけど、まだ早いのかな。
それでも、ポットのままだと、始終水やりを気にしないといけないので、とっとと巣立ってもらおうと。

1日目
ピートモスという土をホームセンターで買いました。
20L入りをとりあえず10個。行ったホームセンターでは数量が足らず、このときはこれだけ。
約5000円。

実家畑の荒らしたままの部分に、φ50cm×d60cm穴を34個掘りました。
20200328_3.jpg

これでこの日は終了。

続きを読む



育てたら食べよー(5):備蓄食料の消費

   園芸 [2020/04/12]
雪が消えたので、農作業の話を書こうと思ったら、
ちょいちょい、撮り貯めてた写真が出てきたのでそっちを先に。

昨年秋にセコセコ保存加工したものを冬の間、食べてました。
その写真が何枚かあるので、載せます。

◆栗の甘露煮
あまり、美味しくないと評判の栗の甘露煮です。
瓶詰めにして冷蔵庫に入ってます。
20191023_r4.jpg

お酒(ブランデーの水割り)のおつまみにしました。
20191116_k1.jpg
確かに、美味そうに見えないね。
3個に1個くらいホクホクな感じのがあるけど・・・

残り2瓶あります。
1瓶は、冷凍してます。
もう1瓶は、「育てた白カボチャと一緒に煮てやろう」と思ってたのですが・・・
春になっちゃいました。
去年のカボチャはまだ家に転がってます。
いつ、やろうかなー。


◆唐辛子味噌
赤くならなかった鷹の爪を唐辛子味噌にしました。
20191123_t5.jpg

辛すぎる!」とこれまたと不評。

したがって、これもさるのみ消費。
でも、割と美味いのよ
殆ど、朝に自分の朝ご飯のおかず。
A)そのまま、ご飯に載せる。
B)多めに載せて、お茶漬けにする。
C)納豆に入れて混ぜて。
20191216_k21.jpg

たいていの場合、眠気が覚めます。
辛いのはそんなに得意ではないので、朝から汗ばみます。

あと、焼き鳥(塩)を買ってきたときに、付けて食べてみました。
20191129_k1.jpg
グーです。


◆干し柿
去年より、取り入れるまでの期間が長くなりました。
単に、さぼってただけです。
20200125_k1.jpg

今年も、親戚筋に、60個くらいは送ったかな。
20200125_k3.jpg

お世辞でも、「甘かったよ。買うとけっこうするのよねー。」と言っていただけると嬉しいです。

これまた、家人は一切食べません。
残り、90個くらいありますが、全て冷凍庫行きになったようです。

さるたまーに、小腹がすいたときに2~3個食べるくらい。
去年の干し柿もアイスと一緒にあったりして。

最後に、またもや鷹の爪なのですが、昨日やっと処理しました・・・

続きを読む



スマフォのアプリを作りたい(21):メニュー作成の一例

   プログラミング [2020/04/08]
チャットと音声認識を組み合わせたくて、React Nativeでチャット(react-native-gifted-chat)と音声認識(react-native-google-speech-api)を試しました。
そろそろ組み合わせたものを作ろうかとも思ったのですが、その前に録音した音声を再生するところをやって見ようと思います。
さらにその前に、現状のApp.jsをちょっと変更したくなりました。

というのも、現状のソースは、
App.jsの下にChat.js(チャット制御)とSpeech.js(Google Speech to Text音声認識と録音制御)の2つのコンポーネントがぶら下がっている構成です。

----JSX:App.js-------------------------------------
:
import React, { Component } from 'react';
//import { SafeAreaView, View, Text, } from 'react-native';
import { Router, Scene, } from 'react-native-router-flux';

import Chat from './Chat';
import Speech from './Speech';

export default class App extends Component<{}> {
render() {
return (
<Router>
<Scene key='root'>
<Scene key='Text' component={Speech} title="Speech:Google音声認識" />
<Scene key='Chat' component={Chat} title="VTChat:チャットサンプル" />
</Scene>
</Router>
);
}
}
---------------------------------------------------

App.js内でreact-native-router-fluxを使って<Router><Scene key=’root><Scene ・・・/><Scene ・・・/></Scene>と2つ並べています。
2つの<Scene ・・・/>の切り替え方を知らないので、今のところ1番目の<Scene ・・・/>が動作を開始した後、切り替えは多分できないようになってます。

せっかくなので、音声認識(&録音)、新規:音声再生、チャットをそれぞれ切り替え可能にしたいと、ちょっと調べました。


◆<Tabs>を使って複数の機能をメニュー化する

「react-native-router-flux 切り替え」でぐぐって見ると、以下のサイトが引っ掛かりました。
参考:https://rara-world.com/react-native-tab-routing/
サンプルが載ってます。
しばらく、React Native JSXのコードから遠ざかっていたので、なんかサンプルコードに違和感が・・・

ともかく、react-native-router-fluxの<Tabs>というコンポーネントがあって、それを使って並べるようです。
結果の絵でもあれば、ちょっとイメージできていいんだろうけど、載ってません。

やってみた方が早いですね。

では、まずはコードです。
こんな風にしました。
----JSX:App.js-------------------------------------
/**
* Sample React Native App => Chat Sample
* https://github.com/facebook/react-native
*
* @format
* @flow
*/

import React, { Component } from 'react';
import { SafeAreaView, View, Text, StyleSheet } from 'react-native';
import { Router, Scene, Tabs } from 'react-native-router-flux';
import Icon from 'react-native-vector-icons/MaterialIcons';

import Chat from './Chat';
import Speech from './Speech';

const TabBarIcon = (props) => {
return (
<View style={styles.tabIconContainerStyle}>
<Icon
name={props.iconName}
color={props.focused ? 'blue' : 'grey'}
style={styles.tabIconStyle}
/>
</View>
);
}


export default class App extends Component<{}> {
render() {
return (
<Router>
<Tabs key='root' swipeEnabled={true} animationEnabled={true}>
<Scene key='Text'
component={Speech}
title="Speech:音声認識&録音"
iconName='mic'
iconColor='red'
icon={TabBarIcon}
initial
/>
<Scene key='Chat'
component={Chat}
title="Chat:チャット"
iconName='chat'
iconColor='red'
icon={TabBarIcon}
/>
</Tabs>

</Router>
);
}
}

const styles = StyleSheet.create({
tabIconContainerStyle: {
justifyContent: 'center',
alignems: 'center',
},
tabIconStyle: {
width: 24,
height: 24,
fontSize: 24,
},
});

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

どんなiconを使うのかは、「iconName」パラメタで指定しているようです。

「import Icon from 'react-native-vector-icons/MaterialIcons';」というのも初めて見るの書き方。
参考:https://qiita.com/kana-t/items/3cad4fae393b6a5fc8a0

react-native-vendor-iconsをインストールした後で分かったのですが、
react-native-vector-iconsに含まれる、アイコンのセット(.json)をimportしていることになるみたいです。

「(プロジェクトフォルダ)\node-modules\react-native-vector-icons\dist\glyphmaps」の下にMaterialIcons.jsonがあって、
中身を見ると、アイコン名らしき名前と番号がダーっと書かれてました。
その中から、「mic」と「chat」を選びました。

react-native-vendor-iconsのインストールは、いつもの通り、プロジェクトフォルダをカレントにして
npm install react-native-vector-icons --save
を実行しましす。

それで、「react-native run-android」を実行します。
すると、以下のような画面が出ました。
20200407_1.jpg

画面下部分に表示されているのがTabバーで、2つのメニューが表示されています。
起動時は、「音声認識&録音」側の機能が有効です。
各メニューをタップするとそれぞれの画面への切り替えが可能です。

ただし、アイコンは□に×のマークで、うまくアイコンが取り込めてないようです。

「rnpm link ・・・」もやれと書いてあるサイトがあった。
(↑注:iOS対応の場合であってrnpmです。npmではない。)
でも、「npm link ・・・」とやって、その後正常だったことは一度もない。
ちょっと躊躇してたのですが、やってみました。
(↓注:やってはいけません。)
npm link react-native-vector-icons

で結果は・・・

続きを読む



スマフォのアプリを作りたい(20):音声認識と同時に録音③

   プログラミング [2020/04/06]
前回の続きです。

録音込みの音声認識を作りました。
でも、なんだか録音処理を追加する前より認識率が悪くなったような気がします。
もぞもぞ話しても、ほとんど文字にしてくれません。
調子のいいときは、いいんだけど・・・。

録音してみて分かったのですが、PCのマイク入力を経由してAndroidエミュレータに渡ってくる音声の音質なんだかよくない。
ザラザラした感じの音で、プツプツした雑音も混ざってます。
それはそれで仕方ないことかもしれないけど、何とかならんのかな?

試しにサンプルレートを上げてみることにしました。

前回の記事に改造react-natove-google-speech-apiのAndroid向け修正ソースをまるっと乗せたので、コードの全容は前回記事をご参照ください。


◆サンプルレートを変えて見る
ベースの音声入力クラス(VoiceRecoder.java)でどうやってサンプルレートを決めているか見てみました。
以下のような配列が定義されています。
private static final int[] SAMPLE_RATE_CANDIDATES = new int[]{16000, 11025, 22050, 44100};
それで、初期化時に以下のような処理関数を動かしています。
----VoiceRecoder.java------------------------------

private AudioRecord createAudioRecord() {
for (int sampleRate : SAMPLE_RATE_CANDIDATES) {
final int sizeInBytes = AudioRecord.getMinBufferSize(
sampleRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT
);
if (sizeInBytes == AudioRecord.ERROR_BAD_VALUE) {
//Log.d(TAG, "invalid samplrate="+sampleRate);
continue;
}
//Log.d(TAG, "valid samplrate="+sampleRate);
final AudioRecord audioRecord = new AudioRecord(
MediaRecorder.AudioSource.MIC,
sampleRate,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT,
sizeInBytes
);
if (audioRecord.getState() == AudioRecord.STATE_INITIALIZED) {
buffer = new byte[sizeInBytes];
return audioRecord;
} else {
audioRecord.release();
}
}
return null;
}

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

つまり、SAMPLE_RATE_CANDIDATES配列にセットされているサンプルレート毎にAudioRecordクラスをnewしてみて、そのステートが正常であればループを抜けています。
サンプリングレートの値は低目の値から並んでいるので、一番最初の16000でステートがOKならば、その値で確定してしまいます。
なんで、16000が先頭なんだ?
サンプルレートって高い方が「いい音」なのでは?
と思ったので、配列の順番を高い数値順に変えてみました。
private static final int[] SAMPLE_RATE_CANDIDATES = new int[]{44100, 22050, 16000, 11025};

結果から言うと、44100が選択されるけど認識率は変わりませんでした。

サンプルレートは、「音質」というものに直結するわけではない?

Google Cloudの説明に解説がありました。
参考:https://cloud.google.com/speech-to-text/docs/enccoding?hl=ja

高くすると「周波数の高い音を再現できるようになる」ということだそうで。
人間の耳で聞こえる周波数~20,000Hzを再現するのに必要なのが40000Hz以上(44100Hz)なのだそうだ。
さらに、その下の「非圧縮音声」のところを見ると、人の声として拾うなら16000Hzが適していると書いてます。

だからSAMPLE_RATE_CANDIDATES配列の先頭に16000があったのね。
よって、配列の初期化値の変更は不採用です。


◆見つけた不具合
上記の変更を試している最中に不具合を一つ見つけました。

音声入力時のサンプルレートを録音クラス(VoiceEncoder.java)に渡す処理(start()メソッド)のコール位置がよろしくありませんでした。
GoogleSpeechApiModuleクラスのstart()メソッド中にあったのですが、onServiceConnected()コールバックのVoiceRecorderクラスのstart()メソッドのコール後に移動しました。修正版のコード(GoogleSpeechApiModule.java)を全部載せます。

気になる方は、続きをご覧ください。

続きを読む



カレンダー
05 | 2020/06 | 07
- 1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 - - - -
プロフィール

さるもすなる

Author:さるもすなる
さるです。別HPサイト「さるもすなる」から侵食してきました。 山菜/きのこ、それとタイトルにしたPPバンド籠のことをメインに徒然に・・・・暇を持て余したさるの手仕事:男手芸のブログってことで。

最新記事
最新コメント
月別アーカイブ
カテゴリ
天気予報

-天気予報コム- -FC2-








本家のHPのトップ
山菜や茸の話です
PPバンドの籠作品と作り方です
投稿をお待ちしております



ブログランキング・にほんブログ村へ にほんブログ村 ハンドメイドブログへ



マニュアルのお申し込み



検索フォーム
リンク
RSSリンクの表示
ブロとも申請フォーム

この人とブロともになる

QRコード
QR