リグの動作確認もできたし、そろそろ撤収します。(Twitterのメンションに反応して動作する)Twitterで部屋の環境をつぶやくbotと,留守番猫カメラができたので,これらを組み合わせて,Twitter経由でカメラの制御ができるようにする。Twitterでbot宛のメンションを監視して,「カメラ」「留守番」等のコマンドを検出したら,特定の動作を行うようにしたい。APIで自動リプライbotをつくるなどを参考にやってみたのだが,どうも動いたり動かなかったりする。APIが廃止になってしまったらしい。代わりにTweepy(pythonのライブラリ)で,api.mentions_timelineを使うことで,自分宛のメンションのタイムラインを取得できる。これをcronで定期的に実行するようにして,自分宛の新しいメンションがあったら,その内容をチェックして,「カメラ」,「留守番」等のキーワードが含まれていたら,所定の動作(留守番カメラの起動,写真撮影など)をするスクリプトを書いた。Tweepyを使ってTwitterのbotを作るcronの実行周期を1分にしているので,botに対して@付きでつぶやいてからレスポンスがあるまで最長1分くらい時間がかかるけれど,瞬時に応答が必要な機能でもないので,特に問題は感じない。それっぽく実装できてきました。赤外線LED買ってエアコンのON/OFF,温度変更とかできたら良いかな。注意点としては,自分宛のメンションのうち,特定のユーザID(自分)からのメンションにだけ反応するようにしておくこと。しないと知らない人が留守番猫カメラのON/OFFを制御できたりしてしまう。(欧文/和文モールス音源生成スクリプト)留守番猫カメラからの続き。ラズパイを何か無線関係に使うことはできないだろうか。D-starのノード局にして使う,というのは聞いたことがあるけれど,D-starが使えるリグもないし,そもそもphoneはあまり興味がない。CW関係の何か...といってもすぐ思いつくエレキー/メモリキーヤーなんかはありきたりだし,すでに電池駆動で使えるメモリキーヤーを持っているので,別に必要性もない。そこで,ちょうど和文や欧文の聞き取り練習をしているところでもあるので,日本語の普通文をCWの音声ファイルに変換するスクリプトはどうだろう。Breakerというすばらしいフリーソフトがあるけれど、確か日本語の平文(漢字仮名交じり文)を直接変換することはできなかったのでは。いうような思考を経て、次のような仕様を考えた。CWの音声ファイルを生成1はまあ含まれている文字から簡単に判別できそう。3も文字に対応した符号を生成して、sin波の入切で音声データを作るのはなんとかなりそう。やっかいなのは2で、漢字仮名交じり文の読み仮名を解析してカナに変換する方法を考えなくてはいけない。自力でそんなコードを書くのはほとんど無理だけど、世の中には親切な人がいるもので、MeCabというオープンソースの形態素解析エンジンがある。これは日本語の文章を単語に区切り、品詞を同定する処理をしてくれるもので、そのついでに読み仮名も出してくれる。これを使って1、2、3それぞれの機能ごとに少しずつコードを書いていった。2018年8月13日この辺からPythonの日本語処理でハマることが多くなる。strとunicodeと文字コードがごちゃごちゃになってよくわからない。出てくるエラーを見ながらググってはエラーを出し,print文を仕込んでordやtypeやencode文を使って確認しつつ,辻褄を合わせるデバッグ作業が続いた。モールス符号"11011")は以下のサイトを参考にした。欧文は普通にASCIIコードで変換できる(ord("A")=65)んだけど,半角カナはord("ア")=177とはならず,ord("ア")=65393(FF71)で,これはUTF-8コード。この辺も最初はよくわからずハマった。モールス符号練習機MeCabの読み変換はもちろん完璧ではなく,「大喜び」を「だいよろこび」と変換するなど,細かいミスはあるものの,一般的な文章なら相当精度良く変換できる。これは本当に素晴らしいなぁ。゙」にする)必要があり,このために全角カナを半角カナにさらに変換。半角カナには濁点・半濁点付きの文字がないので,強制的に分離される。形態素解析がひらがなの一般名詞だと読み仮名を取得できないんだろうか...。jaconvと組み合わせたらどうにかできました。半角カナに変換するのは濁点を分離するためです。2018年8月13日sin波をつなげて音声を作っていくのは,以下のサイトを参考にした。信号ありをレベル1,無音部分を0として,ドットを基準の長さにして,ダッシュは3倍の長さ,というようにつなげていく。sin波の音をWAV形式で出力するサンプリング周波数は最初サンプルと同じくCD音質の44100Hzとしていたけれど,これだと2分を超えるような符号列だと変換途中にメモリーエラーで落ちてしまうことが判明。考えたらCWのトーン周波数は700Hzなので,標本化定理に従えば1400Hzで充分再現できるはず。一応さらに倍の2800Hzとした。これで15分以上の長い文章でも一気に変換できるようになったと思う。おかしいところはあると思うけれど,現状のコードを載せておく。いろいろなライブラリを読み込んでいるので,importに書かれているライブラリを事前にインストールしておく必要がある。速度は変数[sec]に短点の秒数で指定。現状だと総通試験の和文の速度(1分間75字程度)になっていると思う。総通の試験で出ないと思われる符号はバッサリ削除している。Breakerなりに読み込ませて使うのも良いと思う。引数に変換元のテキストファイルを入れておく。txt2cw.py※「動きません」とか質問されても,当方もラズパイ,Pythonビギナーなのでお答えできない可能性が高いです。アドバイスは歓迎いたします。pass出力されたmp3をffmpegで動画にしたもの。原文はももたろうの前半部分。>>検索ボックスソウヘイが書いています。かんな氏(Kinoppy氏)は奥様です。移動運用カテゴリ日記(12)猫(19)写真(10)読書(199)アマチュア無線(110)映画(26)パソコン・インターネット(38)音楽(14)車(55)過去ログ2020年01月(7)2019年12月(10)2019年11月(7)2019年10月(8)2019年09月(5)2019年08月(8)2019年07月(4)2019年06月(4)2019年05月(6)2019年04月(6)2019年03月(6)2019年02月(8)2019年01月(10)2018年12月(11)2018年11月(5)2018年10月(5)2018年09月(9)2018年08月(7)2018年07月(3)2018年06月(4)2018年05月(6)2018年04月(7)2018年03月(4)2018年02月(5)2018年01月(9)2017年12月(10)2017年11月(8)2017年10月(8)2017年09月(4)2017年08月(4)2017年07月(6)2017年06月(11)2017年05月(5)2017年04月(4)2017年03月(4)2017年02月(3)2017年01月(4)2016年12月(7)2016年11月(4)2016年10月(3)2013年7月以前の記事は写真ってblogにあります。