画像を読む 03

画像データを macOSのスピーチ機能で読むプログラムを書いています。前ページでも書いたように、途中まで作りかけていたので、開発の大体の方向はありますが、最終的な形を現在考えている訳ではありません。制作ノートと思って読んでください。



スピーチ

画像データが扱えるので、取り敢えず基本的なスピーチ機能を取り付けます。macOSのシステム環境設定の、アクセシビリティにある「スピーチ」の機能を使います。Windowsでも同様の機能はあると思います。下のスクリーン・ショットのように、私の場合デフォルトで「Alex」の声にしています。



まずどんな声があるのか、メッセージ・ボックスに下のスクリプトを入れてリターンを叩くと、「male」では16行の男性の名前が返され、「female」では46行の女性の名前が返されます。mac, Windows、OSのバージョンで違います。

沢山ありすぎるので、取り敢えず特に設定しないデフォルトでやってみます。もっともシンプルに、クリックした箇所のRGB値を返す「mouseColor」と言うファンクションを使います。前回作ったイメージ「dropImage」を荒いモザイク状にして、中に下のスクリプトを書き込みます。

on mouseUp
   put the mouseColor
end mouseUp

イメージ「dropImage」の上をクリックすると、メッセージ・ボックスにクリックしたピクセルの「RGB値」を返します。この値をデフォルトのボイス(私の場合はAlex)に読ませます。イメージ「dropImage」内のスクリプトを書き換えます。「revSpeak」と言うファンクション名の後ろに、読み上げるテキストをパラメータに置きました。この場合はマウス・クリックして得られるRGB値です。

on mouseUp
   revSpeak the mouseColor
end mouseUp

これでデフォルトの声で読み上げますが、「the mouseColor」で受け取ったRGB値のカンマの位を、1000単位として読み上げてしまう場合があります。これを修正しなくてはいけないです。それと一応確認のためこのカラーと「RGB値」を表示させることにします。イメージ「dropImage」の下に、グラフィック「testColor」と、その隣に「RGB値」の数字を入れるテキスト・フィールド「tRGB」を作りました。

カンマの位を1000単位として読み上げる問題は、ファンクション「the mouseColor」が、RGB値をカンマの後にスペースがない為に起こります。そん問題は以下のスクリプトで修正しました。

  get the mouseColor
  set the backgroundColor of grc "testColor" to it
  put it into fld "tRGB"
  -- 「,」を「, 」に入れ替える(リプレイスする)
  replace comma with comma & space in it
  revSpeak it

システムの場合一つの声しか選べませんが、LiveCodeの「revSetSpeechVoice」と言うファンクションで、幾つもの声の設定ができます。

-- 男性名が返される
put revSpeechVoices("male")

-- 女性名が返される
put revSpeechVoices("female")

しかしこれではどの言語なのかわかりません。現在はシステム環境設定の、アクセシビリティで確認するしかありません。私の使用している声と言語は以下のようにしています。特徴は言語が変わると、その言語の数字で読み上げます。

-- 女性名と言語名

Kyoko, Japanese
Samantha, English
Audrey, French
Sin-ji, Chinese
Anna, German
Yuna, Korean
Milena, Russian
Kanya, Thai
Paulina, Spanish
Lekha, Hindi
Alice, Italian
Laila, Arabic
Melina, Greek

これを選んでテキストを読ませるスクリプトを書きます。オプション・メニュー(ボタン)を作って名前を「tName」として、メニューに上の女性名と言語名を入れました。下のコマンド「readText」は、他のウインドウを開けた時も使えるようにスタック「speechImage」に書き込みました。もうひとつ読み上げるスピードをコントロールする、グループ・ボタン「readSpeed」も作りました。

command readText pText
-- ボタン「tName」のレイベルのアイテム1(ボイス)をtNameに収納
   put item 1 of the label of btn "tName" of stack "speechImage" into tName
   
-- グループ・ボタン「readSpeed」の選ばれている数字をスピード「tSpeed」に設定
   put the hilitedButtonName of grp "readSpeed" of stack "speechImage" into tSpeed
   
   revSetSpeechVoice tName
   revSetSpeechVolume 130
   revSetSpeechSpeed tSpeed
   
-- パラメータ「pText」を読み上げる
   revspeak pText  
end readText




モザイク

モザイクのデータ




アーチスト:小島健治 / Artist: Kenji Kojima

アーチスト:小島健治
kenjikojima.com


クリエイティブ・コモンズ
Attribution-NonCommercial-NoDerivatives

Click and Go to PayPal

日本からのドネーションは こちらをクリック

LiveCode 6 初心者開発入門