この開発は、平成13年度IPA未踏ソフトウェア創造事業からの支援を受けて行われました。
2002年2月28日
渡辺隆行、切明政憲
MS-DOSは文字でコマンドを入力し文字で情報が出力されるOSであったので視覚障害者にも 使いやすいOSであった。1990年代に入ると初心者にも使いやすいGUI (Graphical User Interface)を持ったWindowsが登場した。Windowsは最新の技術がいち早く導入される反面、 ウインドウ・アイコン・メニュー・ポインタなどのGUI部品による操作を前提にしている 場合が多いので、Windows標準の部品を使ったりスクリーンリーダに配慮して作成したり しないと視覚障害者が使えないアプリケーションになってしまう。またバージョンアップ の周期が早い巨大なOSに合わせてスクリーンリーダを開発するのは困難な作業である。そ のため、Windows はなじみにくいとか使いにくいとか感じる人がいたり、新しいバージョ ンでは使えない機能が生じたりする。実際、Windowsでなくてもできる作業ならばMS-DOSを使 うユーザも存在する。
Windows以外の高機能なOSとして、LinuxなどのUNIX系OSが注目を集めている。UNIXは もともとテキストコンソールから操作するOSであり、文字情報だけでOSを管理できる。X Window SystemなどのGUIはテキストの世界の上に別のレイヤとして存在しているだけで、 ユーザは好みに応じてテキストツールでもGUIツールでもUNIXを利用できる。したがって、 UNIXもMS-DOSと同じように音声利用できてMS-DOSを利用している視覚障害者が移行しやすいOSで あるはずであるが、ユーザが少ないこともあってUNIX用のスクリーンリーダは数少なく、 日本語スクリーンリーダで実用化されているものがない。
つまり、視覚障害者にとってMS-DOSはOSとしての機能が低く新たに習得しても報われない、 WindowsのGUIは音声化システムに本質的に適していない、UNIXには音声化システムがほと んどないといった状態になっており、最新コンピュータの機能を活用できる使いやすい日 本語音声化システムが待望されている。
職場での仕事には正確さと速度を求められるので、仕事で使う音声化システムは情報 を効率よく正確に音声化しなければならない。しかし既存の視覚障害者用音声化システム は必ずしもこのような要求を満たしていない。また仕事や勉学の場で出会う情報は日本語 と英語が混在している場合が多い。ところが既存の音声化システムは日本語用に設計され ているため英語を正しく音声化することが苦手であり、ローマ字を正しく読めるシステム も少ない。したがって、ローマ字や日英2ヶ国語が混在した情報を正確に又わかりやすく 音声化できるシステムも必要とされている。
そこで我々はこのような視覚障害者の要求を満たす音声化システムを開発するために、 1999年に晴眼者と視覚障害者が個人資格で集まったオープンソースのプロジェクトを立ち 上げ、日米二ヶ国語のEmacs音声化システムBEP(Bilingual Emacspeak Platform)の開発に 取り組んだ。
BEPはRaman博士が開発したEmacspeakを基にしており、既存の日本 語音声化システムと比較して以下の特徴を持つ。
BEPは2001年1月にアルファ版を公開したが、視覚障害者に利用してもらうためにはま だまだ多くの改良が必要である。そこで本開発では、Linux版とWindows版のスピーチサーバ の改良、Emacs Lisp部の改良、スピーチサーバ及びBEP Emacs Lisp部の多言語化、視覚障 害者用インストーラの作成、ユーザテストとユーザサポートなどに取り組んだ。 以下、今回の開発内容についてLinux版BEPを中心に述べる。 なお、開発成果のまとめは9.1節の「開発成果」に示す。
図1に示すように、BEPはEmacspeakをバイリンガルに拡張したEmacs Lisp (ELisp)部と、 日本語と英語の音声合成エンジンを制御するスピーチサーバ部の2つのソフトウェアに分 かれる。Emacs Lisp部は両OSで共通しているが、スピーチサーバはOSごとに異なる。音声 合成ライブラリは市販の製品を用いる。Windows版のスピーチサーバはMicrosoftのSpeech API 4に準拠した音声合成ライブラリを使用する。Linux版は、4.4 節「Linuxスピーチサーバの構成」に示すように独自のインターフェースを持つ。図 中、太線枠部が今回開発した部分。
図1. BEP構成図
本システムはWindowsでもLinuxでも使えるEmacsの音声化システムであり、今回開発し た部分(Emacs Lispライブラリ、各OS用のスピーチサーバ)以外に、Emacsと日本語と英語 の音声合成ライブラリが必要である。以下の環境で動作を確認している。
以下のソフトが事前にインストールされている必要がある。これらのインス トールに約70MB程度が必要である。
以下のディストリビューションで動作確認を行った。
注; 現在、Windows版は日本語音声合成ライブラリの種類及び英語の発 音方法が異なる2種類のスピーチサーバが存在する。IBMの音声合成を用いるWindows版(1) を安定して使用するには、Pentium II 400MHzクラスのCPUが必要。また、Windows版スピー チサーバは今回新たに開発したELisp部の言語切り替えコマンドなどにまだ対応していな いので、2001年度に公開しているバージョンのELispを使う必要がある。
以下のソフトが事前にインストールされている必要がある。これらのインストールに 約100MBの空き領域が必要。
バイリンガル化したEmacspeakがパソコンを音声利用するユーザに有用で、拡張性の高いものに なるように、以下の点に留意して開発した。
まず、BEPはバイリンガルシステムである以前に日本語音声化システムとして実 用に耐えるものでなければならない。ソースコードフリーで提供されている 日本語環境で利用可能なLinux音声化システムは、2002年2月現在においてBEP以外 に存在しない。従って、Linux上でBEPを使うユーザの多くにとって、BEPがメイ ンの作業環境を音声化する手段となる可能性がある。日本語処理のために十分な 機能を提供できなければ、そのような利用に耐えうるものにはならない。このた め、BEPでは文字の詳細読み、記号類の言語に依存した読み変えなどの機能をサ ポートした。また、操作のレスポンスを向上するため、音声出力中に後のイベン トや操作によって瞬時に先の音声を停止して次のイベントに即した読み上げを開 始する即時停止機能にも重点を置いた。
また、上のこととも関係するが、英語の聞き取りが不得意なユーザにも有用なも のとすることも重要である。既存の日本のスクリーンリーダーは、英語文字列 をカタカナの読みに変換し、日本語音声合成ソフトウェアを用いて発声する。 BEPはバイリンガルであるため、英語文字列は英語発音で発声するが、英語が不 得意なユーザにとってはカタカナ読みの方が情報を得やすい場面もある。また、 10.2節「カタカナ発音とネイティブ発音を必要とする理由」に 示すように日本語文中に現れる英単語などは周囲と同じ日本語音声合成でカタカナ読みする のが望ましい場合が多い。そのため、BEPでは英語文字列についてネイティブな 読みとカタカナ読みの二つを使い分けることを可能にした。 また、日本人の英語聞き取り能力に配慮して、音声出力速度を日英独立に指定できるようにした。
さらに、今回の日英のバイリンガル化の次のステップとして将来的に同じ枠組みで他 の言語環境へ拡張可能とすることを考慮し、Emacspeakに英語以外 の言語サポートを加えるための変更、日本語に特化した機能をLispファイルや名 前空間のレベルで分離した。
今回の開発成果をより多くの人に利用してもらい、今後も発展していくためには、 基盤としているEmacspeakの変更をすぐに取り入れられることが望ましい。 そのため、Emacspeak本体に対しては多言語対応機能が動作するための最低限の 変更にとどめ、多言語化及び日英バイリンガル特有の機能はモジュールとして別 にロードして有効化する形とした。
以下の節ではこれらの機能を実現するためにlisp部及びスピーチサーバ部をどの ように構成したかの概要、その外部仕様について述べる。
EmacspeakのLisp部は大きく二つの部分から構成されている。一つは直接スピー チサーバ(SS)を制御するSS制御部、もう一つはEmacsの動作 (関数)をトリガとして呼び出され、必要な情報をSS制御部のために準備するフロ ントエンド部である。
Emacspeakには情報の種類によって声の種類やパラメータを変えて出力する機能 がある。たとえば、プログラムを読み上げさせると、コメントの部分は抑揚のな い棒読みで、文字列定数は女性の声でといったように区別される。この機能を voice-lockと呼んでいる。バイリンガル拡張の実現ではこのvoice-lockにヒント を得ている。
voice-lockではフロントエンド部でバッファの内容を解析し、デフォルト以外の 声で出力したい部分のテキストにpersonality属性を与える。SS制御部ではこの personality属性を検知し、スピーチサーバに送るコマンドに声の種類を変更す るためのin-textコマンドを挿入して声を変化させる。
今回開発したバイリンガル化拡張では、フロントエンド部を拡張し、バッファの 内容を見て、文字種や周囲の状況から判断してemacspeak-language属性をセット する。この属性には値として言語名(現在はenまたはja)がセットされる。次に、 SS制御部ではこの属性の変化するところでスピーチサーバに対して言語変更を示 すコマンドを送信することで、その前後で出力すべき言語が異なることをスピー チサーバに伝えることができる。
つまり、一度emacspeak-language属性が付与されたテキストは、これまでの音声 種別による情報提示と直行する形で言語種別の概念を持つことになる。
フロントエンド部において常に言語属性を自動的に付与することが困難な場合がある。 なぜなら、GNU Emacsがバッファに保持している各文字の文字セット情報からその 部分が属している言語を判定することは自明ではないためである。そのた め、BEPの今回の方式では、日本語と英語のみが存在すると仮定した上で言語属 性を設定することとした。
言語の判定には主としてEmacsの持つ文字カテゴリを用いる。日本語の文字カテ ゴリ(japanese-jisx0208, katakana-jisx0201等)に属する文字は日本語としてし か読み上げることができないため、無条件で日本語と判定する。それ以外の文字 (ASCIIなど)については二つの扱い方が考えられる。一つは英語と判定してオリ ジナルEmacspeakと同じ処理を行うこと、もう一つは日本語と判定し、カタカナ 読み(英単語、ローマ字)や日本語らしい記号読み(半角記号類)で日本語として読 み上げることである。
BEPではバッファの変更、ウインドウのスクロールやリサイズに応じて言語属性 を付与する機能が呼び出されるが、言語属性の付与機能を以下の3種類の中からユーザの指定に応 じて切り替え可能とした。バッファローカル変数とすることで、バッファごと、 モードごとに設定することもできる。 また、後から追加することも可能である。現在提供し ている三つの方式を以下に示す。
本プロジェクトにおけるEmacspeakに対する拡張は、4つの部分に分けることがで きる。それらに関して概略を述べる。
本プロジェクトで開発したBilingual Emacspeak Platformではオリジナル Emacspeakの機能を日本語英語の混在環境でもシームレスに利用可能とする方向 で拡張を行った。そのためユーザから見える部分での操作的変更は比較的少なく なっている。
以下は多言語拡張に関連したinteractiveコマンドの一覧である。
emacspeak-m17n-put-language-strategy
に従って指定した
領域に言語プロパティを付与する。
以下はバイリンガル拡張で導入された、ユーザで設定可能な変数の一覧である。
スピーチサーバはBEPの音声出力を行う独立したプログラムで、Emacsのサブプロ セスとして起動される。 BEPのSS制御部からコマンド入力を受け、日英の音声合成(TTS)ライブラリを制御し、生成 されたPCMデータをサウンドデバイスへ書き込む。また、コマンドに従って出力 の即時停止を行う。 本説では新たに開発したLinux用バイリンガルスピーチサーバの構成について解 説する。
Linuxスピーチサーバで利用する日本語と英語のTTSソフトウェ アは日本語と英語で全く異なるAPIを備えている。
このように異なる機能を持つTTSを制御するため、別に共通のAPIを定め、それに 会わせたラッパークラスをTTSごとに作成して、上位のレイヤーからは共通APIの みを利用することとした。
共通TTSインターフェースではそれぞれのTTSが独立したスレッドとして動作する。
そのうえで、リクエストのキューイング、音声合成処理、即時停止の機能を提供する。
TTSへのリクエストは発声すべき文字列、発声速度、言語、タイプ(文字列として
読むか1文字として扱うのか)、句読点の読み方に関するパラメータなどを含む。
リクエスト中の文字列には、読み上げるべき文字列以外に、TTSソフトウェ
アを制御するためのin-textコマンドも含まれる。これはDECTalkのサポートする
コマンドのサブセットであり、[, ]
で囲まれる。これらのコマン
ドはリクエストからそれぞれのTTSラッパーに渡され、そこでTTSソフトウェアに
適した形式(別のin-textコマンドまたはライブラリ用APIのコール)に変換する。
共通TTSインターフェースでは以下の機能を定義する。
TTSのスレッドが開始されるとそれぞれのTTSソフトウェアを初期化し、内部の キューにリクエストが入力されるのを待つ。上位の制御でリクエストが入力され、 発声開始が要求されると、サウンドデバイスの待ち順を予約し、リクエストを順 に処理して音声出力を行う。また、発声停止要求があれば、キューイングされた リクエストを破棄してリクエスト待ち状態に移行する。
コントローラ部は発声リクエストのキュー、使用可能なTTSのリスト、現在の発 声パラメータを保持している。それぞれ入力されたコマンドによって設定するこ とができる。パラメータの主なものを以下に示す。
コントローラ部ではコマンドとして文字(列)のキューイングが要求されると、与 えられた文字(列)と上記のパラメータをリクエストとしてキューにプッシュする。 コマンドとして発声が要求されると、キューから一つずつリクエストをポップし て、そこに指定された言語に従ってそれぞれのTTSラッパーに送る。最後にすべ てのTTSラッパーに発声開始を要求することで文字列が順次適切なTTSで読み上げ られる。
以下はLinux スピーチサーバのコマンド処理部が解釈するコマンドの一覧である。
q {<string>}
d
s
l {<C>}
tts_say {<string>}
t <freq> <msec>
tts_set_speech_rate <NNN>
tts_set_punctuations <all|some|none>
tts_set_language <en|ja>
tts_set_character_scale <N.N>
tts_sync_state <punc-mode> <capitaloze>
<allcaps-beep> <split-caps> <rate>
tts_set_speed_offset <lang> <offset>
当プロジェクトで開発した部分はGNU GPLに従って、BEPのWebサイトで公開している
Linux版のインストール手順は大きく分けて三つのプロセスになる。日本語と 英語のTTSエンジンのインストール、Linux用スピーチサーバのコンパイルとイン ストール、BEPのlispパッケージのインストールである。それぞれについて解説 する。
BEPの日本語読み上げ機能を利用するには、クリエートシステム開発株式会社が 販売している日本語音声合成ライブラリが必要である。 クリエートシステム開発のLinux版のページ http://www.createsystem.co.jp/linux.html からVectorのプロレジを通じて安価に購入できる。(\4,800)
BEPが想定している構成に合わせ、製品に含まれるファイルを以下のように配置する。
/usr/local/lib/dtalker
,
/usr/local/include/dtalker
を作成
synch/lib/*
→ /usr/lib
synth/include/*
→ /usr/local/include/dtalker
synth/dic/*
→ /usr/local/lib/dtalker
また、BEP用スピーチサーバパッケージに含まれる
英語カタカナ読み辞書(英単語に対応する発音をカタカナで表記してある辞書)のbep-eng.dic
を
/usr/local/lib/dtalker
にコピーする。
この英語カタカナ読み辞書については、環境変数BEP_DIC_PATH
でファイルのフルパスを指定することで変更することもできる。
IBMのサイトから、 ランタイムライブラリ(ViaVoice_Outloud_rtk-5.1-1.2.i386.rpm)及び開発キット (ViaVoice_Outloud_sdk-5.1-1.2.i386.rpm)を取得する。(いずれも無料)
ViaVoice OutloudのRTK及びSDKをRPMから適当な方法でインストール する。Red Hat(6.2, 7.x)では以下のコマンドでインストールできる。 (Red Hat系以外のディストリビューションでは特別な作業が必要になる。)
# rpm -ivh ViaVoice_TTS_rtk-5.1-1.2.i386.rpm # rpm -ivh ViaVoice_TTS_sdk-5.1-1.2.i386.rpm
rpmは/etc/profile
に環境変数を設定するので、これを
有効にするため、シェルを起動し直すか再ログインする。
Makefileの必要個所、主にインストールprefixの確認とデバッ グオプションの選択、を適宜修正する。
以下のコマンドでプログラムを作製し、システムにインストールする。
$ make $ make install
BEPのlispパッケージは、オリジナルEmacspeakに対するパッチの形で提供さ れている。以下のようにしてインストールを行う。
Sourceforgeより、オリジナルEmacspeak を入手する。これを任意のディレクトリで展開する。
Emacspeakのソースのトップディレクトリで以下のように実行する。
% patch -p1 < path/to/bep-rel.patch
パッチとともにいくつかの新しいファイルも生成される。
make; make install
としてシステムにインストールする。
Emacspeakのトップディレクトリにある"dot.emacs.add"ファイルの内容 をユーザの.emacsファイルに追加する。環境に応じて適宜変更する必要が あるだろう。
Windows版のインストール手順は大きく分けて二つのプロセスになる。日本語と 英語のTTSエンジンのインストール、BEPのWindows版パッケージのインストール である。それぞれについて解説する。
Microsoftのサイトからspchapi.exe をダウンロードし実行すると、自動的に必要なファイルがシステムにインストー ルされる。システムの状況によってはシステムの再起動が必要な場合がある。
Windows版(1)は、日本語音声合成ライブラリ(TTSエンジン)として、IBMの商品である ProTalker 97 (定価9800円)を使用する。Protalker 97 は、音声合成だけの単体の商品として パソコンショップで購入できる。
Windows版(2)は東芝LaLaVoiceを使用するが、これも製品としてパソコンショップなど で購入できる。(音声認識機能やアプリケーション込みのパッケージ「LaLaVoice 2001」の定価は16000円。 東芝のパソコンにはプレインストールされている。)
Microsoftのサイトから msttsL.exeをダウンロードし、実行する。システムの指示に従ってインストールを行えばよい。
BEP のパッケージをダウンロードする。
ダウンロードしたファイルをExplorerなどで実行し、指示に従ってインストー ルすればよい。
BEPの簡単な操作方法、バイリンガルの使い方、音声を使ったEmacsアプリケー ションの簡単な使い方について述べる。
Emacs(Meadow)を起動すると、自動的に音声が出力して、BEPが使える状態に なる。この後は総ての操作が音声化される。
Emacspeakには豊富な読み上げコマンドが存在する。BEPでもその総てを使用 することができる。ここでは基本的な読み上げコマンドを紹介する。
カーソルキーを動かすことにより、ポイントされた文字・行を読み上げ る
読み上げ中の音声を即時停止する
読み上げスピードを切り替える。
カーソルがある行を総て読み上げる
カーソルより後の内容を総て読み上げる
編集中のバッファの内容を総て読み上げる
バッファに対応するモードラインを読み上げる
編集中のバッファの現在行数を読み上げる
4.2節「ELisp部バイリンガル化機能の概要」でも述べた ように、(Linux版)BEPは、ユーザのニーズに応じてバイリンガルのモードを切り替えるこ とができる。これはより音声を聞きやすくするために重要な機能である。
読み上げの方式を変更する。ASCII文字は総てネイティブ発音、ある一 定以上の長さの文字列はネイティブ発音、総てカタカナ英語(日本語発音の英語)の 3通りを切り替えることができる。
Emacsで利用されるいくつかのアプリケーションを取り上げながら、BEPの動 作を述べる。
Emacspeakでは、font-lockに相当する効果をを音声で表現するために、 voice-lockという概念を導入している。Lisp, C, C++, Perlなどのソースファイ ルを読み込んで、バッファを音声出力させてみよう。
キーワード・文字列・コメントなどによって、声が変化することがわかる。 音声利用の場合でも十分にプログラム構造を理解することができる。
Emacspeakは、カレンダーのように2次元の表として意味を持つ情報を、1次元の音声 情報でもわかりやすいようにユーザに提示する。
カレンダーモードを起動すると、"Welcome to the calendar"という音声が聞 こえて、カレンダーが表示される。
今日の情報を聞きたいときは C-e m とタイプする。"Monday, Feb 11, 2002"と 聞こえるだろう。カーソルキーで日付を変えていくと、必要な情報を取得して音 声で聞いたときに意味のある情報に組み立て直しているのがわかる。
Mewを音声で利用するときに必要になる音声ガイドを出力するパッケージを新 たに開発した。引用文では声が変化したり、削除マークをつけたメールは 声が変化するような工夫がされている。
メールのリストが表示されているところでは、削除マーク・レビューマー クなどのマークの種類によって声を変えることで、ユーザにこのメールがど のようなメールかを伝えている。
一覧から読み上げたいメールを選択して、"."のキーを入力すると、自 動的にメッセージを読み上げる。このときに、引用文は声を変化させて、 それとわかるように工夫している。
BEPのELisp部及びLinuxスピーチサーバの動作確認、診断方法について述べる。
BEPを動作させるためには、まずスピーチサーバが正常に動作している必要があ る。スピーチサーバは標準入力からコマンドを1行単位で読み、コマンドを解釈 して動作するプログラムなので、シェル上から起動してコマンドを入力すること で簡単に動作確認できる。
Linuxスピーチサーバを起動するには、LinuxSpeechServerのディレクトリに移動
し、./bep-ss
を起動する。以下のような出力があれば正常に起動
されたことが確認できる。
DT: Initializing CreateSystem speech engine... TTS_Outloud: IBM Viavoice outloud speech synth... Bilingual Emacspeak Speech Server Ver. 2.0 started! ready
動作を確認するには、一行単位で以下のように入力する。
q {Hello in Japanese} tts_set_language en q {Hello in English} tts_set_language ja q {Hello in Japanese again} d
d
を入力して改行を入力すると日本語と英語で交互に読み上げ
が行われるはずである。また、読み上げている途中でs
を入力後改
行を入力すると、その時点で発声が停止する。
ready
のメッセージが出力されずにbep-ss
が終了す
る場合、初期設定に問題があることが考えられる。その例のいくつかを示す。
BEP_DIC_PATH
でbep-eng.dic
の
フルパスを指定するか、ファイルをconfig.h
で指定された場
所に配置する。HIGH11.VSD
をconfig.h
で指定した場所に配置し
ていないことが考えられる。辞書のインストール状況を確認する必要がある。
wd2k03.dic
がロード
できなかったことが考えられる。config.h
による指定と辞書
のインストール状況を確認する必要がある。eci.ini
ファイルが
見つからなかった場合である。標準的なViaVoice OutloudのRPMからのイン
ストールでは、ecil.iniは
/usr/lib/ViaVoiceTTS/eci.ini
に作成される。また、このファイルはinigen
プログラムを利用し
て、
/usr/lib/ViaVoiceTTS/bin/inigen /usr/lib/libibmeci50.so eci.iniとして作成することができる。 詳細はViaVoice Outloud RTK付属のドキュメントを参照されたい。
/usr/lib
等)に必要なTTSソフトウェ
アのライブラリ群がコピーされ、ldconfigされているかを確認する。または、
LD_LIBRARY_PATH
環境変数が共有ライブラリを配置した場所に
適切に設定されているかを確認する。
上記のような情報で解決できない問題、正常動作中に発生するスレッド同期やコ
マンド処理に伴う問題を診断するために、デバッグ用バイナリを作成することが
できる。Makefile
内でデバッグ用コンパイルオプションを有効に
し、
make clean; make
を行うことで作成される。
デバッグ版では標準出力に処理に伴ってデバッグ出力が行われる他、
HOME
ディレクトリのelog
ファイルにデバッグ情報が
書き込まれる。
また、以下のように操作すると、バッファ *speaker*
(最初はスペー
ス)にスピーチサーバの標準出力の内容が得られる。
M-x dtk-toggle-debug RET C-e C-s
elog
に出力されるメッセージは、入力を示すInput:
やモジュール名で始まる文字列である。開発の進行に伴って変更されるためここ
での詳説は割愛するが、ユーザによる問題の特定、開発グループでの問題解決に
役立つ情報となるはずである。逆に、ログファイルは大きくなるため、必要のな
い場合にはデバッグ出力を行わない最適化版バイナリを作成して利用する方がよ
い。
BEPのバイリンガル機能について、テスト方法の例を示す。 バイリンガルで音声出力することを確認するもっとも簡単な方法は適当な内 容のファイルを作成してみることである。 たとえばC-x C-fで新規にファイルを作成し、以下のように入力する。
This is Bilingual Emacspeak(BEP). これはBEPです。
デフォルトの状態では1行目の英文字列もカタカナ英語で読み上げられる。上下 のカーソルキーやC-n C-pを使って行移動すると、移動先の行が読み上げられる。
次に2行目として以下のように挿入してみる。
This is Bilingual Emacspeak(BEP). It talks Japanese and English fluently. これはBEPです。
上記の行を入力していくと、途中からキー入力が英語発音で行われるようになる。 その段階で上下のカーソル移動を行うと、1行目も英語で発音されるようになっ ていることが分かる。 また、ここで2行目を削除すると、再び1行目はカタカナ英語で発音される。
カタカナ英語のときには「()」は「カッコ」及び「カッコトジ」と読まれ、英語 発音では「left paren」、「right paren」と読むようになる。
次にC-e x m s
(言語属性付与方式のトグル)を何度か行って上記
の文章がどのように読まれるか確認すると、少しずつ読み方が変化することが分
かる。
emacspeak-m17n-put-language-ja-ne
では最後の行の「BEP」を含
め、英文字列はすべて英語発音となる。
emacspeak-m17n-put-language-ja-ke-a
はデフォルトの動作である。
emacspeak-m17n-put-language-ja-ke-all
では英語文字列もすべて
カタカナ英語として読み上げられる。
BEPを使い始める時に一度は経験するのが、Emacsを起動して直後からminibuffer
に「process speaker not running」というメッセージが出力され、どのような
操作をしても回避できないという状態である。このような時は他のシェルから
Emacsをkillするか、強引に M-x kill-emacs RET
とタイプして終
了させるしかない。
これは文字どおり、スピーチサーバが起動できなかったか、起動してもすぐに終 了してしまったかのいずれかの原因で起きる。 このような場合の対処方法は、一度戻ってスピーチサーバが単体で動作すること を確かめることである。シェルからスピーチサーバを起動し、7.1で述べた方法 で正常に動作するように設定する。
もう一つ考えられる問題点は、EmacsからBEPを起動するときの環境変数の指定で
ある。BEPはスピーチサーバを起動するとき、環境変数DTK_TCL
に
指定されたプログラムにDTK_PROGRAM
の引数を渡して起動する。
BEPの場合はスピーチサーバの動作にtclXを必要としないため、
DTK_TCL
にスピーチサーバの実行ファイル名を指定して起動する。
または、lisp変数のdtk-tcl
, dtk-program
に直接値
を設定することもできる。
福祉の市場は、(1) ユーザ数が少ない、(2) ユーザのニーズが多様で特殊である、(3) 開発 者が障害者のニーズを正確に把握するのが難しい、という特徴を持つ。そのため一般的な 商品開発のプロセスで対応すると非常に高価な製品になってしまったり、障害者のニーズ とずれた製品が市場に出てしまったりすることが多い。
オープンソースの世界で用いられるバザール型の開発手法は、このような特徴を持つ 福祉市場に対応した製品を出す新しい開発手法になるかもしれない。なぜならば、(1) ソ フトウェアはコピーが容易なので製品の数の多少は関係しない、(2) ユーザ自身が開発 を行う又は開発者に近い立場で開発にコミットすることでユーザのニーズを的確・確実に 開発に反映させることができる、(3) 開発がオープンになりユーザの意見が早いサイクル で取り入れられやすい、(4) 利益を上げることが最優先事項にならないので製品の質にこ だわることが可能である、からである。
オープンソースは魔法の杖ではないので、何でもオープンソースで開発すればうまく いくわけではない。特に大事なのは、(1) 開発者が強い開発動機を持っていること、(2) 実際に動くシステムをユーザコミュニティに提供できること、(3) 開発者が必要なリソース(ス キル、時間、金銭的余裕など)を持っていること、である。福祉システム開発にバザール 型の開発を適用するに当たっては、強い動機を持った、つまり自分でそれを使いたいと思っ ている開発者がいることが重要になる。それがかなわない場合でも、実際にそのシステム を使いたいと思っている人間がコア開発者と密接に連絡を取れるようになっていることが 大事である。
本プロジェクトは、GNU/LinuxやGNU EmacsやオープンソースのEmacspeakをベースにし た、バザール型の音声システム開発である。本提案が目指しているのは、音声出力利用の エキスパートである視覚障害者の経験や要求を満たすような音声出力インターフェースを 実現することである。本提案は晴眼者と協力しながら視覚障害者が中心となって開発して いるシステムであり、オープンソースの利点を生かしてユーザが本当に必要とするシステ ムを作り上げることを目指している。
BEPの開発は、視覚障害者と晴眼者の共同プロジェクトで実施された。中心的な開発者 は全盲の視覚障害者であり、晴眼者1名と視覚障害者3名でほとんどの部分を開発した。こ のほかに晴眼者約2名と視覚障害者約2名が毎月のオフライン開発者ミーティングに参加し て開発の方針やシステムの仕様決定に参加した。BEPには2種類のメーリグリストがあり、 ユーザ用のメーリングリストである bep@argv.org は参加者数67名で、開設以来1年半で 7000通の投稿がある。開発者用のメーリングリストである bep-dev@arg.org を開設した のは約半年前であるが、参加者数は19名で、既に1000通を超えるメールが投稿されている。 BEPのWebサイトを開設したのは約1年前であるが、BEPのトップページは約5500 ビュー、 Windows版BEPのページは約3400ビュー、Linux版BEPのページは約1000ビューに到達してい る。このメーリングリストやWebサイトを通じてユーザテストやユーザサポートを行って いる。BEPの場合、開発メンバーのほとんどが視覚障害者であるので、視覚障害者である ユーザに適した情報提供ができていると思う。
メーリングリストの投稿数やWebサイトのアクセス数とBEPの発展の間に関連が見られ るので、10.3節「BEPメーリングリストやWebアクセスの資 料」で詳しく述べる。
ユーザの意見やバグ報告をすぐに反映しやすいのがオープンソースの利点であるが、 Windows版の開発においては開発者に余裕がないために修正が大幅に遅れるという問題も 生じている。BEP全体でも開発者が少ないために、少数の人間に大きな負荷がかかるとい う問題を解消することができずにいる。WindowsのVisual C++を使ってMFCのアプリケーショ ンを書けるプログラマーはたくさんいるが、BEPの開発に参加しようというプログラマー は少ない。LinuxでのC++での開発でも同様のことが言える。ドキュメント作成などに関し てもなかなか協力者を集められない。BEPでは、開発しながらBEPが備えるべき機能を議論 していった、つまり走りながら考えたので、仕様を完全に決めて外注するという開発形態 をとることは難しく、結局2,3人が議論しながら開発するしかなかった。開発のコアメン バーが足りないとことがBEPの大きな問題である。
本開発プロジェクトの成果を開発項目ごとにまとめる。本開発プロジェクトの中心課 題であるLinuxのバイリンガル音声化システムに関しては、予定通り完成することができ た。
今回の開発でIPAの申請書に書いた中核部分は完成させることができたが、実際にユー ザに使ってもらうためにはまだまだ改良が必要である。バイリンガル化に関して言えばま だ拡張が不完全なところがあり、Windows版のスピーチサーバがまだ今回の拡張に対応で きていない。本家Emacspeakへのコードの還元もこれからの課題である。また我々が使用 している商用の日本語音声合成ライブラリーにも機能が不十分な部分があり、外部の資金 を投入して改善をお願いしている。
Emacsは一般ユーザになじみがないアプリケーションであり、Linux自身も一般には普 及していないので、BEPに関心があっても使い始めることが出来ないユーザも存在する。 BEPを単なるソフトウェアを超えたひとつのシステムと見た場合、このようなユーザの教 育やサポートも今後の大きな課題である。
今回Linux版のBEPが動くようになったので、これを組み込みLinuxに応用できないかと 考えている。つまり、最近はi-modeやPDAなどの携帯情報機器の重要性が増しているので、 これらの機器を視覚障害者も利用できるようにしておく必要があり、iPAQやLinux版 ZaurusなどにBEPを組み込んで、視覚障害者も使える携帯情報機器を実現できないか検討 している。
BEPの開発の中心メンバーは企業や大学などに所属しており、所属組織が個人での活動 をあまり認めなかったために組織の身分と個人の身分を分離することが難しく、IPAから の委託開発と所属組織の仕事との両立にかなりの困難を生じた。
本システムを使用するとき、音声合成ライブラリだけがオープンソースなソフトウェ アを使用できない。英語の音声合成ライブラリはWindows用もLinux用も無料で配布されて いるものがあるが、日本語に関しては両OSともメーカの製品を購入しなければならない。 視覚障害者が音声でコンピュータを利用する際、音声の機能や品質は極めて重要な要素で あるが、彼らの要求を満たすものはメーカが開発した商品以外にはない。IPAなどの資金 を得てソースのライセンスを購入するなどの方法で、商用品質の日本語音声合成ライブラ リをオープンドメインに置けないものかと考えている。
視覚障害者が使用する音声合成は倍速以上の高速で音声化しても聞きやすい声を持ち、 しかも応答性がよいなどの機能が必要である。しかし現在の音声合成の研究開発は、「重 くてもよいから人間のように自然に発話する」ことに主眼が置かれ、視覚障害者のニーズ を満たせていない。
BEPのユーザ9名に、BEPを使う際にカタカナ英語(以下、K英語と略す)とネイティブ 英語(N英語)をどう使い分けたいかインタビューした。9名の内訳は男性8名と女性1名、 全盲5名と弱視1名と晴眼3名である。英語の聞き取り能力に関してはほぼ不自由なく聞き 取れるユーザから英語が苦手なユーザまでさまざまである。インタビューの結果、以下の ことが明らかになった。
BEPのバイリンガル化にあたっては、以上の点を考慮して3種類のモード(ネイティブ 英語、カタカナ英語、両者の混在)を用意した。
BEPもメーリングリストの投稿数やWebのアクセスカウンタの記録を見ると、BEPの活動 がよくわかるので、2002年1月までの統計を下図2,3に示す。
図2. メーリングリストの月別投稿数 (説明)
図3. Webサイトのアクセスカウンタの月別増
加数 (説明)
*; Webアクセスカウントは月末に集計。ただし2001年4月は14日に集計。
メーリングリストが2000年8月ごろ盛んになったのは、この時期にバイリンガルでしゃ べるWindows版のスピーチサーバが動くようになって、はじめてBEPがある程度まともに動 くようになったからである。Linux版は2000年11月末のLinux Conferenceでの発表にあわ せて開発を進め、同年末に日本語とカタカナ英語をなんとかしゃべるようになった。また 2001年1月にはWebサイトを作り、Windows版とLinux版のBEPをオープンソースとして一般 公開した。同時期にWindows版を障害者用のメーリングリストで案内したり、Linux magagineの佐々木氏の記事で取り上げてもらったりしたので、メーリングリストも活発に なっている。メーリングリストとWebともに2001年5月に活発になっている理由は今のところ 特に思い当たらないが、IPAに応募することになって盛り上がったのが原因かもしれない。 メーリングリストが2001年10月に投稿数が減っているように見えるのはユーザ用のBEPと 開発者用のBEP-devに分けたからである。2001年4月のWebアクセス数が減っているように 見えるのは、集計が4月14日と他の月より半月早かったためである。2001年1月にWebアク セスが多いのは、Webサイトの製作者側のアクセス頻度が高かったことも大いに影響して いる。