Raspberry Pi 3 ver.2で Google Assistant SDK を試してみる(日本語で)。その2
前回以下の記事のとおり、
sgunji.hatenablog.jp
{ "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } }
で止まってしまっていたのですが、
色々周りに聞きながら試行錯誤(ほとんど自分は何もしていない)していたら、
googlesamples-assistant-hotword --project_id my-dev-project --device_model_id my-model
ではなく、
googlesamples-assistant-hotword --device_model_id my-model
とすることで無事認識してくれました。
このままだとhotwordは日本語に対応していないので、
Googleアシスタントから直接設定してやる必要があります。
Googleアシスタントを開き設定を押します。
アシスタントの言語を選択し、日本語にします。
住所とかも登録しておくと、天気とかを現在地で調べてくれます!
動いて良かった!
Excelのシート保護やブック保護のパスワードを忘れた場合の対処方法
シート保護やブック保護したあとにパスワードを忘れてしまったことはありませんか。
Office 2007以降ですが,パスワードを無理矢理解除する方法があります。
Office 2007以降でExcelやWordではOffice Open XMLというものが採用されています。
詳しくは以下から
Office Open XML - Wikipedia
拡張子が.xlsxという最後にxやmがついたものはこの形式ファイルになります。
もともとがzipファイルなので,拡張子をzipに変更すればある程度見れるようになります。
まず,拡張子を変更します。
後ろに.zipを付けます。
当方の環境はWindows 7ですので,
このままダブルクリックしてzipファイルの中を覗きます。
シートの保護を解除したいシート名.xmlを右クリックしてコピーして
適当な別のフォルダに貼り付けします。
そのファイルをメモ帳か何かで開いて
<sheetProtection ・・・・・/>
の部分を削除します。
↓削除
このxmlを上書きしてエディタを閉じます。
あとは逆手順で,出来上がったxmlファイルをコピーして
貼り付けします。(上書きするかどうかの警告メッセージが出ますが無視してOK)
あとは,後ろの.zipを消して
元に戻すだけ。
ブック保護を解除する場合は,
のworkbook.xmlをどこか適当なとこにコピーして
エディタで開き,
<workbookProtection ・・・・・/>
を消せばOKです。
ただ,上記方法は間違うとファイルが開けなくなる恐れがありますので,自己責任でお願いしたいのと,言うまでもありませんがバックアップは必ず取りましょう!
Raspberry Pi 3 ver.2で Google Assistant SDK を試してみる(日本語で)。
12月20日 Google Assistant SDKのブログで日本語に対応したと情報があったことから試してみることに。
基本的には以下の通り。
Set Up Hardware and Network Access | Google Assistant SDK | Google Developers
自分は以下から落としてきたRASPBIANを使っています。
www.raspberrypi.org
imgファイルをSDに書き込むには
https://sourceforge.net/projects/win32diskimager/sourceforge.net
を使ってます。
こんなかんじで、Writeを選択してもらえれば、警告文がでますので、YESを選択します。
イメージをSDに書き込んでいる間にGoogle側の設定を行います。
cloud.google.com
右上のログインを選択します。
ログインをしたら、その隣のコンソールを選択します。
上の検索窓にassistantと入力すれば、Google Assistant APIでてきます。
順番に進みます。
プロジェクト未作成のまま有効と押すと、プロジェクトを作るよう促されます。
適当にプロジェクト名をつけて作成します。
次に認証情報を作成します。
OAuthという仕組みでGoogleのサービスにログインするので、同意画面を作成しておきます。
認証情報を作成します。OAuthクライアントIDを選択します。
その他を選択して、適当に名前をつけます。
下矢印を選択してjsonファイルをダウンロードしておいてください。
ここまでくるとたぶんSDへの書き込みを終わっているので、ラズパイにさしてラズパイ側を起動します。
日本語入力する場合は、
sudo apt-get install ibus-anthy
または、
sudo apt-get install ibus-mozc
vncを使う方は、
(最近のPi3はRealVNCが最初から入っていたような)
sudo apt-get install tightvncserver
Google Assistant のために Python3をいれます。
SDカードへのイメージ書き込み時にもとのイメージがfullだったらいりません。
sudo apt-get install python3-dev
python -m pip install --upgrade pip setuptools
マイク情報を取得するには、
arecord -l
スピーカー情報を取得するには
aplay -l
設定ファイルを作ります。
[.asoundrc]でディレクトリは/home/pi/に保存します。
pcm.!default { type asym capture.pcm "mic" playback.pcm "speaker" } pcm.mic { type plug slave { pcm "hw:<card number>,<device number>" } } pcm.speaker { type plug slave { pcm "hw:<card number>,<device number>" } }
あんまりいないかもしれませんが、
ラズパイに直接HDMIをつないでいる場合は、
別で用意したスピーカーから出力できるよう設定する必要があります。
sudo raspi-config
Advanced options から Audio を選択して3.5mm ジャックの方を選べればOKだと思います。
ご自身の環境に合わせて設定してください。
Googleのガイドに従ってPython3 が動く仮想環境を構築します。
sudo apt-get update sudo apt-get install python3-dev python3-venv # Use python3.4-venv if the package cannot be found. python3 -m venv env env/bin/python -m pip install --upgrade pip setuptools source env/bin/activate
パッケージをインストールします。
python -m pip install --upgrade google-assistant-library python -m pip install --upgrade google-assistant-sdk[samples]
資格証明書を作成します。
まず作成するためのライブラリを落としてきます。
python -m pip install --upgrade google-auth-oauthlib[tool]
下記のように/path/to/に自分の環境にあったように入力し、ダウンロードしたjsonファイルのファイル名を合わせます。
ちょうど下記のような[client_id]のところに自分が落としてきた部分を書き換えます。
google-oauthlib-tool --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save --headless --client-secrets /path/to/client_secret_client-id.json
画像を忘れましたが、
Please visit this URL to authorize this application:
以降にかかれたURIにアクセスするようにします。
Googleに自分のアカウントでログインして、
4/で始まるコードが表示されるのでそれをコピーして
ターミナルが
Enter the authorization code:
と出ているので、この後ろに貼り付けします。
すると、
credentials saved: /path/to/.config/google-oauthlib-tool/credentials.json
と表示され、資格証明書が作成できました。
あとは、[my-model]の部分を自分の好きな名前に変えて
(GoogleはプロジェクトIDを頭に加えることを推奨しているよう?)
googlesamples-assistant-devicetool register-model --manufacturer "Assistant SDK developer" --product-name "Assistant SDK light" --type LIGHT --model my-model
[my-dev-project]を自分のプロジェクト名に書き換えて、
[my-model]を上で決めたモデル名に書き換えるだけで
googlesamples-assistant-hotword --project_id my-dev-project --device_model_id my-model
できるはずなのですが、
{ "error": { "code": 403, "message": "The request is missing a valid API key.", "status": "PERMISSION_DENIED" } }
と出てしまいました。
パーミッションに問題があるようなので、
一応、アクティビティコントロールを見て確認しましたが、
https://myaccount.google.com/activitycontrols
ウェブとアプリのアクティビティ
端末情報
音声アクティビティ
すべてアクティブにしているのですが、
このエラー・・・。
誰か教えてください・・・。
解決しました!
sgunji.hatenablog.jp
IDE0006エラー
Xamarinを使っていてエラーが出たので備忘録として・・・
〇重大度レベル
警告
〇コード
IDE0006
〇説明
プロジェクトの読み込み中にエラーが発生しました。失敗したプロジェクトとそれに依存するプロジェクトの完全なソリューション解析など、一部のプロジェクト機能が使用できなくなりました。
〇プロジェクト***** ファイル
〇行1
〇抑制状態
アクティブ
〇詳細の説明
この問題の原因を確認するには、次をお試しください。
1. Visual Studio を閉じる
2. Visual Studio 開発者コマンド プロンプトを開く
3. 環境変数 "TraceDesignTime" を true に設定する (set TraceDesignTime=true)
4. .vs directory/.suo ファイルを削除する
5. 環境変数 (devenv) を設定したコマンド プロンプトから VS を再起動する
6. ソリューションを開く
7. 'C:\Users\******\AppData\Local\Temp\\******_*.designtime.log' を確認し、失敗したタスク (FAILED) を探す
Googleマップ マイプレイスの自分以外が所有する地図について
マイプレイスの地図の中で自分以外が所有する地図はマップ側からは消せません。
ただ、自分以外が所有するマップは、ドライブと連携されているようなので、ドライブ側からアプローチしてみたところ、消えました!!
手順としては、
1.ドライブを開く
2.共有アイテムを開く
3.消したい地図をドライブから削除する
とすると、
一定時間後、マップから削除されます!
-スマホからの投稿-
Xamarin.FormsのMasterDetailPageのテンプレートについて
Xamarinのテンプレートを見ているとデフォルトでDetailPageを発見!
PCLプロジェクトを右クリックして,【新しい項目を追加】から
適当に名前を付けて追加しますと,必要なものが勝手にできてしまう!!
が自動生成されます。
App.Xaml.csを修正して,
public App() { InitializeComponent(); //MainPage = new NavigationPage( new App8_PCL.MainPage()); MainPage = new DetailPage1(); }
ビルドすると・・・
CS0101エラーが発生し,名前空間が重複しているといわれます。
下記リンクによると,これはテンプレートのバグらしい。
優秀な世界のプログラマーに従って修正が必要です。
まず,作成された
の名前空間を直します。
それぞれのソースの名前空間が
(プロジェクト名).(適当につけた名前)
となっているので,
(プロジェクト名)のみに直します。
修正前・・・
namespace (プロジェクト名).DetailPage1
修正後・・・
namespace (プロジェクト名)
また,.DetailPage1Master.xaml.cs
class DetailPage1MasterViewModel : INotifyPropertyChanged { public ObservableCollection<DetailPage1MenuItem> MenuItems { get; } public DetailPage1MasterViewModel() { DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[] { new DetailPage1MenuItem { Id = 0, Title = "Page 1" }, new DetailPage1MenuItem { Id = 1, Title = "Page 2" }, new DetailPage1MenuItem { Id = 2, Title = "Page 3" }, new DetailPage1MenuItem { Id = 3, Title = "Page 4" }, new DetailPage1MenuItem { Id = 4, Title = "Page 5" }, }); } public event PropertyChangedEventHandler PropertyChanged; void OnPropertyChanged([CallerMemberName]string propertyName = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }
の部分の
DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]{...}
を
ObservableCollection<DetailPage1MenuItem> DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]{...}
に修正します。
これで修正完了です。
ビルドしてみましょう。
ただし,このままだとAndroid版はbackキーを押したときエラーで落ちます。
Xamarin.Formsのバージョンを2.3.4系に上げるといいようなので,
一番(投稿時)新しいのは2.3.4.214-pre5なので,これをインストールし
ソリューションをクリーンした後,ビルドするとbackキーエラーも回避できるようです。