(58)【調査した分野】(Int.Cl.,DB名)
編集対象のテキストが表示される表示面を持ち、当該表示面上へのユーザのタッチを検出してタッチ位置情報を出力するタッチパネルディスプレイを持つコンピュータにおいて、音声認識プログラムと協働してテキストの入力及び編集を行なうテキスト編集プログラムであって、前記コンピュータを、
前記タッチパネルディスプレイの出力に基づいて、ユーザが前記表示面上に描画したジェスチャの種類を検出し、当該ジェスチャの種類に基づいて、前記タッチパネルディスプレイに表示されているテキストに対して行なわれる編集方法を決定する編集方法決定手段と、
前記編集方法決定手段により決定された編集方法が第1の編集方法であることに応答して、前記音声認識装置による音声認識を起動する起動手段と、
前記音声認識装置から音声認識結果が出力されたことに応答して、前記音声認識結果を用い、前記タッチパネルディスプレイに表示されたテキストを、前記編集方法決定手段により決定された編集方法で編集する編集実行手段として機能させ、
前記編集実行手段は、
前記タッチパネルディスプレイの出力及び前記編集方法決定手段の出力を用い、前記表示面上での前記ジェスチャの描画領域と、前記表示面上に表示されているテキストの表示領域とに基づいて、前記表示面に表示されているテキストの内で編集の対象となる文字若しくは文字列又は編集の対象となる位置を選択する選択手段と、
前記選択手段により選択された文字若しくは文字列又は位置に対して、前記編集方法決定手段により決定された編集を実行する手段とを含み、
前記音声認識装置は、音声認識結果の文字ごと、又は単語ごとに音声認識結果の信頼度を表す尤度を付して出力し、
前記テキスト編集装置は、編集の対象となるテキストに尤度が付されている場合に、文字ごと又は単語ごとに尤度を記憶する記憶手段をさらに含み、
前記選択手段は、前記タッチパネルディスプレイの出力に基づいて、ユーザが前記表示面上に描画したジェスチャと、前記表示面上に表示されているテキストの表示位置とに基づいて、編集の対象となる文字列の候補を選択する候補選択手段と、
前記記憶手段に記憶された尤度を用い、前記候補選択手段によって選択された候補の前、後又はその双方に連続する文字又は文字列であって、その尤度がしきい値より低い文字又は文字列を編集の対象となる文字列の候補に追加する候補追加手段とを含む、テキスト編集プログラム。
【発明を実施するための形態】
【0014】
以下の説明及び図面では、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
【0015】
[実施の形態]
本発明を、タブレット端末によるコミュニケーションプログラムを例として説明する。ここで説明するコミュニケーションプログラムは、例えば耳の不自由な人とのコミュニケーションのために、音声をテキスト表示し、さらに音声入力を使用して適宜テキストを編集するというアプリケーションである。
【0016】
<タブレット端末80の外観>
図2を参照して、この実施の形態に係るタブレット端末80は、長方形の正面を持つ、扁平な直方体の筐体90を持つ。筐体90の正面には、長方形のマルチタッチディスプレイ100が配置されている。マルチタッチディスプレイ100の周囲は筐体90により縁どられているが、そのうちの短辺に沿った一部は他の部分よりも幅が広く、その中央部にハードウェアの押しボタン102が配置されている。
【0017】
マルチタッチディスプレイ100は、この実施の形態では、LCD(液晶表示装置)の表示面上にマルチタッチパネルが配置されたものである。LCDには様々な表示を行なえる。マルチタッチパネルとLCDとの協働により、指を使用した様々なジェスチャでタブレット端末80に指示を与えることができる。なお、以下の説明では、指を1本だけ使用した場合を例に実施の形態を説明するが、指を2本以上使用するジェスチャを考慮する場合も基本的には同じ考え方で処理できる。
【0018】
ここで、「タッチ」とは、表示面を指で1度だけ触ることをいう。「ダブルタッチ」とは、表示面内の同じ箇所を、ごく短い時間内に2度続けてタッチすることをいう。ダブルタッチとなる時間を超えた時間間隔で2度表示面をタッチすると、それらは別々のタッチ(シングルタッチ)として検出される。
【0019】
図2のマルチタッチディスプレイ100の表示面には、この実施の形態でのコミュニケーションプログラムの基本画面が表示されている。この基本画面の大部分は、テキスト表示領域104が占めている。テキスト表示領域104の左上にはいわゆるUndoボタン112が配置されている。Undoボタン112を操作することにより、過去の操作を取消すことができる。なお、Undoボタンにより起動されるUndo機能はよく知られており、かつ本発明の内容には直接は関係しないので、以下の説明ではUndo機能を実現するプログラム部分については詳細は説明しない。
【0020】
テキスト表示領域104のうち、押しボタン102に近い部分にはツールバー114が表示される。ツールバー114には、ソフトキーボードの表示を制御するキーボード表示ボタン120と、コミュニケーションプログラムの設定を行なう際にユーザが操作する設定ボタン122と、音声入力の開始及び終了を指示するための音声入力ボタン124とが表示される。ツールバー114にはさらに、音声認識によりコマンドを入力し、そのコマンドを吹出形式で表示するコマンド吹出処理を呼出すためのコマンドボタン126と、テキスト表示領域104に表示される本文テキストとは別のテキストを音声認識で入力し、吹出形式でテキスト表示領域104に表示させる吹出処理を呼出すための吹出ボタン128とが表示されている。これらを用いた処理の概略については、
図3〜
図12を参照して後述する。
【0021】
なお、
図2には現れていないが、
図2における筐体90の上辺にはマイクが設けられ、下辺にはスピーカが設けられている。マイクによって入力された音声をタブレット端末80の内部でデジタル処理できる。
【0022】
基本的にタブレット端末80では、ユーザが発した音声をタブレット端末80中の音声認識プログラムが認識し、認識結果のテキストをテキスト表示領域104に表示する。しかも音声認識をリアルタイムで動作させるので、聴覚の不自由な人でも、テキスト表示領域104に表示されるテキストを見ることでユーザの発話の内容を理解できる。
【0023】
ただし、既に述べたとおり、音声認識プログラムでは、原理上100%の精度を得ることは困難であり、修正を比較的頻繁に行わなくてはならない。修正に時間がかかるとせっかく音声認識を使用したにもかかわらず、リアルタイムのコミュニケーションを実現することが困難になってしまう。そこで、この実施の形態に係るタブレット端末80では、特定のジェスチャがあったときには、そのジェスチャに対応した、テキストに対する修正又は挿入のために必要な処理を行ない、同時に音声入力を起動して、修正又は挿入すべきテキストを音声で入力できるようにしている。例えばテキストを置換するときには、置換対象のテキストを選択するジェスチャによって対象のテキストが選択される。しかしそれだけではなく、それと同時に、そのテキストを置換すべきテキストの入力のため、音声入力が自動的に起動される。テキストを選択した後にわざわざ音声入力を起動しなくてもよいため、音声認識を利用したコミュニケーションが円滑に行なえる。すなわち、このコミュニケーションプログラムは、音声認識プログラムと協働して、テキストの入力及び編集を行なうためのものである。
【0024】
なお、この実施の形態で「ジェスチャ」というときには、指等をマルチタッチディスプレイ100の表面に滑らせて特定の形状を描く操作をいう。しかし本発明はそのような実施の形態には限定されず、指等がタッチパネル近傍にあるときに指の存在を検出するような方式の者にも適用可能である。
【0025】
<操作例>
─文字列の置換─
図3を参照して、テキスト表示領域104に表示されている、音声認識により得られたテキストのうち、ユーザが「左側に」という語句を別の単語で置換する場合を考える。このタブレット端末80の通常の設定では、その語句の上に横線140を指で描くジェスチャを行なうと、横線140と領域が重なっている文字列が置換対象として選択される。それと同時に、
図3の右側に示すように、音声入力プログラムが起動され、音声入力ウィンドウ142が表示される。音声入力ウィンドウ142には、置換対象の文字列と、音声認識結果の文字列とが表示される。音声認識結果の文字列は、音声入力ウィンドウ142に表示されるとともに、横線140の文字列に代わってテキスト表示領域104にも表示される。このとき、横線140が消去されるのはいうまでもない。
【0026】
─文字列の挿入─
図4を参照して、入力されたテキストの一部に文字列を挿入したい場合には、ユーザは、挿入したい箇所に逆V字150を描くようにジェスチャを行なう。
図4の右側に示すように、このときも自動的に音声認識プログラムが起動されて音声入力ウィンドウ152が表示され、音声入力が可能になる。入力されたテキストは逆V字150の頂点位置に挿入される。この実施の形態では、逆V字150の先端がテキスト内部を指していないときには、音声入力後のテキストは入力済のテキストの末尾に追加される。
【0027】
─文字列の削除─
文字列を単純に削除する場合、ユーザは、削除した文字列の上で左右に指を往復させることで、左右の線からなる図形160を描くジェスチャを行なう。この図形160と重なる領域の文字列が削除される。この場合には音声入力は自動的には起動しない。
【0028】
─キーボードによる文字列の置換─
例えば固有名詞のように音声入力で思い通りの文字列が得られない場合もある。そうした場合のために、
図6の左側に示すような箱型の図形170で対象の文字列を囲うと、図形170により囲われた文字列が置換対象として選択されると同時に、
図6の右側に示すようにソフトキーボード174が表示される。この実施の形態では、さらにキーボード入力ウィンドウ172が表示され、キーボード入力ウィンドウ172の上段には置換対象の文字列が表示され、下段にはソフトキーボードで入力された文字列が表示される。
図6に示される例では、キーボードによる入力フィールドには、初期値として置換対象の文字列が表示され、従来の例と同様、カーソルがその前後に表示される。カーソルを移動させることで入力位置を移動させたり置換対象の文字列を選択したりできる。なお、キーボード入力ウィンドウ172を表示せず、入力されたテキストをテキスト表示領域104に直接表示してもよい。
【0029】
─吹出処理─
ある程度まとまった音声入力をした後、入力後のテキストのどこかに新たなテキストを入力したい場合があり得る。そうした場合、
図4に示したように挿入を行なうこともできるが、挿入箇所を決めるのがすぐにはできない場合もあり得る。入力したテキストと区別して別のテキストを入力したい場合もある。そうした場合のために、テキスト表示領域104に入力されたテキストとは別のテキストを吹出形式で音声入力により入力できる。挿入箇所が決まったときにその吹出を所望の位置にドラッグすることでテキストの挿入ができる。
【0030】
具体的な実施例としては
図7の左側に示すように、この場合ユーザは吹出ボタン128を操作する。すると角の丸い長方形状の吹出180が表示され、同時に音声認識が起動されて音声入力ウィンドウ184が表示される。音声認識の結果のテキストは吹出180内に表示される。吹出180への入力を終了するときには、テキスト表示領域104のどこかをタッチするか、キーボード表示ボタン120をタッチすればよい。なお、吹出180の右上にはこの吹出180を消去するためのクローズボックス(×印)が表示される。このクローズボックスをタッチすると吹出180は消去され、その内部のテキストも消去される。
【0031】
図8の左側を参照して、吹出180に表示されたテキストを本文のどこかに挿入するときには、吹出180内のどこかをタッチしてドラッグする。すると吹出180も指の動きに追従して吹出186として移動表示される。吹出186が所望の位置まで移動したところで指をテキスト表示領域104から離すと、
図8の右側のテキスト188で示すように、その位置に吹出180の内部にあったテキストが挿入される。なお、この実施の形態では、このように吹出180のテキストを本文に挿入すると吹出180は消去される。しかし、吹出180をそのまま残してもよい。
【0032】
─コマンド吹出処理─
テキストを強調表示したり、色を変えたり、入力の設定を変えたりしたい場合もあり得る。そうした場合には、通常は、
図2に示す設定ボタン122を操作すればよい。しかし、設定ボタン122を用いる場合には、通常のメニュー形式によって設定項目を表示させて所望の設定を行なわなければならない。そうした操作は、リアルタイムのコミュニケーションを阻害する。そこで本実施の形態では、設定のショートカットとして、音声によりコマンドを入力できるようにしている。しかも、単に音声で入力されたコマンドを実行するだけでなく、入力されたコマンドのテキストを吹出形式で表示する。この吹出をタッチすることで、吹出により表されるコマンドを繰返して実行できる。ここでは、文字を大きく表示する音声コマンドとして「大きく」というコマンドが音声で入力可能だとする。
【0033】
図9の左側を参照して、コマンド吹出処理を起動する場合、ユーザはコマンドボタン126をタッチする。すると
図9の右側に示されるように、コマンド吹出190が表示され、コマンド吹出190内にコマンドのテキストが入力される挿入ポイントを示すカーソル194が表示される。同時に音声認識が起動され、音声入力ウィンドウ192が表示される。通常のテキスト入力と区別するため、音声入力ウィンドウ192には「コマンド入力」という文字列が表示される。コマンドとして認められる文字列は予め定められているため、ユーザが正しいコマンドを発話することを前提とすると、音声入力の精度は高くなる。
【0034】
図10の左側を参照して、「大きく」というコマンドが音声で入力されたことを示す文字列200がコマンド吹出190の内部に表示される。このコマンドを実行する場合、ユーザは、まず対象の文字列を選択する。この実施の形態では、
図10の左側に示すように、対象の文字列を囲むように長円202を描く。長円202により囲まれた文字列は選択状態となる。文字列が選択された状態で吹出190の内部にタッチすると、選択された文字列にコマンド吹出190のコマンドが適用され、
図10右側に示されるように対象文字列が大きな文字に変化する。別の例として、「改行」というコマンドの場合には、テキスト表示領域104に表示されたテキストのうち、改行を挿入したい箇所に挿入ポイントを設定してからコマンド吹出190をタッチすればよい。
【0035】
─テキストの全削除─
入力した文字列を全て削除して新たなテキストの入力を開始したい場合もある。そうした場合には、
図11の左側に示すように、テキスト表示領域104の全体にわたり大きな×印210を描く。すると
図11の右側に示すようにテキスト表示領域104はクリアされる。この実施の形態では、テキスト表示領域104がクリアされると同時に、音声入力が自動的に起動される。したがってユーザは、入力済のテキストを消去する動作をすると同時に新たなテキスト入力のための発話を開始できる。
【0036】
─尤度による処理対象の選択─
上記した説明では、ジェスチャにより選択される文字列は、ジェスチャの領域に重なる文字列であった。しかし、音声認識の場合、誤認識される文字列はあるまとまりを形成しており、そのまとまりがジェスチャにより囲われた領域と一致するとは限らない。一般に、誤認識される部分については、音声認識の尤度は低くなると考えられる。そこで、本実施の形態では、文字列の選択方式として、上記した単なる領域の重なりによるものだけではなく、尤度によって領域を決定する方式も準備しており、両者を設定で切替えることができるようにしている。通常、音声認識プログラムは、音声認識結果とともに音声認識結果の単語ごとの尤度を単語とともに出力するので、それをここで用いることができる。尤度は、後述するストレージ又はRAMに音声認識結果とともに記憶される。
【0037】
図12を参照して、例えば、認識された文字列のうち「左側にはコンビニが」の部分の尤度が他と比較して低い場合を考える。ユーザがその一部である「左側に」の上だけに横線140を引いた場合、
図3に示す例では「左側に」という文字列が置換対象として選択される。しかし、
図12に示す設定では、「左側に」だけではなく、尤度の低い部分である「はコンビニが」の部分までもが置換対象として選択され、その部分まで含めて横線220が描かれ、同時に横線220が描かれた部分の文字列を置換するための音声入力が自動的に起動される。ユーザによる文字列の選択が多少ずれていたとしても、修正する対象であると思われる文字列が選択される確率が高くなり、ユーザによる修正の際の手間が少なくなる可能性がある。
【0038】
なお、本実施の形態では、テキスト上のある点をユーザがダブルタッチした場合には、その点を含むテキスト範囲を自動的に選択する。通常は、ダブルタッチされた場合には、その点を含む単語単位での選択が行なわれる。しかし、この場合にも、設定で尤度による選択を有効にしておくと、
図12に示した選択方法と同様に尤度が低い部分を選択する。なお、基準となる尤度の値は固定した値でもよいが、ダブルタッチされた点を含むより広い範囲(例えば前後の複数の単語)の尤度の平均値、又はその平均値より所定の値だけ低いような値を採用することもできる。本実施の形態では、後者の方法を採用し、かつ、前後の所定個数の単語の尤度の平均より低い連続した部分を選択するようにしている。
【0039】
図12に示す例でいえば、例えば「側」の上でユーザがダブルタッチすると、尤度による選択が無効の場合には「左側」が選択されるが、尤度による選択が有効となっている場合には、「左側にはコンビニが」が選択されることになる。
【0040】
<構成>
図2に示すタブレット端末80のハードウェア構成については
図20を参照して後述することとし、以下、
図13〜
図19を参照して、上記した操作を可能にするためのコミュニケーションプログラムのソフトウェア構成について説明する。
【0041】
図13を参照して、このプログラムのメインルーチン240は、プログラムの起動とともに実行される初期処理のステップ242と、ステップ242の完了後、イベント待ちとなるステップ244とを含む。ステップ242では、アプリケーションが使用するメモリを確保したり、メモリ領域を初期化したり、後述する様々な処理で使用されるオブジェクトのインスタンスを生成したりする。以下の説明では実施の形態の説明を明快にするため、プログラム構成のうち、本発明に直接関係しない部分については詳細に説明しない。
【0042】
イベントが発生すると、そのイベントが発生した領域又はイベントの種類がステップ245で判定され、その結果にしたがって制御の流れが分岐する。ここでは、イベントの種類としては利用者がマルチタッチディスプレイ100をタッチしたか、音声入力プログラムから音声認識結果の出力を受信したか、という2つのイベントが想定されている。マルチタッチディスプレイ100に対するタッチの場合、そのイベントが発生した領域として、テキスト表示領域104、ツールバー114、テキスト表示領域104に表示されている吹出又はコマンド吹出、キーボード入力、及びその他のイベントがある。
【0043】
テキスト表示領域104に対するタッチイベントが発生した場合には、テキスト領域処理(ステップ246。詳細は
図14。)が起動され、処理が完了すると制御はイベント待ち(ステップ244)に戻る。最終的にイベント待ちの状態に制御が戻るのは、他のイベントが発生した場合も同様である。
【0044】
ツールバー114に対するタッチイベントが発生すると、ツールバーの処理(ステップ248。詳細は
図16。)が起動される。吹出180に対するタッチであった場合には、吹出処理(ステップ250。詳細は
図18。)が起動される。コマンド吹出190に対するタッチイベントが発生すると、コマンド吹出処理(ステップ252。詳細は
図17。)が起動される。音声認識結果を受信すると、音声認識結果に対する処理(ステップ254。詳細は
図19。)が起動される。キーボード入力イベントが発生すると、そのキーボード入力に対する処理(ステップ256)が起動される。なお、吹出イベントは何らかの吹出が表示されていなければ発生しない。コマンド吹出イベント及びキーボード入力イベントについても同様である。その他のイベントが発生すると、それらイベントに対応する処理がステップ258で実行される。ここでいうその他のイベントとは、例えばマルチタッチディスプレイ100に設定画面が表示されているときにユーザ操作により発生するような多様なイベントであり、イベントごとにどのような処理を実行するかがステップ258の内部で定義されている。しかし、これらは本発明とは直接関係しないので、以下では特に詳細には説明しない。
【0045】
ユーザがプログラムを終了させるための所定の処理を実行すると、ステップ245でそれが検知され、このプログラムの実行は終了する。
【0046】
図14を参照して、テキスト表示領域104に対するタッチイベントが発生したときに実行されるプログラムは、以下のような制御構造を持つ。このルーチンでは、最初にイベントの種類を判定し、その結果にしたがって制御の流れを分岐させる。ここではイベントとしてドラッグ開始、ドラッグ継続、ドラッグ終了、タッチ(シングルタッチ)、ダブルタッチ、及びそれ以外のイベントに分類する。ドラッグ開始イベントがあると、ドラッグ開始処理(ステップ290)が実行され、ドラッグ開始位置の記録と、ドラッグに伴う表示の更新が開始される。ドラッグ継続イベントがあると、ドラッグ継続処理(ステップ292が実行され、ドラッグ位置の記録と、ドラッグに伴う画面表示の更新とが行なわれる。ドラッグ終了イベント(ステップ294)があると、ドラッグの軌跡により表されるジェスチャの形状が判定され(ステップ302)、その結果によって制御の流れが分岐する。ドラッグ終了時の処理の詳細は後述する。
【0047】
タッチがあると、タッチ処理(ステップ296)が実行される。タッチ処理では、タッチ位置にテキストの挿入ポイントを設定する処理が実行される。ダブルタッチがあると、ダブルタッチ処理(ステップ298)が実行される。ダブルタッチ処理では、ダブルタッチがあった箇所を含む単語列、又はダブルタッチがあった箇所を含む、音声認識の尤度がしきい値より低い文字列が選択される。これ以外の操作がテキスト表示領域104に対してあった場合には、それら操作に対応するイベントが発生し、ステップ300でそれらイベントに対応する処理が実行される。これらは本発明に関係しないので、ここではそれらの詳細は説明しない。
【0048】
図14のステップ302に戻り、ドラッグ終了イベントがあった場合には、ドラッグの軌跡によりジェスチャの種類が判定され、ジェスチャの種類に応じて編集方法の種類が決定されて制御の流れが分岐する。すなわち、ここで判定されるジェスチャは、全削除(
図11)、置換(
図3)、挿入(
図4)、削除(
図5)、キーボード入力による置換(
図6)、及び文字列の選択(
図10の長円202によるもの)であり、マルチタッチディスプレイ100の表示面に表示されているテキストの編集方法を決定するものである。
【0049】
図11に示されるようにテキスト表示領域104の全体に渡る大きな×点のジェスチャが検出された場合には、内部に記憶されていた入力テキストが全て削除され(ステップ310)、その結果にしたがってテキスト表示領域104の表示が更新される(ステップ312)。すなわち、テキスト表示領域104の表示がクリアされる。その後、テキスト表示領域104の先頭に挿入ポイントが設定されて音声入力が起動される(ステップ314)。制御は呼出元ルーチン(
図13のステップ244)に戻る。
【0050】
図3に示すようなテキストの置換をするためのジェスチャが検出された場合には、表示面上でジェスチャが描かれた領域と、表示面上における各文字の表示領域とを比較することで、選択位置が決定される(ステップ320)。この決定には、従来の技術をそのまま使用できる。本実施の形態では、ステップ320での選択位置の決定では、設定により2通りの処理が行われる。すなわち、ジェスチャが描かれた領域と重なる部分に表示された文字列を単純に選択する場合と、その前後の文字列で音声認識時の尤度が低い部分をともに選択する場合とである。
【0051】
ステップ320の処理の詳細について
図15を参照して説明する。選択位置決定処理では、最初にジェスチャ範囲と重複する範囲に描かれた文字又は文字列を選択する(ステップ400)。続いて、設定において尤度による文字又は文字列の選択が指定されているか否かが判定される(ステップ402)。指定されていない場合にはステップ400で選択された文字又は文字列がそのまま呼出元に返される。指定されている場合には、ステップ400で選択された文字又は文字列を含む前後の所定個数の単語の平均尤度を計算し、それをしきい値とする(ステップ404)。この尤度と、ステップ400で選択された文字列の前後に位置する文字列の尤度とを比較し、尤度がしきい値より低い、連続する文字列を選択文字範囲に追加する(ステップ406)。選択文字列が決定すると、その文字列を戻り値として呼出元のルーチンに返す。
【0052】
再び
図14を参照して、ジェスチャにより置換が指定された場合、ステップ320で対象の文字列が選択されると、その文字列に対応する内部的なテキストデータがステップ322で削除される。ステップ324では、文字列は表示として選択された文字列の表示をそのまま残しながら、例えばその文字列の表示を反転する等、表示の更新が行なわれる。ジェスチャの軌跡の表示も更新される。最後に、音声入力プログラムを起動して(ステップ326)、制御は呼出元ルーチンに戻る。
【0053】
図4に示すような挿入のジェスチャが検出された場合には、ステップ330でジェスチャの軌跡の形状に基づいて文字列の挿入位置を決定する処理が実行される。決定された位置に挿入ポイントを設定して表示を更新し(ステップ332)、音声入力を起動して(ステップ334)、制御は呼出元ルーチンに戻る。
【0054】
図5に示すような削除のジェスチャが検出されると、削除対象となる文字列を決定する処理がステップ340で実行される。この処理はステップ320で行われる処理と同一である。さらに、選択された文字列がデータから削除され(ステップ342)、削除後の文字列によりテキスト表示領域104のテキスト表示が更新され(ステップ344)、制御は呼出元ルーチンに戻る。
【0055】
図6に示すようなキーボード入力を用いて置換を指示するジェスチャが検出されると、ステップ350で置換対象となる文字列を決定する処理が実行される。この処理はステップ320で実行される処理と同一である。続いて選択された文字列がデータから削除され(ステップ352)、置換対象の文字列を反転表示させる等の表示更新処理を実行する(ステップ354)。最後に、
図6の右側に示すようなソフトキーボードを表示して(ステップ356)呼出元ルーチンに制御を戻す。ソフトキーボードが表示されていると、
図13のステップ244で発生するイベントの1つとしてキーボード入力が発生する可能性が生じる。
【0056】
図10の長円202により示すように、単に文字列を選択するジェスチャが検出されると、その長円の位置に基づいて、選択文字列が決定される(ステップ360)。この処理は、ステップ320で行われるものと同一である。続いて、選択された文字を反転する等して、選択された文字列が他と区別できるように表示を更新し(ステップ362)、制御を呼出元ルーチンに戻す。
【0057】
図2に示すツールバー114に対する操作が検出されたときに実行されるルーチン(
図13のステップ248)は、以下のような制御構造を持つ。
図16を参照して、最初にツールバー114に表示されたどのボタンに対するタッチがあったかを判定し(ステップ430)、その結果にしたがって制御の流れが分岐する。ボタンは、
図2に示すように、キーボード表示ボタン120、設定ボタン122、音声入力ボタン124、コマンドボタン126及び吹出ボタン128である。
【0058】
キーボード表示ボタン120がタッチされると、制御はステップ432に分岐し、ソフトキーボードを表示して、制御を呼出元ルーチンに戻す。
【0059】
設定ボタン122がタッチされると、制御はステップ434に分岐し、設定画面を表示して制御を呼出元ルーチンに戻す。設定画面は図示していないが、このプログラムの設定(例えば文字列選択に尤度を使用するか否か、等)を行なうための画面である。設定画面は通常の音声入力の実行時とは異なった画面となり、したがって設定画面でユーザが行なった操作によるイベントはいずれも
図13のステップ258で処理される。
【0060】
音声入力ボタン124がタッチされると制御はステップ435に分岐する。ステップ435では、音声入力プログラムが動作していれば音声入力プログラムを停止させ、音声入力プログラムが停止していれば音声プログラムを起動する。すなわち、音声入力プログラムをトグルさせる。
【0061】
コマンドボタン126がタッチされると、制御はステップ436に分岐する。ステップ436では、新たなコマンド吹出を生成する。ここでの生成とは、コマンド吹出に対応するオブジェクトインスタンスを生成することである。この処理ではコマンド吹出のオブジェクトを記憶する領域が確保され、初期化され、初期値にしたがってコマンド吹出が画面上に表示される。ここでのオブジェクト用の記憶領域には、コマンドを表す文字列を記憶する領域がある。続くステップ438で、コマンドのテキストの挿入位置を示すカーソルを画面上のコマンド吹出内に表示する。最後に音声入力プログラムをコマンド入力モードで起動して(ステップ440)、親ルーチンに制御を戻す。コマンド入力モードでの音声入力では、限定された語彙(コマンドとして予め規定されている文字列)のみを音声認識すればよい。
【0062】
吹出ボタン128がタッチされると、制御はステップ442に分岐する。ステップ442では、新たな吹出オブジェクトのインスタンスを生成する。すなわち、吹出オブジェクトのための記憶領域を確保し、初期化し、画面に新たな吹出を表示する。さらに、吹出に記憶させておくべきテキストを記憶する領域を確保し、その先頭にテキストの挿入位置を設定する(ステップ444)。それに伴い、表示された吹出の所定位置にテキストの挿入位置を示すカーソルを表示する。最後に、音声入力を起動(ステップ446)して制御を呼出元に戻す。
【0063】
図17を参照して、
図13に示すステップ252で実行されるコマンド吹出処理を実現するルーチンは以下のような制御構造を持つ。最初に、コマンド吹出で発生したイベントの発生位置の詳細が調べられ(ステップ470)、その結果により制御は分岐する。
【0064】
イベントがコマンド吹出のクローズボックス内で発生した場合には、ステップ480でテキスト表示領域104上のコマンド吹出(イベントが検出されたもの)が消去される。同時にメモリ上の当該コマンド吹出のためのオブジェクトの記憶領域が解放される。続いて挿入ポイントをテキスト表示領域104に設定して制御を呼出元に戻す(ステップ482)。
【0065】
イベントが吹出内のタッチである場合には、吹出がタッチされたことが視覚上で確認できるよう、タッチされたコマンド吹出を強調表示するよう表示を更新する(ステップ490)。テキスト表示領域104に表示された文字列の内、選択されている文字列があるか否かを判定し(ステップ492)、ある場合にはその文字列にコマンド吹出に記憶されているコマンドを適用する(ステップ494)。最後に、コマンド適用後の条件にしたがってテキスト表示領域104の表示を更新して処理を終わる。選択された文字列がない場合には(ステップ492でNO)、コマンド吹出の表示を元に戻し(ステップ498)、制御を呼出元に戻す。
【0066】
なお、コマンド吹出においても、通常のテキストの入力と同じようにテキストのドラッグ等のイベントが発生するが、それらはテキスト入力の処理と同様であるので、ここでは「他のイベント」としてステップ500でまとめて記載してある。すなわち、ステップ500ではさらに詳細にイベントの内容により処理が分岐して実行される。
【0067】
図18を参照して、
図13に示すステップ252で実行される吹出処理を実現するルーチンは以下のような制御構造を持つ。最初に、吹出で発生したイベントの発生位置の詳細が調べられ(ステップ520)、その結果により制御は分岐する。
【0068】
イベントが吹出のクローズボックス内で発生した場合には、ステップ530でテキスト表示領域104上の吹出(イベントが検出されたもの)が消去される。同時にメモリ上の当該吹出のためのオブジェクトの記憶領域が解放される。続いて挿入ポイントをテキスト表示領域104に設定して制御を呼出元に戻す(ステップ532)。
【0069】
吹出のドラッグ開始、ドラッグ継続等のイベントも発生するが、それらはテキスト入力の際に説明したものと同様であるので、ここでは他のイベントとしてステップ550で実行される他の処理として一括する。なお、ここでは吹出のドラッグ中には、吹出を指の移動に追従するように移動させるとともに、例えば半透明となるように、ドラッグ中であることが分かるよう表示する。
【0070】
イベントが吹出をドラッグする処理の終了(ドラッグ終了)である場合には、吹出のドラッグが終了したことが視覚上で確認できるよう、例えば吹出を強調するよう表示を更新する(ステップ540)。ドラッグの終了した位置を決定し、ドラッグ終了位置がテキスト表示領域104の内部であるときは(ステップ542でYES)、その位置に、吹出内に表示されていたテキスト文字列を挿入する(ステップ544)。最後に、文字列を挿入した後の入力テキストにしたがってテキスト表示領域104の表示を更新して処理を終わる。ドラッグ終了位置がテキスト表示領域104の内部でないときには(ステップ542でNO)、入力テキストに対しては何もせず、表示を元に戻して(ステップ548)、制御を呼出元に戻す。
【0071】
図19を参照して、
図13のステップ254で実行される、音声認識プログラムの出力である音声認識結果に対する処理を行なうルーチンは、テキストの記憶領域内で、テキストを挿入する位置として設定されている挿入ポイントの先頭から、前回の音声認識結果の末尾までを、今回の音声認識結果で置換することによりテキストを編集するステップ580と、ステップ580の編集後の記憶領域内のテキストで表示を更新するステップ582とを含む。本実施の形態では、音声認識プログラムは、一連の発話に対する音声認識結果を、所定時間ごとにその発話の最初から繰返し出力するため、このような処理が行われる。音声認識結果が逐語的に出力される場合には、上記したように音声認識結果を置換するのではなく、音声認識結果の末尾に新たな出力を挿入するような方式を用いることができる。
【0072】
<ハードウェア構成>
図2に示すタブレット端末80のハードウェア構成を
図20に示す。タブレット端末80は、実質的にはコンピュータであって、省電力型のプロセッサ606と、このプロセッサ606が接続されたバス604とを含む。タブレット端末80はさらに、いずれもバス604に接続されたキャッシュ608、ROM610、RAM612,ネットワーク/バスインターフェイス616、不揮発性の半導体メモリからなるストレージ614を含む。ネットワーク/バスインターフェイス616は、有線又は無線ネットワークによりインターネット602の他のコンピュータ等との間の通信を提供する。
【0073】
プロセッサ606の入出力インターフェイスには、LCD622と、LCD622の表示面上に配置されたマルチタッチパネル620と、
図2に示す押しボタン102のようなハードウェア的なスイッチ・ボタン618とが接続されている。タブレット端末80はさらに、バス604とプロセッサ606とに接続されたコーデック624を含む。コーデック624には、マイク626及びスピーカ628が接続されている。コーデック624は、マイク626からの音声信号をデジタル化し、プロセッサ606に与える機能と、プロセッサ606からの指示にしたがって、キャッシュ608、ROM610、RAM612又はストレージ614からデジタルの音声データを読出し、アナログ化してスピーカ628に与える機能とを持つ。なお、タブレット端末80は、電池と、この電池から各部に電源を供給する電源制御部とをさらに含むが、
図20においては図示していない。
【0074】
上記したコミュニケーションプログラム、このコミュニケーションプログラムと協働する音声認識プログラム、コミュニケーションプログラムを実行するCPUを制御するオペレーティングシステムプログラム、コミュニケーションプログラムの実行時にダイナミックにコミュニケーションプログラムから呼出されるプログラムツール等は、例えばストレージ614等に記憶されている。起動されると、これらのプログラムはストレージ614からRAM612にバス604を介してロードされ、プロセッサ606によって実行される。各命令の実行結果はプロセッサ606からバス604を経て所定アドレスに格納されたり、所定のデバイスに出力されたりする。
【0075】
<動作>
上記したタブレット端末80は以下のように動作する。タブレット端末80の電源が投入され、コミュニケーションプログラムが起動すると、
図13のステップ242の処理が実行された後、イベント待ちとなる(ステップ244)。何らかのイベントが発生すると、そのイベントの種類、イベントの発生個所等に応じてステップ246〜258のいずれかに制御が分岐し、それぞれ処理が実行された後、ステップ244のイベント待ちに処理が戻る。こうして、ユーザとの対話によって音声入力によるコミュニケーションが進行する。
【0076】
コミュニケーションプログラムの初期画面は
図2に示すようなものである。ここでユーザが音声入力ボタン124を押すと、
図13においてステップ244→ステップ245→ステップ248という経路で
図16の処理が実行される。
【0077】
図16においては、ステップ430→ステップ435の経路で音声入力が起動され、制御は
図13のステップ244に戻る。
【0078】
ユーザが発話すると、音声入力プログラムが音声認識を行ない、その結果を所定時間ごとに出力する。ここでは、音声入力プログラムは、所定時間ごとに、発話の最初から音声認識が終了した時点までの音声認識結果を出力する。すなわち、音声認識結果を逐次的に出力するのではなく、所定時間ごとに音声認識の開始から音声認識が終了した時点までのテキストを全て出力する。音声認識プログラムが音声認識結果を出力すると、音声認識結果の入力イベントが発生し、
図13において制御はステップ244→ステップ245→ステップ254を経て
図19の音声認識結果処理が実行される。この処理では、テキストの挿入ポイントに音声認識結果が挿入される。本実施の形態では、前回の音声認識結果があったとして、その音声認識結果は新しい音声認識結果で置換される。画面がこの結果に従って更新され、制御は
図13のステップ244に戻る。
【0079】
図3を参照して、ユーザがテキスト上で横線を引いたものとする。
図13のプログラムではステップ244→ステップ245→ステップ246を経て
図14に示すルーチンが実行される。ドラッグが開始されるときにはステップ290が実行されてステップ244に戻り、ドラッグが継続されているときにはステップ292が実行されてステップ244に戻る。こうして、ドラッグが開始された後、継続している間には
図14の処理が繰返し実行され、ドラッグに応じて画面が変化する。ドラッグが終了すると、
図13のステップ244→ステップ245→ステップ246→
図14のステップ280→ステップ294を経て、ステップ302でドラッグの形状が判定される。ここではドラッグの形状は横線で、置換に相当するので、ステップ320→ステップ322→ステップ324→ステップ326の処理で音声入力が起動され、制御は
図13のステップ244に戻る。ユーザが発話すると、その音声認識結果が音声認識プログラムから出力され、
図13のステップ244→ステップ245→ステップ254の処理を経て、挿入ポイント(置換対象の文字列)の位置に音声認識結果の文字列が挿入されていく。
【0080】
なお、ステップ320での選択位置決定の処理では、設定により、単純なドラッグ領域に基づいて処理対象の文字列を選択するか、音声認識の尤度に基づいて処理対象の文字列を選択するかが決定される。すなわち
図3のような結果となる場合と、
図12のような結果となる場合とがある。
【0081】
タブレット端末80は、
図4、
図5、
図6及び
図11に示す処理の場合も、おおむね
図3の場合と同様に動作する。
【0082】
吹出処理の場合には、
図7に示すようにタブレット端末80は以下のように動作する。ユーザが吹出ボタン128をタッチすると、
図13に示すプログラムにおいてステップ244→ステップ245→ステップ248の経路で、
図16に示すルーチンが実行される。ここで注意するのは、吹出ボタン128がツールバー114内に配置されているということである。すなわちこの場合には制御はステップ250でなくステップ248に進む。
【0083】
図16を参照して、ここではステップ430の判定の結果、制御はステップ442に分岐し、ステップ442及びステップ444によって新たな吹出が表示され、テキストの記憶領域が確保される。さらに挿入ポイントがこの吹出に設定され、ステップ446で音声入力プログラムが起動する。制御は
図13のステップ244に戻る。この後に音声入力プログラムの音声認識結果の出力イベントが発生したときには、テキストはこの吹出の記憶領域に格納され、画面上も吹出領域内に表示される。他の箇所をユーザがタッチしたり、音声入力を終了したりすると、挿入ポイントはテキスト表示領域104内に戻される。このようにして、新たな吹出に、テキスト表示領域104に表示されたテキストとは別のテキストが表示されることになる。
【0084】
図8に示すように、ユーザが吹出180をドラッグすると、制御は
図13のステップ244→ステップ245→ステップ250の経路を経て
図18のルーチンに入る。
図18を参照して、ドラッグの開始及び継続イベントはステップ550で処理され、吹出がドラッグにしたがって半透明で移動する表示が実行される。ドラッグが終了すると、制御は
図13のステップ244→ステップ245→ステップ250→
図18のステップ520→ステップ540と移動し、ドラッグの終了に応じて画面の表示が更新される。さらに、ドラッグが終了した位置がテキスト領域内であれば、その位置に吹出内のテキストを挿入し(ステップ544)、挿入結果にしたがってテキスト表示領域104の表示を更新して(ステップ546)制御は
図13のステップ244に戻る。ドラッグ終了位置がテキスト表示領域104の外であれば、何もせず表示を戻して(ステップ548)制御はステップ244に戻る。
【0085】
再び
図2を参照して、ユーザがコマンドボタン126をタッチすると、
図13において制御はステップ244→ステップ245→248→
図16のステップ430→ステップ436と移動し、新たなコマンド吹出を生成し、テキストの挿入位置をこの新たなコマンド吹出内に設定して(ステップ438)、コマンドモードで音声入力を起動する(ステップ440)。この後、制御は
図13のステップ244に戻る。この後、音声入力はコマンドモードとなり、予め定められたコマンドのみを認識することになる。
【0086】
音声認識結果が音声認識プログラムから出力されると、制御は
図13のステップ244→ステップ245→ステップ254という経路を経て移動し、認識結果のテキスト(コマンド)がコマンド吹出内に記憶され、制御はステップ244に戻る。ユーザが音声認識結果を終了させるか、テキスト表示領域104内をタッチするとコマンド吹出への音声入力は終了する。以後、ユーザがコマンドの適用対象の文字列を選択してこのコマンド吹出をタッチすると、選択文字列にこのコマンド吹出に表示されたコマンドが適用される。
【0087】
具体的には、まずユーザは対象文字列を選択する。操作としては、
図10の長円202で示すように、対象の文字列を長円で囲むジェスチャをする。すると、
図13のステップ244→ステップ245→ステップ246の経路で
図14の処理が実行される。ここでは、ドラッグの開始と継続とは他の場合と同様なので、ドラッグ終了時のみを考える。制御は
図14のステップ280→ステップ302を経てステップ360に進む。ステップ360で、ジェスチャの領域と表示されている文字列との間の関係に基づき、設定によっては音声認識の尤度を考慮して、処理対象の文字列が選択される。ステップ362ではその文字列の表示を反転する等、選択結果にしたがって表示を更新して制御は
図13のステップ244に戻る。
【0088】
文字列が選択された状態でユーザがコマンド吹出(例えば
図10のコマンド吹出190)をタッチしたものとする。すると制御は
図13のステップ244→ステップ245→ステップ252の経路を経て
図17のステップ470に進む。ステップ470の判定の結果、さらに制御はステップ490→ステップ492→ステップ494→ステップ496の経路を経て移動し、選択文字列に対し、コマンド吹出の内部に表示されていた文字列に対応するコマンドが適用され、表示が更新される。制御は
図13のステップ244に戻る。
【0089】
以上のとおり、この実施の形態によれば、音声認識の結果をリアルタイムで表示し、簡単なジェスチャによって入力テキストを編集できる。その結果、音声認識を用いて、聴覚に障害を持つ人との間でもスムーズに意思疎通を図ることができる。さらに本実施の形態では、ある種のテキスト編集処理については、その処理を呼出すジェスチャを行なうと同時に音声入力を起動する。例えばテキスト置換をする場合、置換する対象のテキストを選択するジェスチャをすると、対象テキストが選択されると同時に、そのテキストを置換するために音声入力が自動的に起動される。音声入力の結果に誤りがあったとしても、それを修正するために必要な操作が必要最小限となり、コミュニケーションをよりスムーズに進めることができる。
【0090】
[変形例]
上記した実施の形態のプログラムが持つ制御構造は単なる一例であり、使用するプログラミング言語、プロセッサのアーキテクチャ等によって変化する。音声入力結果のテキストを編集するにあたり、編集の対象を指定するジェスチャをすると、編集の対象が決定されると同時に、編集をするために音声入力が自動的に起動するという機能を実現できるものであれば、どのような制御構造であってもよい。
【0091】
上記実施の形態では、音声認識プログラムはタブレット端末80により実行されている。しかし本発明はそのような実施の形態には限定されない。音声を遠隔の音声認識サーバに送信し、音声認識結果を受け取ってそれを表示するような形式の装置に対しても本発明を適用できる。
【0092】
上記実施の形態では、テキストは左から右への横書きを例としている。しかし本発明はそのような実施の形態には限定されない。例えば上から下への縦書きでもよい。
【0093】
上記実施の形態ではテキストの置換、挿入などを指定すると自動的に音声認識が起動するが、自動的に音声認識を起動する動作モードと、自動的には音声認識を起動しない動作モードとの間で設定を切替えるようにしてもよい。
【0094】
また、上記実施の形態では、選択操作をする(例えば長円でテキストを囲む。)とテキストが選択されるだけとなっているが、本発明はそのような実施の形態には限定されない。テキストが選択されると同時に音声入力が起動するようにしてもよい。この場合、音声が入力されると、入力された音声で元のテキストを置換し、音声入力以外の操作がされると、その操作が優先され、音声入力は終了するようにしてもよい。
【0095】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。