Python + GalateaTalk

NVDA というオープンソースのWindows用スクリーンリーダーで GalateaTalk が使えないか、という話があったので、調べてみました。

最新の NVDA snapshots には NVDAJp の活動の成果が取り込まれています。

まず、python で gtalk を実行してみます。下記を UTF-8 で保存して実行。

# -*- coding: utf-8 -*-
import popen2
import os
import codecs
os.chdir("c:\\work\\istc\\SSM\\gtalk\\")
cmd = "gtalk -C ssm-win.conf"
(cout, cin) = popen2.popen4( cmd )
cin = codecs.getwriter('shift_jis')(cin)
text = u'こんにちは'
cin.write("set Text = " + text + "\n")
cin.write("set Speak = NOW\n")
for line in cout.readlines():
print line

あちこちからパクったソースです。「こんにちは」と喋ってくれました。

次は NVDA のドライバー実装です。

NVDA/synthDrivers/display.py をコピーして gtalk.py を作り、

class SynthDriver(silence.SynthDriver):
name = "gtalk"
description = "galatea talk (experimental)"

にしてみたら、とりあえず NVDA 起動→ Ctrl-Shift-S で gtalk が選択可能に。

def initialize(self):
os.chdir("c:\\work\\istc\\SSM\\gtalk")
cmd = "gtalk -C ssm-win.conf"
(self.cout, self.cin) = popen2.popen4( cmd )
self.cin = codecs.getwriter('shift_jis')(self.cin)
text = u'子猫が隠れんぼをしています'
self.cin.write("set Text = " + text + "\n")
self.cin.write("set Speak = NOW\n")
self.frame = SynthFrame()

gtalk ドライバー選択時に「子猫が・・」と喋ってくれました。

def speakText(self,text,wait=False,index=None):
self.cin.write("set Text = " + text + "\n")
self.cin.write("set Speak = NOW\n")
self.frame.textCtrl.AppendText(text + "\n")

お、最初の2行くらい喋った!!

でも、すぐに音声合成がハングアップ。やっぱり「音切れ」の処理を実装しないとダメですね。

続きは明日!!

Ruby on Rails ふたたび

ひさしぶりに CodeGear 3rdRail を触っています。

きっかけはインプレスジャパンのこの本です。

基礎Ruby on Rails (IMPRESS KISO SERIES)

基礎Ruby on Rails (IMPRESS KISO SERIES)

Ruby on Rails の環境、ライブラリ群、そして Ruby 言語の、すべてにおいて初心者の人を対象にした本であり、とても読みやすいと思います。

この本を片手に 3rdRail で遊ぶのも、なかなか良さそうです。

この本の第1章だけを試してみて、こんなことを思いました。

  • RoR を単なるテンプレートエンジンとして使うところから出発して、だんだんまともなアプリケーションに向かってリファクタリングしていく、というのもアリじゃないか?

そこで来月のWIT研究会のページを作成する作業をやってみました。

いままで ActivePerl と Template-Toolkit を使ってやってきた作業を、index.rhtml と main_controller.rb の index メソッドだけで実装し直してみました。rhtml の中で ruby が直接使えるのが嬉しいです。そして index の中にはひたすらハッシュ配列の代入文が並んでいます。そんだけかい。。

階層化アーキテクチャによるアプリケーションにおいては、けっきょく、各レイヤの要になるのはテンプレートエンジンではないか、と思います。マルチモーダル対話アーキテクチャの標準化委員会にこの数年関わっていますが、そこで議論していても常々思います。

3rdRail では rb ファイルでしかメソッドの入力補完は効かないようですが。。あと、実行時エラーのときにやたら重くなるのはなぜだろう。。

RoR はあっちこっちのレイヤで縦横無尽にテンプレートエンジンが使えるのが魅力です。yml の中で eRuby を使う例を最初に見たときは目から鱗が落ちました。

そんなわけで、ちゃんとデータモデルを使えるように勉強を続けたいと思います。

携帯電話とPCのシェア競争

数年前から思い続けてきたことが、だんだん現実になってきました。

それは、1995年ごろのPCのシェアと、ここ数年の携帯電話のシェアの競争の構図が似ている、ということです。すごく乱暴にいうと、

  • NEC PC-98 = NTT Docomo
  • Apple Mac = au
  • DOS/V = Softbank (Vodafone)

という対応関係です。

PC-98 はかつての「国民機」で独占的なシェアがありました。一太郎やLotus 1-2-3などのキラーアプリもありました。それは、PDC 800MHz 帯でエリアが広く、iモードというキラーアプリを産んだかつての NTT Docomo にどこか似ています。

Apple は当時から、デザイナーやコンテンツクリエーター御用達でした。筐体のデザインも広告も洗練されたイメージがありました。出版や音楽製作など、特殊用途の専用アプリケーションがたくさんあり、また Excel などヒューマンインタフェースに優れたビジネスツールが生まれました。それはどこか、音楽やナビなど新しいアプリケーションを切り開きつつ女性受けするイメージを保ってきた au に似ています。

DOS/V は PC-98 の進化に停滞が感じられたころ、ハイスペック、世界共通仕様、というふれこみで黒船のように日本にやってきて、コンパックショックなどの価格破壊を起こしました。そして Windows 95 というプラットフォームの世代交代の波に乗って、一気にメインストリームに躍り出ました。それはどこか、Vodafone のグローバルスタンダード 3G という遺伝子を継承しつつ、価格破壊を引き起こしたこの1年の Softbank の快進撃を彷彿とさせます。

そして、久しぶりに量販店の売り場を見ると、ひところは特等席にあった au がお店の奥に引っ込んでしまいました。Jobs が戻ってくる直前の停滞期の Apple がこれから au にも訪れるのでしょうか。そして大々的に宣伝されている Docomo 905i は NEC の 98MATE から Lavie などのラインに続く、反撃の狼煙のように見えます。7ヶ月純増ナンバーワンで迎え撃つ Softbank も、まだまだ油断ならないところです。

そんな中 NTT Docomo の PHS の停波が迫ってきました。私はかつて(Windows CEになる前の)NEC MobileGear でISDN公衆電話からモバイルしていて、PHS に乗り換えました。データカードに乗り換えてからもずっと使い続けて、最後は腕時計型PHS Wristomo も所持していました。感慨深いものがあります。

WIT研究会のあり方を模索

もう一つ、WIT研究会の専門委員会において、

私は「もっと研究会を活性化したい」という問題提起をしたのですが、

幸い皆様に好意的に受け止めていただき、

建設的な議論をしていただくことができました。

来年はどんどん新しいことに取り組んでいきたいと思っています。

情報と理解

研究会では私が共著の発表も1件ありましたが、

学生さんは元気に立派に発表してくれました。

質疑応答も堂々とこなしてくれました。

実は前々日、前日と準備をして、

何度発表練習をしてもよくならなかったのです。

ちゃんと原稿を書いて読んでいるのですが、

全然内容が伝わってこない。無駄が多い。

じゃあ、ダメモトで、原稿を読まないでスライドだけ見て喋ってください、

とお願いをしたら、たどたどしくはなったものの、

格段にわかりやすくなったので、私が驚きました。

あまりに変わったので、なぜだろう、と考え込んだほどです。

仮説1)

原稿を読まずに喋ることで、聞き手の考えるスピードと、

読み手の喋るスピードが一致して、理解しやすくなる。

仮説2)

原稿を読まずに喋ることで、

スライドに書かれた情報量と喋ることができる情報量が一致して、

情報量が適切になる。

ということをいろんな人に話したら、

「じゃあアナウンサーの原稿読み上げはなぜわかりやすいのか」

と反論されましたが、きっとニュース原稿が特殊なのだと思います(汗)

善意と配慮

12月5日と6日の2日間、

HI学会と福祉情報工学(WIT)研究会の共催研究会に出席しました。

http://www.ieice.org/~wit/program/2007_12-no39.html

特に2日目の畠山卓朗先生の講演、大変なショックを受けました。

「スイッチの神様」という紹介を受けて登壇された畠山先生。

http://homepage2.nifty.com/htakuro/index.html

リハビリテーションの現場の御苦労が生々しく伝わってきました。

善意の押しつけや配慮に欠ける技術は受け入れてもらえない。

見かけのニーズではなく、真のニーズを発見すること。

「観察者」「対話者」に加えて「共感者」の視点を持つこと。

福祉技術に限定せずヒューマンインタフェース技術の研究一般に当てはめても

思い当たることがたくさんあったと思います。

「とにかく現場をよく見てください。場と時間を共有してください」

という畠山先生のメッセージに対して、質疑応答では

「研究者とリハ技術者の役割分担の可能性はありますか」

という質問が出たのですが

(私も、そうかな、と思ったのですが)

畠山先生は否定的でした。

そのこともあって、

現場に出ることができない研究者はどうしたらいいのか、

学会が研究者に対してできることは何だろうか、

と考えさせられました。