2018年5月3日木曜日

googleアシスタントSDKの応答をテキストで取得する

2017/12/20のアップデートでテキスト入出力によるgoogleアシスタントとのコミュニケーションがサポートされました。
サンプルのtextinput.pyにて試すことができますが、pushtotalk.pyでは音声による入出力のみで、テキストでの応答結果を出力しません。

しかし数行追記するだけでテキストが得られることが判明しました。
Get assistant response. · Issue #168 · googlesamples/assistant-sdk-python · GitHub
https://github.com/googlesamples/assistant-sdk-python/issues/168

前提条件としてgoogleアシスタントSDKを実行できる環境が必要です。
Introduction to the Google Assistant Library
https://developers.google.com/assistant/sdk/guides/library/python/

pythonサンプルはこちらのリポジトリからダウンロードします。
GitHub - googlesamples/assistant-sdk-python
https://github.com/googlesamples/assistant-sdk-python

pushtotalk.pyの134行目に
            if resp.dialog_state_out.supplemental_display_text:
                display_text = resp.dialog_state_out.supplemental_display_text
                logging.info(display_text)
を追記。



実行するとこんな感じ。(引数の--lang ja-JPで日本語になります)
 

2018年2月13日火曜日

VOICEROID+を仮想マシンで動かしてみる

仮想マシン上ではVOICEROID動かないらしいということを聞いたので、検証してみました。

用意した仮想マシンは以下3つ。

・Hyper-V
・VirtualBox 5.2.6 r120293
・ VMware Workstation 14 Player 14.1.1 build-7528167

 それぞれの仮想マシンで動かすwindows10イメージは以下の通り。

①Windows10 dev environment(バージョン10.0.16299)
Hyper-Vテンプレートイメージです。
言語が英語のため、日本語を追加しています。

②Windows 10 Enterprise | Microsoft Evaluation Center
ダウンロードURL:https://www.microsoft.com/en-us/evalcenter/evaluate-windows-10-enterprise
イメージファイル名:16299.15.170928-1534.rs3_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_ja-jp.iso
90日間限定で使用できる評価用windows10 Enterpriseです。このisoイメージから各マシンにwindows10をインストールします。 言語は日本語を選択しています。


③Free Virtual Machines from IE8 to MS Edge - Microsoft Edge Development
ダウンロードURL:https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/
イメージファイル名:MSEdge on Win10(x64) Stable(16.16299)
こちらも評価用のwindows10です。違いはVirtualBoxとVMwareそれぞれに仮想マシンのイメージを提供している点です。
言語が英語のため、セットアップ後日本語を追加しています。

Hyper-V

①のイメージ
起動直後に"ライセンス認証に失敗しました。原因不明のエラーが発生しました”と表示され起動できず。Sentinel HASP/LDK Windows GUI Run-time Installerをインストールしても変わらず。
②のイメージ
通常セッション時のみ起動可能。ただし音声出力ができないため起動時に警告が出るが、音声保存自体は可能。
拡張セッション使用中およびリモートデスクトップ接続中は起動できないが、通常セッションにて起動後、拡張セッションに変更もしくはリモートデスクトップ接続し、音声出力設定をリモートオーディオに設定しなおすことで音声も再生できる。
ライセンス認証も通る(琴葉葵にて確認)

VirtualBox

③のイメージ
Hyper-Vの①のイメージと同様。起動できず。ちなみに言語が英語のみの場合、日本語以外では利用できないとのエラーメッセージが出る。


②のイメージ
ライセンス認証OK (琴葉葵にて確認)
仮想マシン設定のオーディオコントローラーをIntel HDオーディオにしないと仮想マシン上のwindow10からオーディオデバイスが認識されない。
ノイズ混じりで音声が再生されるが、VirtualBox側の問題と思われる。

VMware Workstation

③のイメージ
Hyper-Vの①のイメージと同様。起動できず。

②のイメージ
ライセンス認証OK (結月ゆかりEXにて確認)

結論

②のisoからwindowsをインストールした場合に限りどの仮想マシンでもVOICEROIDは動作した。
①③はともに英語版windows10で、②は日本語版なので日本語版Windows10でないと動作しないと思われる。
仮想マシンを別PC上で動作させた場合のライセンスがどうなるか気になるところ。

2018年2月12日月曜日

VOICEROID+結月ゆかりEXのアクティベーション可能回数のリセットを依頼した

 VOICEROID+結月ゆかりEXをPC更新後にインストールしてアクティベーションしたら、
”アクティベーションに失敗しました。現在のアクティベーションキーでは、これ以上アクティベートできません。”
ということでアクティベーションできませんでした。 
VOICEROID+ ユーザーマニュアルを見てみると、
ユーザマニュアル82ページより
 ということなのでリセット依頼をしてみました。
 アクティベーションキーとサポート番号が必要なので用意しておきましょう。

1.AHSホームページよりマイページにログイン
2.登録済みの該当製品から”この製品に関するお問い合せ”をクリック

3.アクティベーション可能回数のリセットを依頼。このときにアクティベーションキーと製品名も書いておきましょう。

1営業日後にリセットしたとのメールを頂き、晴れてアクティベーションできました。
旧環境を放棄するにあたってアンインストール行っていたのですが、どうもディアクティベート処理はない様子。ううむ。

2017年12月28日木曜日

思いつきで買ったサーマルプリンタが結構使えた

先日行われた『ゆかり公式生放送を見る忘年会』にてこんなレシートを作ってみました。



割烹着ゆかりさんのお店...割烹ゆかり。そのままですね。
会場が和室だったので「それならやるしかないやん!」って思いつきでサーマルプリンタを買って使ってみたところ案外使えました。
買ったのはコレ↓
Aibecy POS-5805DD USBサーマルプリンタ

USB接続だけで良いならもう少し安いものがありますが、Bluetoothに対応していたこととバッテリ内蔵、あと見た目がこっちのほうが良いという点で選びました。
型番で調べてみると一応日本語も印刷できるっぽい、程度の認識で購入したので思い通りに印刷できるようになるまで苦労するorダメかもと思っていました。
ところがWindows用ドライバを使ってみるとInkscapeから直接印刷できて拍子抜けしてしまう程簡単でした。導入まで一癖あるのでメモを残しておきます。

USB接続の場合、サーマルプリンタの電源をONにして、PCに接続。デバイスマネージャーに"プリンターが接続されていません"と表示されることを確認します。

Bluetooth接続の場合、プリンタの電源を投入。まずはペアリングを行います。
BluetoothPrinterを選択。PINは1234


Bluetooth設定を開いて方向が発信のCOMポート番号を確認。この場合COM5。
amazon商品ページ説明欄からドライバをダウンロードして実行。
Portsに確認したCOMポート番号を選択して、OSはWindows10、Select PrinterはPOS-58を選択してBegin Setupをクリック。


そしてCOM(232C)接続...
電圧を確認したところTTLレベルではなく、±5.4Vが出ているので232Cレベル変換が必要です。
そしてピンアサインは下記の通り。マニュアルに載っておらず、調査したものです。
1:GND
2:TXD(プリンタからの出力)
3:RXD(プリンタへの入力)
4:???

1番にGNDがあることによって、USBとCOM両方を同じPCのUSBポートに接続すると+5VとGNDがショートするという恐ろしい仕様になっております。

通信仕様はボーレート115200bps,データ8bit,ストップ1bit,パリティなし
FRDM-K64Fボードと232Cレベル変換ICを介して接続してみたところうまく動きました。

使わせて頂いたソースはこれ。
https://os.mbed.com/users/aross34/code/Thermal_HelloWorld/

AdafruitThermal.cppの29行目のボーレートを115200に変更して動作しました。
ただし一部のコマンドが動いていないようで、真ん中あたりのLarge,Midium,smallはそれぞれ文字の大きさが変わるようですが、変わっていません。

Android端末からBluetoothで印刷する場合、ペアリングを行うところまでは普通のbluetoothデバイスと同じです。印刷はサーマルプリンタ用アプリを使用します。
画像を印刷するだけであれば iPrint が簡単かつ綺麗に印刷できました。


2017年12月27日水曜日

ルータをRT-AC68Uに更新してDDNS更新させるようにした

先日のamazonサイバーマンデーでASUSのルータ『RT-AC68U』がちょっとお安くなっていたのでポチっちゃいました。今まで使ってたNECのAtermWG1800HPが時々再起動しないといけなかったりしたので替え時でした。

11ac対応してりゃいいや、レビュー悪くなさそうだし、2系統WAN使えるユニークな機能もあるやんくらいの認識で、買ってから気づいたのですがこのルータ、SSHで中のLinux触れるようになってました。
それなら今までバッファローのNAS『LS410DX』のLinuxでやっていたDDNS更新をやらせたろ!ということでやってみました。アップデートあるたびにHDD抜いて中のLinuxに潜れるようにってやるの面倒だしね。
ASUSが提供するDDNS使いたかったけど、振られたIPをDDNS更新に使うが、au光のHGWからルータへはローカルIPが振られるため使えない環境です。
なので外部へグローバルIPを確認しに行き、そのIPでieserver.netのDDNSを更新するようにしました。

SSHを有効にする設定は”管理”のシステムタブから。ポートはLANオンリーでも一応変えておく。(そして時間経つと変えたことを忘れて入れねー!ってなりそう)


接続はいつものTeraTermで。ユーザー名とパスワードは管理画面に入るものと同じ。


こちらのブログ記事によると起動時に①USBマウント時に実行されるスクリプトを作成、設定して、②crontabに直接書き込んで定期的に実行する方法があるらしい。
 How to schedule cron jobs on an ASUS wireless router

ただcrontabへ書き込むところまではできるものの、実行されない...。

なのでUSBマウント時に実行されるスクリプトから直接watchコマンドで定時実行するようにした。
下記2つのシェルスクリプトを作って...

bootinit.sh
#!/bin/sh
/jffs/bootinit/watch.sh &
logger watch.sh_Start

watch.sh
#!/bin/sh
watch -n 1800 -t /jffs/bootinit/ieserver.sh

 USBマウント時のスクリプトに設定。
nvram set script_usbmount=/jffs/bootinit/bootinit.sh
nvram commit

ルータに手頃なUSBメモリつないで再起動。
ログ参照するとマウント後にスクリプトを実行しています。
Dec 27 23:24:54 disk monitor: be idle
Dec 27 14:24:56 usb: USB vfat fs at /dev/sda1 mounted on /tmp/mnt/sda1.
Dec 27 14:24:56 *****: watch.sh_Start
Dec 27 14:24:57 rc_service: hotplug 736:notify_rc restart_nasapps
Dec 27 23:24:57 iTunes: daemon is stoped
Dec 27 23:24:57 FTP Server: daemon is stoped
Dec 27 23:24:58 Samba Server: smb daemon is stoped
Dec 27 23:24:58 kernel: gro disabled
Dec 27 14:24:58 *****: DNS Update done
Dec 27 23:24:58 Timemachine: daemon is stoped
Dec 27 23:24:58 miniupnpd[725]: shutting down MiniUPnPd

2017年8月14日月曜日

サンコーのネック冷却クーラーにヅラ毛が絡まった

コミケ3日目にてコスプレしている友人に貸したらウィッグの毛が冷却ファンに絡まってしまいました。(僕じゃないです)
隙間から毛を抜いてみたものの、回転しなくなっていたため分解しました。

まず冷却面の黒いネジ3箇所を外します。


ファンを固定しているネジ2本外して

 取れました。あちゃー。

 絡まっていた毛を取り除いて電源ON。回りました。交換せずに済んでよかった。

で、戻そうとした矢先に内部の配線が気になりました。
ファンの他に赤線1本、黒線3本あるのです。

内側の冷却面のネジ2本も外してみると、首のアルミ材に温度センサと思わしきものが熱伝導グリスと共に入ってました。
白く厚いペルチェ素子に配線が赤と黒1本ずつ。
恐らく残り1本は放熱側にペルチェ素子があり、冷却側と直列に接続していると思われます。

2017年1月3日火曜日

Pushbullet+自前デバイスでプッシュ通知を受け取る

Pushbulletを使ってプッシュ通知をスマホ等へ送る例は見当たりますが、逆にプッシュ通知を受け取る例がなかったのでやってみました。

-なんでこんなことを?
ホームオートメーションやりたくなりまして、IFTTTやLINE BOTなどといったスマホへプッシュ通知送れるwebサービスを利用して楽しつつ、やりたいことを実現するためには以下3点の要件を満たす必要がありました。ワガママですね。
  1. Android・iOS・PCのマルチプラットフォーム対応
  2. 自前デバイス(Linux鯖など)からプッシュ通知を送れる
  3. 逆にAndroid等からチャットを送れる
で、たどり着いたのがPushbulletだったのです。

websocketでイベント受信→チャットテキストを取得するデモをnode.jsとpushbullet-bashを組み合わせて書いてみました。ラズパイ3上で動作しました。
スクリプトとフォルダ配置はこんな感じで。
~/.config/pushbulletはpushbullet-bashがAPIキーを参照するのでAPIキーを記述すること。

 ~/
├ .config/pushbullet
└ pushbullet/
      ├ pushbullet-bash/
      └ script/
          ├ pushbullet_websock.js
          └ getLastPush.sh


テキスト送るとこんな感じ。