参加型授業を目指して

9月末から半年間、東京女子大学で非常勤講師をしています。4年ぶりに機会を与えていただきました。
情報福祉とコミュニケーションをテーマに、視覚障害、聴覚障害のある方々を支援する技術や現場の実情をお話ししつつ、私が東京女子大学の先生方や学生さんと続けてきた研究(音声による視覚障害者の支援技術)も紹介しています。
そして問題の本質に迫るために「ヒューマンインタフェースの原則」を考える必要があることを、少しずつ伝えていきたいと考えています。
“参加型授業を目指して” の続きを読む

NVDAjp 2010.2に向けて

NVDAjp 2010.2に向けて開発メンバーは作業を進めています。
ここでは私の作業状況を簡単にお知らせします。
2010.2 ベースの JTalk の話速を速くする実装の目処は立っており、 bazaar のレポジトリ
lp:~nishimotz/nvdajp/with_jtalk
rev.3531 として launchpad.net に置いてあります。

ただし、このレポジトリには zjtalk.py と jtalk.py の2つのエンジンがあり、(内部の実装はどちらも _jtalk.py です)zjtalk のほうは音声設定で話速のスライダーが出てきます。

jtalk.py のほうは話速設定がうまくできません。話速設定のために supportedSettings をいじると espeak が起動時エラーで落ちます。
なぜ espeak に影響が及ぶのかいまだに不明なのですが、zjtalk.py にリネームしたら解決したので、クラスを読み込んで初期化する順序に依存する問題と思われます。この現象は silence.py で試しても同じでした。

それから NVDAjp そのものではないのですが、10月の開発ミーティングの後の交流会の議論を踏まえて
「読み上げの改良のための情報を集めるサイト」
を試作しました。
Python でなく Ruby on Rails で作ってますが(笑)
こちらについても時間ができたら改良に取り組みたいので、御意見を伺えれば幸いです。

追記(11月15日)
10月30日に 2010.2j がリリースされています。
話速設定については将来のバージョンで追加される予定です。

NVDA jpdev100909

やっと NVDA に音声合成エンジンが搭載され、開発版としてリリースされました!!

今日と明日はオープンソースカンファレンスというイベントでデモをしています。私は明日参加して、夕方のライトニングトークに出ます。

メーリングリストでさっそく動作報告、御要望などいただいています。1週間前にやっと最低限の動作をするようになったエンジンが、皆様のマシンで動いているとお知らせいただき、大変嬉しく思っています。

読み上げが始まるまでの遅延や、速度などの設定変更がない、という問題は私も承知しています。すこし時間をいただければ幸いです。
音声エンジン以外の機能との役割分担を整理する必要がある部分は、開発メンバーで話し合って検討したいと思います。

この機会に、特に、音声エンジンに関する作業方針について、私自身の考えをお伝えしておきます。

私自身はアクセシビリティや音声技術の研究を本業としております。今回組み込んだエンジンはもともと Open JTalk(New BSDライセンス)というもので、音声技術に関するプロジェクトでご一緒してきた研究グループの最新成果(GalateaTalkの関連技術)です。私は本家のメンバーと連絡を取りながら今回の作業を進めています。ちなみに現在使っている声はその研究室の卒業生の方の音声とのことです。

限られた作業時間の中で、商用ソフトウェアのように多くの御要望にお応えすることは難しいかも知れません。しかし、いただいた御要望、不具合報告、御提案をきちんとデータベース化して、なるべく対応したいと思っています。

音声エンジンについては、何か読みのおかしいところを場当たり的に修正すると、これまで正しく読めていた部分に悪影響が及ぶ、ということがあります。テストの手順をまとめて環境を整備することは重要です。
矛盾が起こらないように時間をかけて慎重に作業させていただく場合もあります。「簡単なことが、なぜすぐに直せないのか」とお思いのことも
あるかも知れませんが、もし疑問があればご説明しますので、御了承いただければ幸いです。

私からなにか NVDA に関する改良の提案をさせていただき、ユーザの皆様にご評価いただき、私の研究に御協力いただく、といったお願いをすることがあるかも知れません。もちろん、その場合は事前にお許しを得たいと思います。

それから、デイジー書籍の作成支援ツールに使える音声合成が欲しい、という問い合わせも、私個人に対していただいています。今年の春にスタートしたサピエというシステムの立ち上げを、私もすこしだけお手伝いしています。JTalk エンジンを NVDA で鍛えていただいて、いずれデイジーでも活用していただけるように、と考えております。

  • 2010-09-11: OSC参加は無事に終了しました。なお、Open JTalk に関する記述を一部訂正しました。

NVDAのための音声エンジン

NVDA日本語版は先日「ベータ版」という形で新たに公開されました。
http://accessibility.mitsue.co.jp/archives/000256.html

ベータ版に間に合わなかった音声エンジンの方を私が頑張ってるところです。。
8月末までにNVDAのための音声合成をやると宣言したのですが、とうとう今日で8月も終わりです。

New BSD ライセンスで公開されているエンジン Open-JTalk を Python から ctypes 経由で叩けるようにする作業を進めてきました。
さきほどやっと speak や stop などの基本コマンドが動くようになりました。

いまのところ成果は github の私のレポジトリにあります:
http://github.com/nishimotz/libopenjtalk
この中の lib というサブディレクトリが DLL 関連です。

cygwin gcc-3 の minGW 互換モードで DLL を作っています。
Python は cygwin 版 2.5 と Win32 版 2.6 の両方でチェックしています。
(ただし後述の nvwave.py の制約で cygwin 版 2.5 には非対応になりました)

ただし、技術的な制約で、open-JTalk に組み込まれている mecab (形態素解析エンジン)を使わず、単独で配布されている Win32 版の mecab DLL を組み合わせて使っています。(そのほうがライセンスも管理しやすいはず)

今後の拡張性や保守性を考慮して、オリジナルのエンジンが main 関数でやっている処理を python でほぼ実装しなおしました。
もともと Open-JTalk は HTS_Engine_API の中でオーディオ出力を行っていたようです。しかしスクリーンリーダのためには(音声対話システムであっても)「再生中の音声を自由に止める機能」が必要であるため、HTS_Engine_API 側のオーディオデバイス処理は(configureのオプションで)無効化しました。

ctypes でポインタやダブルポインタを渡す処理を苦労して書きましたが、Python 側にバッファのメモリ管理をやらせるとハマりやすい、ということが分かったので、DLL 側で malloc のラッパー関数を作ってごまかしつつあります。あとでメモリリーク対策が必要になりそうですが。。

NVDA が espeak の中でどのようにオーディオを叩いているかも調べました。(ctypesの参考になりました。。)
http://ja.nishimotz.com/espeak

Windows マルチメディア API で音声出力する部分が nvwave.py という Python のコードでコールバック処理もふくめて実現されています。
驚きでした。
この NVDA 的なやり方を見習って jtalk.py の実装を行いました。ただし DLL から音声波形をコールバックで受け取るのではなく、生成された波形をまとめて nvwave の player に渡しています。
この _espeak.py の実装では、メインスレッドとバックグラウンドスレッドでコマンドキューを共有し、バックグラウンドのスレッドがキューの再生を行っています。さらに stop 命令を受け取ると、キューの中で「時間がかかる処理」だけを削除し、モードの切り替えなどの処理はキャンセルしないで順次実行する、ということになっています。
このような処理は私が「ウチコミくん」で最初に Visual Basic Ver.6 で実装し、そして Galatea Dialog Studio でも実装したものです。
懐かしいような嬉しいような気もします。
そして Python という言語の奥の深さを感じます。

残った仕事は synthDrivers を継承して NVDA 用のドライバークラスを書くことです。
スクリーンリーダーに統合して、安定して動けばいいのですが。。

今回つくった音声合成エンジンでは、かなり多くの部分を Python で実装してあるので、例えば文字列の前処理くらいなら簡単にカスタマイズできそうです。

明日の夜は久しぶりに NVDA 日本語化プロジェクトの開発ミーティングです。

NVDA日本語アルファ版

6月30日にスクリーンリーダNVDA日本語化プロジェクトは「日本語アルファ版」をリリースしました。
このバージョンには限定的ながらも日本語IMEの読み上げに対応する機能が実装されました。
この件についてミツエーリンクスさんのブログでも紹介してくださいました。

昨日は開発ミーティングを開催しました。参加者は会場 3人+Skype 1人でしたが Ustream や Twitter で公開して様子をみていただきました。
Twitter発言のまとめはこちらです。

Google Groups に nvda-japanese-users というメーリングリストが開設されています。興味のある方はご参加ください。よろしくお願いします。

“NVDA日本語アルファ版” の続きを読む

GoogleWaveと音声認識

昨日「GoogleWaveとUstreamで音声認識字幕の実験」を初めて行いました。

開始時間: 2010/06/20 11:47
終了時間: 2010/06/20 14:05
ユニーク視聴者数: 27
合計視聴者数: 31
平均視聴者数: 6

ハッシュタグ#wavcapのつぶやきをまとめました。

携帯電話から見たい、という御要望もあったのですが今回は対応できませんでした。
また、直前の告知であったことについて、もっと時間をかけて幅広く告知をしては、という御意見もありました。

“GoogleWaveと音声認識” の続きを読む

人工知能学会全国大会

人工知能学会全国大会(第24回)で「学会・研究会の情報保障におけるソーシャルネットワークの役割」(1D3-1)という発表をしてきました。
スライド(最終版の一つ手前の版)も公開しています。
福祉情報工学研究会での経験を踏まえて考えた個人としての見解でしたが、直前に作ったビデオ(GoogleWaveと音声認識による字幕配信の可能性)について、いろいろな人に興味をもっていただいているので、これから実験を進めたいと思っています。
“人工知能学会全国大会” の続きを読む

東大先端研イベント

東大先端研「当事者の視点によるバリアフリー研究」6月4日午前の部に参加してつぶやいてきました。

司会は伊福部達先生。話題提供者は中野聡子さん、藪謙一郎さん、鈴木淳也さん。
中野さんには後で質問させていただき、下記の論文を教えていただきました。

中野聡子他, “聴覚障害者向け音声同時字幕システムの読みやすさに関する研究(1)-改行効果に焦点をあてて”, ヒューマンインタフェース学会論文誌, 第10巻第4号, pp:51-60, 2008.

iPhone字幕システムによる情報保障の実演?もありました。ロビーで紹介されていたのは、iPhoneと通信できるBluetoothワイアレスマイクで講師の声を拾い、音声を遠隔要約筆記のサービスに送り、字幕を遠隔地のWebサーバから配信。iPhoneのSafariで字幕を閲覧、というシステムでした。
実はポイントは「ソフトバンクだから音声もパケット通信も定額」というところで、なるほど、と思いました。

Twitterで私をフォローしておられる何人かの方が「要約は必要か?誰にとって必要か?」という趣旨の発言をなさっているのが興味深かったです。
音声認識技術とモバイル機器の普及は「ユーザにあわせてカスタマイズ可能な字幕提示」という新しいシステムに繋がると考えています。

そういうことも考えつつ、来週の人工知能学会大会(長崎)で下記の発表を予定しています:

6月9日セッション1D3「コミュニケーション支援」1D3-1 学会・研究会の情報保障におけるソーシャルネットワークの役割(西本卓也)

藪さんのシステムは「タッチ操作で文章を入力する新しいインタフェース」になりそうな予感がします。いずれ音音研でお話ししたいとのことでした。音音研の運営が滞っててすみません。。

“東大先端研イベント” の続きを読む

言語のメロディを学ぶ

東北大学で開催されている電子情報通信学会の総合大会にて、イベント企画(講師:馬塚れい子先生、無料公開)のオーガナイザを務めました。

たまたま、いま読んでいた「散歩学のすすめ」という本でこんなエピソードを読んだばかりです:

神聖ローマ帝国のフリードリッヒ2世という王様が、「赤ちゃんを大人の会話に触れないように育てたら、何語を話すようになるだろう?」という疑問を持ち、実際にそのような実験を行った。しかし、答えは得られなかった。なぜなら、すべての赤ちゃんが死んでしまったからだ。。

「散歩学」のすすめ (中公新書ラクレ)
古川 愛哲
中央公論新社
売り上げランキング: 678087
おすすめ度の平均: 3.5

4 散歩をする習慣がない人にオススメ!
5 散歩はビタミン剤
1 散歩学?

この「散歩学」の本はなぜか散歩の本なのに「連れと散歩しながら雑談を楽しむ」ことを主張するユニークな本なのですが、ともかく、人間が乳児の時期において言語を獲得するということは、人間の生存に関わる重要な活動であることには違いありません。
この大仕事を、乳児自身とその親達が、いかにこなしているのか、誰もが興味をおもちではないでしょうか?

今回は馬塚れい子先生が、直前にアメリカで参加された(成田から仙台に直行してくださったのです!)国際会議の情報を交えて、乳児どころか胎児の言語獲得に関する最新情報までお話してくださいました。
さらに「最近、乳児の日本語教育や英語教育について、科学的な知見を歪曲しかねない情報がメディアにあふれつつある」ということを懸念しておられる馬塚先生は、そういった誤解をできるだけ丁寧に解こうとして、当初のテーマから大幅に話を広げてくださいました。

西本のTwitter中継は馬塚先生の弾丸トークを十分にカバーできたとは言えませんが、雰囲気だけでもお伝えできれば幸いです。
会場には40人くらいの方がお見えになったのですが、本当はこういうイベントこそUstreamなんかで中継したかったです。。

“言語のメロディを学ぶ” の続きを読む

IPSJセッション5U座長

情報処理学会50周年記念大会の 学生セッション[5U会場](3月11日(木)9:30~12:00)音声インタフェース・システム にて座長をつとめました。
電波の入りにくい部屋で b-mobile 3G も Pocket Wifi も全滅。au で質疑だけ備忘録代わりに中継しました。
学生セッションの座長はいろいろやることが多くて忙しい思いをしました。。
“IPSJセッション5U座長” の続きを読む