say + Python subprocess > order_gesture_180225.py > v0.1, v0.2 > インターバルごとに「home position」、「command」と発音する

```txt:動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
scipy v0.19.1
geopandas v0.3.0
MATLAB R2017b (Home Edition)
ADDA v.1.3b6
gnustep-gui-runtime v0.24.0-3.1
```

プロジェクト開始: https://qiita.com/7of9/items/4077c92b9a773e054193

[MemoryEnhancer > MEGLV > UI > 音声によるコマンド受付の応答 | sayコマンドのセットアップ(Ubuntu 16.04 LTS)](https://qiita.com/7of9/items/11659f3f7038e00b7a78)
と
[UI > rotate arm (to the) right > どういう動きなのか? | コマンド案 v0.1 > home position | hand roll | forearm pitch | arm yaw](https://qiita.com/7of9/items/7a4ff3ffbfc22430e9ee)
の続き。

### 必要な作業

[グローブUI(ESP8266 + MPU-9250)](https://qiita.com/7of9/items/4c2690973459bbd8a69c)によるQuaternionのデータをコマンドに訳そうとしている。
そのためにはグローブUIの動きのデータを測定する必要がある。

コマンドをサーバーが識別できるようにするためには、サーバーが使用者に命令を発して、使用者がそれにもとづきコマンドを繰り返し実行する、という作業を通したデータ取りが必要になる。

@ 社員をサーフィンへ行かせよう by Yvon Chouinard (シュイナード)
> わずか１５歳にしてオオタカを罠で捕らえ、手の上で眠ってもらえるほどの信頼を勝ち取るまで夜通し付き添い、誇り高きこの鳥を狩りの補助役としてだけ働くよう訓練するのだから、禅問答ではないが、「どちらが訓練されているのか」ということになる。

「どちらが訓練されているのか」

### 処理概要

1. gnustep-gui-runtimeのsayコマンドを使う
2. 「home position」を発する
3. 「command」を発する
4. 2と3を繰り返す

### code v0.1

```order_gesture_180225.py
import subprocess as sb
import sys
import time
from datetime import datetime as dt

'''
v0.1 Feb. 25, 2018
	- add main loop
	- add run_say()
'''


def run_say(param):
	sb.call(('say ' + param).split())
	hhnnss = dt.now().strftime('%H:%M:%S')
	print('%s %s' % (hhnnss, param))


INTERVAL_SEC = 5  # interval between sound

for loop in range(3):
	run_say('home position')
	time.sleep(INTERVAL_SEC)
	run_say('command')
	time.sleep(INTERVAL_SEC)

run_say('finish')

```


```txt:run
$ python3 order_gesture_180225.py 
11:53:32 home position
2018-02-25 11:53:37.222 GSSpeechServer[26735] No handle for event rport on descriptor 14
11:53:37 command
11:53:42 home position
2018-02-25 11:53:47.310 GSSpeechServer[26735] No handle for event rport on descriptor 14
11:53:47 command
11:53:52 home position
2018-02-25 11:53:57.403 GSSpeechServer[26735] No handle for event rport on descriptor 14
11:53:57 command
11:54:02 finish
```

### 運用

Home positionと言われたら、[home position](https://qiita.com/7of9/items/7a4ff3ffbfc22430e9ee)にする。

Commandと言われたら、データを取りたい[コマンド](https://qiita.com/7of9/items/7a4ff3ffbfc22430e9ee)のいずれかを行う。

Peekで動画を取りながら、データもファイル出力をしておく。動画を見ながらデータに対するコマンド識別のための処理を検討する。　


### code v0.2

- NUM_LOOPを追加

```order_gesture_180225.py
import subprocess as sb
import sys
import time
from datetime import datetime as dt

'''
v0.2 Mar. 04, 2018
   - add [NUM_LOOP]
v0.1 Feb. 25, 2018
   - add main loop
   - add run_say()
'''


def run_say(param):
	sb.call(('say ' + param).split())
	hhnnss = dt.now().strftime('%H:%M:%S')
	print('%s %s' % (hhnnss, param))


INTERVAL_SEC = 10  # interval between sound
NUM_LOOP = 5

for loop in range(NUM_LOOP):
	run_say('home position')
	time.sleep(INTERVAL_SEC)
	run_say('command')
	time.sleep(INTERVAL_SEC)

run_say('finish')

```