HOME > アクセシビリティ > 指文字表示装置
2026.1.5 -

指文字表示装置

小山智史

1. 概要

 盲ろうの方のコミュニケーション手段として点字や指点字や指文字が用いられます[1]。情報機器が利用できるようになれば、遠隔でのコミュニケーションや情報の入手に大きな進展が期待されることからさまざなま検討が行われています。

 ここでは、指文字表示装置を使ったコミュニケーションツールを検討してみました。

 指文字表示装置が実現すれば、遠隔地の方との指文字コミュニケーションや、インターネットからの情報入手などが可能となります。いくつかの表示装置が開発され[2][3][4]、特にTATUM[4]は完成度が高いように見受けられます。

 これまでの指文字表示装置は、実際の手の形や動きに近づけるために、多くのサーボモーターを使っていて(例えばTATUMでは15個)、結果、大きく重くそして複雑な装置となっています。ここでは、5指に対応する5個のサーボモーターを使い、簡素な指文字表示装置を試作しました。「符号化」に着目し、指文字をなるべく模擬しつつ、互いに識別できるような指文字の形にしました。正確には「指文字符号表示装置」と表現した方がいいのかもしれませんが、ここでは「指文字表示装置」とします。装置本体の重さは56gです。モバイルバッテリーで動作し、ポケットに入る程度の大きさです。

 なお、指文字とは別に指点字があり、指点字も支援者との間で指に直接触れながら用いられます。指点字の入出力装置はグローブを用いたものが複数開発されており、一部実用化されているようです[5]。

2. 指文字符号

 まず、親指~小指の5指のそれぞれを伸ばすか曲げるかで文字を表現することを考えます。図1左は「あ」の指文字ですが、親指を伸ばし(0)人差し指~小指を曲げる(1)ので、「01111」と2進5桁の符号語で表現することができます。各指の伸ばし(0)と曲げ(1)の組み合わせで表現できるのは、2進5桁では00000~11111の32通りにとどまります。


図1. 「あ」の指文字(左)と「か」の指文字(右)

 これを拡張するひとつの方法は、手の向きなどもう1桁増やすことで、そうすれば64通りの文字を表現することができます。6点で構成される点字に相当する表現能力となります。

 ここでは桁を増やさずに、親指~小指の5指のそれぞれを3つの曲げ角度、すなわち指を伸ばす(0)、指を小さく曲げる(1)、指を大きく曲げる(2)のいずれかをとるように拡張することを考えます。図1左の「あ」の指文字は、親指を伸ばし(0)、人差し指~小指を大きく曲げる(2)ので、「02222」と3進5桁の符号語で表現することになります。図2右の「か」の指文字は、親指を小さく曲げ(1)、人差し指と中指を伸ばし(0)、薬指と小指を大きく曲げる(2)ので、「10022」となります。各指の曲げ角度の組み合わせで、3進5桁では00000~22222の243通りの表現が可能となります。

 このように、指文字の形ををなるべく模擬するように、あいう..., ABC..., 012...のそれぞれの文字の符号語を作成しました。これをここでは指文字符号と呼びます(付録1)。指文字には、手の向きや動きなど、指の曲げ角度だけでは表現できない文字が多数あり(表中の * 印)、同様のことは[2][3]にも記載されています。試作した表示装置では、これらの文字に付録1の表のような符号語を割り当てていますが、これは暫定的なものであり、今の段階では検討の対象外とします。

3. 指文字表示システム

 上記の考えのもとに、5個のサーボモーターからなる指文字表示装置を作り、Webアプリで制御するシステムを開発しました(図2)。

 図左は、指文字表示装置とパソコンをUSB接続し、パソコンのWebブラウザで操作する様子を表しています。図右は、スマートフォン(Android)とBLE(Bluetooth Low Energy)接続した様子を表しています。パソコンやスマートフォンでは、Webサーバに置かれた指文字表示Webアプリをブラウザで表示して操作します。


図2. 指文字表示システムの構成

 Webアプリ(fingercode.html)はサーバではなくパソコン上に置いてもよいので、利用者がアレンジすることも可能です。

4. 指文字表示装置

 試作した指文字表示装置の1号機と2号機は図3のようなものです。5個のサーボモーターで各指の曲げ角度をコントロールしています。指はサーボモーターのホーンにビニールチューブを固定した簡素な作りになっています。


図3. 指文字表示装置2号機の外観(左)と内部(右)

 主な仕様を表1に示します。また、回路図とケースの加工図は付録2に記載します。

表1. 指文字表示装置の主な仕様
項目1号機2号機
外観
サーボモータ GWS servo PICO 5個
(重さ5.4g トルク0.7kgcm)
DM-S0020 5個
(重さ2.1g トルク0.2kgcm)
ケース PET樹脂板に固定 Takachi SW-95
本体の大きさ 18cm×13cm×1.8cm 15cm×12cm×1.8cm
本体の重さ 62g 56g
サーボモータのホーンに6mmφ長さ4~6cmのビニールチューブを固定
スマートフォンやパソコンとの接続 USB接続またはBLE(Bluetooth Low Energy)接続
電源 USB接続の場合はパソコンより供給
BLE接続の場合はモバイルバッテリー
指の曲げ角度 アプリ上で設定
指文字の表示速度 1文字の保持時間をアプリ上で設定(0.5~1.5秒)
制御用マイコン Seeeduino ESP32-S3
開発環境と制御プログラム Arduino IDE 2.3.7, Adafruits TinyUSB, Arduino-BLE-MIDI, ESP32servo 3.0.9
webio2_ESP32.ino(WebIO2のプロトコルは付録3)
ArduinoIDEで[ツール][USB-Mode]をUSB-OTG(TinyUSB)にして書き込む。

(注意) BLE接続の場合、現時点では接続が途切れることがあり、動作が多少不安定でした。また、ESP32servoは新しいバージョンではdetachがうまく動作しないので3.0.9を使用します。

5. 指文字表示のWebアプリ

5.1 アプリの概要

 指文字表示装置に指文字を表示するアプリを作成しました(表2)。

表2. 指文字表示Webアプリ
項目内容
Webブラウザ WebMidiAPIを利用できるブラウザ
BLE(Bluetooth Low Energy)接続の場合はWebBluetoothAPIを利用できるブラウザ
(Can I useで確認できる)
動作の確認はパソコン(Windows11)のChromeブラウザとスマートフォン(Android)のChromeブラウザで行った
操作用Webアプリ fingercode.html, wordlist.js, webio2.js(WebIO2のプロトコルは付録3)
指文字符号 付録1に記載
操作対象 ブラウザが動作しているパソコンやスマートフォンに接続した装置
指文字表示の速さ 1文字の保持時間 0.5~1.5秒
指の曲げ角度のプリセット機能 各指 伸ばした状態(0)と大きく曲げた状態(2)それぞれについて0~180度で設定
小さく曲げた状態(1)はその中間値とする
ホームポジションは伸ばした状態から1/4曲げた位置とする

5.2 指文字表示装置の接続操作

 このページ冒頭のボタンを押すと、指文字表示アプリが起動し、USB接続の時は図5左の画面が現れるので、「許可する」のボタンを押します。画面左上に接続された装置の名称が

のように表示されます。

 BLE接続の時は、画面上のボタンを押すと、図5右の画面が現れるので、装置を選択し「ペア設定」のボタンを押します。画面左上に接続された装置の名称が

のように表示されます。

 装置はパソコンからはMIDIデバイスとして認識されるようになっています。もしも図の接続許可の画面が現れない場合は、ブラウザの設定を確認します。Chromeの場合は[設定][プライバシーとセキュリティ][セキュリティ][サイトの設定][koyama.verse.jp][MIDIデバイスの操作と再プログラム]が「ブロック」になっていれば「確認(デフォルト)」または「許可」に変更します。


図5. ブラウザの初期表示画面(左はUSB接続時, 右はBLE接続時)

5.3 各指の角度の調整

 接続後のブラウザの操作画面は図6左のようになります。

 初回はサーボモーターの動作角度を設定します。ページ末尾のボタンを押すと、図6右の表示になり、各指の伸ばした状態(0)と指を大きく曲げた状態(2)の角度を画面のスライダーで調整します。小さく曲げた状態(1)とホームポジションについては、表2のように自動的に決まります。各指の調整を終えたら、ボタンを押します。設定は異なる装置の接続を考慮しデバイス1~デバイス3の3パターンを登録できます。設定値はブラウザに保存されるので、別のパソコンやスマートフォンで使う場合は改めて設定する必要があります。


図6. ブラウザの表示画面

5.4 指文字の表示

 入力欄に文字を入力し(図では「あいさつ」)、ボタンを押すと、指文字表示装置は1文字ずつ指文字の形に変化し、利用者はこれを触って読み取ります。ブラウザ画面にも、指の動きに連動して指文字の形が表示されます(図7)。


図7. ブラウザの表示画面

 指文字表示の速さ(1文字の保持時間 0.5~1.5秒)はスライダーで調整できます。途中で停止する場合はを押します。

 指文字の形と画面表示は図8のようになります。全部の文字を表示し終えると、装置はホームポジションの位置になります。

(1号機)
(2号機)
02222
「あ」
02220
「い」
02220
「さ」
11000
「つ」
図8. 「あ」「い」「さ」「つ」の指文字とコード

 以下は動作の様子です。

動画1. 1号機
動画2. 2号機

 市販のSainSmart社製の5フィンガーでも試してみました。回路もソフトも共通なので、サーボモーターを配線しなおすだけでそのまま動作します。指の動きは多少リアル感がありましたが、手で触れた時に形を保持できませんでした。

動画3. 5finger

 5フィンガー以外にも指の動きをコントロールできる装置はいくつか市販されているようですが、指文字の「識別」を優先して考えた場合は、リアルさを追及する必要はないと考えています。

5.5 単語のランダム表示

 練習用、あるいは評価用に、有意味の単語1語および10語をランダム表示する機能を設けました。登録されているのは「あいさつ」「えき」「きいろ」など2~4文字からなる193語で、付録1の*印の文字は含まれず、1語中に同じ文字も重複していません。また、濁点や半濁点や「ー」は含まれず、「っ」「ゃ」「ゅ」「ょ」の拗音はそれぞれ「つ」「や」「ゆ」「よ」としました。

 ボタンを押すと、入力欄にランダムに1語が表示され、再生が開始します。ボタンを押すと、連続して10語が表示されます。語と語の間はいったんホームポジションに移動します。

6. 想定される読み取り速度

 TATUM[4]では毎秒1文字程度が想定されているようなので、ここでも保持時間を0.5~2秒で設定できるようにしました。

 他の方式と比較したものが表3です。比較といっても実際に実験したわけではなく、計算値や文献に紹介されている値を並べてみただけなので、目安にすぎません。

表3. 想定される読み取り速度の比較
方式 読み取り速度備考
指文字装置 毎分60文字 保持時間を1秒とした時
モールスバイブレーション 毎分25文字 dotを 200ms とした時の「あ」~「ん」の単純平均
(モールス通信は毎分50~150文字程度)
点字バイブレーション 毎分18文字 dotを 200ms とした時
点字 毎分100~300文字

7. 今後に向けて

 今はようやく表示装置やアプリが動作するようになった段階です。私自身、これまで盲ろうの方と接することはなかったので、今後、当事者や支援者の方々のお話を伺いながら、改善していきたいと思っています。

(1) 指文字表示装置の改良

 装置は、指文字の形を読み取りやすいように工夫を重ねる必要があります。

 その際、指文字の特徴を認知しやすいような工夫が重要です。形状や動きの忠実さを追及すると、装置が複雑になり高価になってしまうので、現状(5個のサーボモーター)の範囲で検討したいと思っています。一方で、5フィンガーのように安価な装置も市販されるようになったので、今後利用できる装置が増えてくれることを期待しています。

 なお、現在は指の曲げ角度を大きく変化するように設定していますが、実際の使用時には「識別できる程度に」小さくしても構わないように思います。

(2) 符号語の割り当て

 実際の指文字は手の向きや回転や動きなど複雑ですから、5指の曲げ角度だけで忠実に表現できるわけではありません(付録1の表中*印)。この表では、*印の符号語を「指文字となるべく近い形」になるように暫定的に決めています。一方で、「他の符号語となるべく違う形」になるように符号語を決めて識別しやすくするという考え方もあります。

 この表は十分に検討したものではありませんので、今後検討を重ねて、変更すべき箇所は変更する必要があります(特に*印)。

(3) 指文字入力装置

 ここに記載したのは「指文字表示装置」ですが、今後は「指文字入力装置」も検討したいと思っています。3元符号化で指文字の表現を簡素化することで、指文字を模擬した入力装置も作れるのではないかと考えています。

 入力装置と出力装置を合体できれば、盲ろう当事者同士が指文字を使って遠隔でコミュニケーションをとることも可能になります。

 ...

 検討課題はたくさんありますが、いつか、このような装置をポケットに入れて、移動先でメールを読んだり書いたりできる日がくるといいのですが。

(謝辞) このページおよびWebアプリでは、ちびむすドリルさんで公開されている指文字のイラスト[6]を許可を得て使用しました。ご快諾に感謝申し上げます。

(参考資料)

[1] 河村(編): 盲ろう者と触手話, 国立リハビリテーションセンター, 2005
[2] 關, 森, 横井: ろうベースの盲ろう者の自立した情報獲得を目指した触指文字ロボットの開発, WIT2016-87, 2017.
[3] 安, 濱, 中津, 村岡: ホビー用ロボットハンドを用いた指文字表現, IPSJ Vol.2018-AAC-8 No.6, 2018.
[4] S.Johnson, et.al, An Adaptive Affordable Open-Source Robotic Hand for Deaf and Deaf-Blind Communication Using Tactile American Sign Language, IEEE EMBC 2021.
[5] 山蔦: Ubitone~盲ろう者用携行型生活支援・コミュニケーションデバイス, 新ノーマライゼーション, 2023.
[6] 手話の指文字表, ちびむすドリル, https://happylilac.net/sk1805311413.html


付録1. 指文字コード表(別ページはこちら)

 親指~小指の5指のそれぞれが3つの曲げ角度(0,1,2)のいずれかをとるとすれば、00000~22222の243通りの表現が可能です。これを符号語と考え、指文字の形ををなるべく模擬するように、あいう..., ABC..., 012...のそれぞれの文字をあてはめたものが下表です。手の向きや動きなど、指の曲げ角度だけでは表現できない文字が多数あり、表中の * 印は暫定的に割り当てたものとなります。

付録2. 技術情報


(1) 全体図


(2) ケース加工図


(3) 回路図

付録3. WebIO2のプロトコルの抜粋(MidiのSysEX拡張プロトコル)

機能 send(PC → I/O) receive(I/O → PC)JavaScript関数備考
byte1byte2byte3 byte1byte2byte3
analogWrite
servo
motor
11110000(F0)
01111111(7D)
01101111(6F)
00pppppp
0vvvvvvv
0vvvvvvv
11110111(F7) analogWrite(pin, val)
servo(pin, val)
servo(pin, val, t)
pin 0~63 を 0-255 に
pin 0~63 のサーボモーターを 0-180 に
tを指定した場合はt[ms]後に停止
analogRead 11110000(F0)
01111111(7D)
01101111(6F)
00pppppp
0vvvvvvv
0vvvvvvv
11110111(F7) analogRead(pin) pin 0~127 の値 0-1023
(20ms毎に更新)
pinMode 11110000(F0)
01111111(7D)
01110000(70)
00pppppp
0100mmmm
11110111(F7) pinMode(pin, mode) pin 0-63 のpinModeをmode 0-15 に
digitalWrite 11110000(F0)
01111111(7D)
01110000(70)
00pppppp
0000000v
11110111(F7) digitalWrite(pin,val)
digitalWrite(pin,1,t)
pin 0-63 を 0/1 に
tを指定した場合は t[ms] 1に
digitalRead 11110000(F0)
01111111(7D)
01110000(70)
00pppppp
0000000v
11110111(F7) digitalRead(pin) pin 0-63 の値 0/1
(20ms毎に更新)
SystemReset 11111111(FF) ioreset() SystemReset

[servoCheck] [モールスバイブ] [点字バイブ] [イメージバイブ]