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 日本語化プロジェクトの開発ミーティングです。

Ustreamのパスワード配信

昨日今日第54回福祉情報工学(WIT)研究会(共催:ヒューマンインタフェース学会研究会)でした。
前回に引き続き、Ustreamによる配信を実施しました。
また、前回の配信について配信ワーキンググループの連名で報告をしました。
研究会の記録と配信実績の報告は別途しますが、その前に忘れないうちにUstreamに関する御報告をひとつしておきます。

WIT研究会ではできるだけ多くの方に面倒な手続きなく配信したいと考えておりますが、前回および今回に関しては、講演者や情報保障関係者の御要望を考慮して、Ustreamの「パスワード制限による配信」を使用し、ieice_wit のアカウントで配信を実施しました。
私たちは特に前回「聴覚に障害をお持ちの方を考慮した配信」を行いました。その詳細は報告(およびその技術編)の通りなのですが、予想外に多数の「視覚に障害をお持ちのユーザ」から御利用の御要望をいただきました。

一般的には「動画コンテンツに字幕をつける」というのはWebアクセシビリティの配慮としてはなかなか手が回らない部分です。
そこにチャレンジした私たちなのですが、残念ながら、もっと基本的な配慮である「視覚に障害をお持ちの方が、スクリーンリーダ操作で配信を受けられること」について、十分な配慮を実現できておらず、前回に続いて今回もお叱りのメールやツイートをいただいています。

具体的な状況を以下にご説明します。
パスワードを入力しようとしてチャンネルのURLにアクセスすると「この番組はパスワードで保護されています。番組を見るには、有効なパスワードを入力してください」という画面が表示されます。これはHTMLのテキストボックスなので、日本で普及しているほとんどのスクリーンリーダで(音声読み上げとキーボード入力で)操作可能です。

Ustream受信のパスワード操作1

スクリーンリーダを御利用の方はこれを入力すれば配信が始まると思ってお待ちになるようですが、残念ながら配信が始まりません。
実はこの先にもう一つパスワード入力画面があるのです。

Ustream受信におけるパスワード入力(2つめの画面)

この2番目の画面では、Flashの動画配信オブジェクトの一部として、Flashのウィジェットでテキストボックスが表示されているようです。
日本で視覚障害を持つ方が広くお使いになっているスクリーンリーダには、Flashオブジェクトの中のウィジェットを操作できない製品が多数あります。
このため「配信を利用できない」というご指摘をいただく結果になっています。

もしFlashオブジェクトでパスワード入力待ちがなければ、音量調整など操作が困難な要素はありそうですが、全盲の方にもWIT研究会の配信をなんとか聞いていただくことはできると思われます。(そして、視覚に障害をお持ちなので会場に足を運びにくい、自宅や職場から研究会を聴講したい、という御要望にお応えすることも、私たちとしては、情報保障の取り組みの一つとして重要である、と気づきつつあります)

著名な高機能スクリーンリーダであるJAWS(日本語版)はこういった問題に対応できる選択肢の一つですが、高価である・操作方法が初心者向けでない、といった事情で、利用者が限られているのが実情です。
このような日本のWebアクセシビリティの状況を改善すべく、私たちもオープンソースで高機能のスクリーンリーダであるNVDAの日本語化に取り組んでいます。
NVDAでのFlash操作についてはミツエーリンクスさんがブログ記事(続報)で報告しておられます。

今回、配信ワーキンググループは、配信を利用できなかったという方から「パスワード入力がなぜ2回必要なのか」と質問を受けております。

WIT研究会の配信WGとしては、今後、パスワード制限を行わないで配信できるように努力したいと考えております。しかし、別の団体などから、パスワード制限をかけつつ視覚障害をお持ちの方に配慮した配信をなさりたい、という要望はいずれ出てくるのではないかと思います。
そこで改めて Ustream 運営会社の皆様にもこの問題をお知らせするべく、この記事を書かせていただきました。

まずはこの問題について多くの方にご理解いただけることを望んでおります。

英語と日本語

ウィーンで開催されたICCHPに参加して音声CAPTCHAの発表をしてきました。
私の英語のブログ記事をご覧ください。

会場(ウィーン工科大学)で無線LANが使えたので iPod touch で Twitter を使いながら聴講しました。
すぐに #icchp というハッシュタグが見つかり、Twitter を使っている研究者の方々をフォローしたり、興味深い発言をリツイートしながら話に付いていこうと努力していました。
海外で使える携帯電話を今回も持たないで渡航しました。しかし、日本から iPhone をお持ちになった方も 3G でパケット通信をするのは料金的に敬遠したい、とおっしゃっていたので、本当は Pocket WiFi のようなデバイスでローミングサービスこそが求められているのかも知れません。。

日本に帰国して、開業したばかりの成田スカイアクセス線のなかから、久しぶりにいつものアカウント @nishimotz で日本語でつぶやき始めたら “don’t, ’cause i wouldn’t understand you anymore!” というリプライが来ました。

そうですよね。。ごめんなさい。。。

最初から日本語人格と英語人格を分けておけばよかったなあ、と今頃になって思ったのですが、手遅れ。。。

考えた末 @nishimtz というアカウントを新たに作り、日本語人格を新しいアカウントに移行(分離?)することにしました。

これを一つの機会に、「日本からの英語での情報発信」について積極的に考えていきたいと思います。

NVDA日本語アルファ版

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

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

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

続きを読む »

GoogleWaveと音声認識

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

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

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

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

続きを読む »

人工知能学会全国大会

人工知能学会全国大会(第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 学会・研究会の情報保障におけるソーシャルネットワークの役割(西本卓也)

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

続きを読む »

WIT53の2日目

遅くなりましたがWIT53の2日目の報告です。
最後のセッション「地域におけるITサポート」のまとめは別途作りました。

PC要約筆記の字幕を映像に付与して配信する、という実験が好評でした。短期間の告知でしたが、配信のためのユーザ登録には約60件のお申込をいただきました。PC要約筆記を担当された皆様も「どんな風に配信されているのか画面を見たい」と非常に関心を持ってくださいました。
受付名簿によると会場参加者は1日目が30人、2日目が45人くらいでしたが、今回の試みは「より多くの方に研究会に参加していただくための手段」になり得たと考えています。

今回もTwitter経由で有意義な質問やコメントを複数いただきました。こういったツールに慣れた方が増えていくにつれて、もっと多くの方とスムーズにコミュニケーションが取れるようになると期待しています。「音声+映像+ソーシャルストリーム」という新しい潮流の中で、福祉情報工学研究会を活性化できそうだという展望が見えつつあります。

スクリーンリーダーでUstreamの受信操作ができなかった、という問い合わせをいただきました。
私も自分で触ってみて知ったのですが、Web画面でパスワード入力を1回行ったあとで、Flashのプラグインの中でもう1回パスワードを要求される場合があったのです。後者のFlashのテキスト入力がスクリーンリーダで操作可能かどうか、検証が必要と思われます。

今回 IPTalk と CamTwist の連携を @YamaguchiToshi さんが実現してくださったので、このシステムを音声認識による情報保障と接続することが次のステップになりそうです。
一方で川井 拓也さんが「USTREAM 世界を変えるネット生中継」で書いておられる「ソーシャルストリームが字幕になる」現象も、情報保障の一つの可能性だと私は期待しています。ソーシャルストリームを活性化するために、私はWITのネット参加者を少なくとも一桁増やすことを、個人的な目標にしたいと考えています。。。

補足(2010-05-29) : 山口さんの技術資料がSlideShareで公開されています。

続きを読む »

WIT53の1日目

新潟で第53回福祉情報工学研究会を開催しています。
PC要約筆記の字幕を動画に含めて配信するという実験をおこなっており、Ustreamのユーザ登録を40人以上の方がしておられます。
本日は画面上の数字では20人くらいの方が同時にみておられましたが、Ustreamの統計情報は合計77人とのことです。
カメラの位置や音声など細かく調整しながら運用を続けています。
明日は「地域におけるITサポート」の企画が行われます。
以下は Twitter の記録です。西本は @nishimotz と @ieice_wit のアカウントを両方使っています。

続きを読む »

WIT53予告と映像配信のご案内

5月21日と22日に第53回福祉情報工学研究会(WIT) が開催されます。
開催場所は新潟駅南口から徒歩3分の新潟大学駅南キャンパスです。
今回WITは遠隔からのインターネットによる研究会への参加に関する実験としてUstreamによるリアルタイムの映像配信を行います。
またTwitterもWITの公式アカウントでの運用を行うことになりました。

WIT研究会は映像配信のためのワーキンググループを作り、特に聴覚に障害をお持ちの方に対応した字幕つきの映像配信について準備を進めています。
ただし今回はPC要約筆記の文字情報を不特定多数の方に配信することができないため、パスワードつきでUstream配信を行います。
配信を利用される方にユーザ登録をお願いしております。
メールアドレスとお名前を入力していただくだけの簡単な手続きで、特に利用資格は制限しておりません。

WITとしては初めての試みでもあり、不備や不具合が生じるかも知れませんが、ご理解いただければ幸いです。

P.S. 8月のWIT研究会(HI学会SIG-ACIと共催)の発表申込締切は5月20日です。

« 古い投稿