「Juliusクライアント」のひな型を作る

 図19がPythonで記述した簡単なクライアントプログラムのひな型です。nanoを起動し、図19の内容を打ち込み、「voice-remocon.py」として保存してください。

$ cd ~ 
$ nano voice-remocon.py 
図19●Juliusクライアントのvoice-remocon.py
# -*- coding: utf-8 -*-

import socket
import sys
import select
import os
import subprocess

host = "localhost"
port = 10500
bufsize = 1024

client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))

while True:

  inputready, outputready, exceptrdy = select.select([client_socket], [],[])

  for s in inputready:
    if s == client_socket:
        message = client_socket.recv(bufsize)
        print "受信したメッセージ : " + message
        if message == "":
            print 'クライアントの実行を停止します'
            flag = False
            break
        else:
            if "前進" in message:
                print "WORDを見つけました!"

client_socket.close()

 クライアントのひな型プログラムである「voice-remocon.py」は、ポート10500に接続するように作られているので、ポート10500に接続できないとエラーで止まってしまいます。クライアントがポート10500に接続できるようにするのはJuliusサーバーなので、「voice-remocon.py」を起動する前に、Juliusを起動しておく必要があります。具体的には以下の順序でコマンドを実行してみてください。

$ julius -C ~/julius/julius.conf & 
$ python voice-remocon.py 

 1行目のコマンドの最後には「&」を付けているので、このコマンドはバックグラウンドで動きます。バックグラウンドで動くということは、このコマンドの実行後に次のコマンドを受け付ける状態に戻る(プロンプトが表示される)ということです。しかし、このコマンドの実行後すぐにプロンプトに戻らないため、メッセージの流れが止まったら[Enter]キーを押してください(図20)。そうすればプロンプトが表示されるので、続けて次のコマンド「python voice-remocon.py」を実行します。

図20●Juliusコマンド実行時の操作