Windows10
おうちハック

Windows 10 でおうちハックする

More than 1 year has passed since last update.

本記事は、おうちハック Advent Calendar 2017 の 11日目の記事です。

おうちハック+機械学習の話の予定でしたが、都合により別の内容でお送りします。楽しみにされていた方ごめんなさい。そのかわりといっては何ですが詫びデータセットをご用意しましたのでご自由ご利用ください。もし、データを使って面白い発見があったり、データを利用して何かできましたら @ksasao までお知らせいただけると喜びます。


配布するデータセット

ダウンロードURL: https://1drv.ms/f/s!AtVeMj_gKPtbpe41PCZKYgp5s9OsYA

ライセンスは NYSL Version 0.9982 です。

注) データには一部欠落があります

使い方の例: おうちセンサでキャラクターと暮らしてみた


Windows 10 でおうちハックする

おうちハックといえは、Raspberry Pi や Arduino + Mac が定番ですが、あえて Windows を利用してみましょう。Windows を使うメリットは、Python や Node.js だけでなく、高品質な市販ソフトや Windows 10 で追加された OCR, 顔認識, クラウド音声認識 などの機能が利用できることです。また、最近のアップデートで、サブシステムとして Linux (Ubuntu のコンソール) も動作するようになりました。最近では、LattePanda など、小型ながらフル版の Windows 10 が動作するボードが入手できるようになってきましたので、おうちハックに利用しやすくなってきました。


市販ソフトなどの利用

おうちハックにつかえそうな Windows ならではのソフトウェアをいくつか紹介していきましょう


音声合成

おうちハックの出力として、音声合成を利用したいことはよくあります。Windowsであれば、かわいい声が多く取り揃えられている VOICEROID などが利用可能です。例えば下記のような感じです。

かわいいですね!

VOICEROID には音声合成のAPIは提供されていませんが、棒読みちゃん読みちゃんプラグイン Voiceroid Talk Plus Ver.8.1.0.0 を導入し、棒読みちゃんのクリップボード監視を有効にすると、クリップボード経由で音声合成が可能となります。コマンドプロンプトからクリップボードへ文字列を渡すコードは次のようになります。

echo 任意のセリフ | clip

簡単ですね。棒読みちゃんのプラグインを利用すると、CeVIOやWindows標準の音声合成なども同様に利用可能です。


音声認識

Windows 10 から導入された UWP (Universal Windows Platform) の API は、いわゆるストアアプリだけでなく、Visual Studio から NuGet で UWPDesktop を追加することで、従来のコマンドプロンプトやWindows Forms, WPFなどから呼び出すことが可能です。

コマンドプロンプトから音声認識を利用するサンプルコード


OCR

同様に OCR も利用可能です。最近はデスクトップが高DPI化しており、ユーザーが見ているデスクトップ上の文字列をそのまま OCR にかけてもそれなりに正確に文字を読み取ることができます。サンプルコードは下記の gist へのリンクを参照してください。この API はオフラインでも利用可能です。


任意の Windows アプリケーションの利用

家の状況などに応じて任意のアプリケーションを操作したいことがあります。一般的にソフトウェア開発では自動テストによりソフトウェアの品質を担保しますが、自動テストツール利用することでほぼ任意のソフトウェアが操作可能です。

例えば、TestAssistant を利用すると、ボタン操作の自動化に必要な情報が簡単に取得できます。


Linux コマンドの利用

Windows 10 の 2017年秋のアップデートで Windows Subsystem for Linux を介して、SSH, Git などのコマンドが利用できるようになりました。ぜひ導入しましょう。

Windowsのファイルシステムとも標準で連携できるので使い勝手が良いです。


ハードウェアの利用

Windows でもシリアルポートなどが利用できるので、他のプラットフォーム向けであってもおおよそのものが動かせますが、上述の LattePanda には Arduino が内蔵されており、Windows から I/O を操作することができます。Lチカも簡単です。

Windows Forms から LED を制御

 using System;

using System.Windows.Forms;
using LattePanda.Firmata;

namespace LattePandaHelloWorld
{
public partial class Form1 : Form
{
Arduino _arduino = new Arduino("COM3");
public Form1()
{
InitializeComponent();
_arduino.pinMode(13, Arduino.OUTPUT);
}
bool _pin = false;
private void button1_Click(object sender, EventArgs e)
{
_arduino.digitalWrite(13, _pin?Arduino.HIGH: Arduino.LOW);
_pin = !_pin;
}
}
}


まとめ

Windows でもおうちハック向けの環境が整ってきました。是非お試しください。