プログラミング今日は時間が使えたので、プログラミングをしてみた。いままでの記事と趣が違うので、この記事は読み飛ばしてもらってもかまわない。最終更新日が5年前のページだが、Windows95上での音声化ライブラリ使用記というページを見つけた。このブログで紹介したVE2000の前身のソフトに、Ve98というのがある。これは、機能的にはVE2000に及ばないが、SAPI音声さえあればWinodwsXPでも動く。sapiw.dllというDLLが使われている。他のプログラムからでも、このDLLを利用するとSAPI音声を簡単に操作することができる。sapiw.dllの入手先は、VE2000の置いてあるVIPS(リンク切れ)のページ。「Windows95上での音声化ライブラリ使用記」では、sapiw.dll関連で2つの記事がある。VisualBasic4.0を利用するものと、Delphi2.0を利用するもの。このバージョンより新しいものを両方とも持っているが、Delphiの方が好きなので、こっちをやってみる。全部ダウンロードし、コンパイルしてみる。調べてみるとuses節にoleautoユニットを並べてあるが、Delphi3以降でコンパイルする場合はこれをComobjで置き換えないといけない。書き替えて、難なくコンパイル完了。「こんにちは」としゃべってくれた。ほんの少し改造してみる。Clipbrd;ボタンを押したときの処理のところを次のように書き替える。)end;他のところも、例えば、ボタンが”こんにちは”のままだから、適当に書き替える。すると、「簡易クリップボードリーダー」のできあがり。今回はできるだけ手を加えないような形で紹介したが、sapiwユニットを作って、dllの関数全部そこで宣言しておけば、以後uses節で参照するだけになるので、記述が楽になるだろう。Personalは、ここでダウンロードできる。利用するにはボーランドのサイトで、使用者登録(無料)が必要。今度ひまなときに、Dwlphi6以外のフリーのコンパイラを使った、誰でも試せる単純なプログラムを作って、ここで公開してみよう。日曜はsapiw.dllを使ったプログラミングの記事を書いたのだけど、実はあれはVE2000の改造に行き詰まって、気分転換に作ったプログラムだった。VE2000のことは、過去記事27日と28日あたり。いうわけで、VE2000をその日からいろいろ改造している。開発者のページにソースが置いてあるので、何故WindowsXPでこれが動かないのかをいろいろ調べてみようと思ったのが、今回の理由。昨日になってVE2000がWindowsXPで動かない原因を突き止めた。応急処置的なコードの書換をしてみると、ちゃんとXPで動いた。完全ではないけど、全ページの読み上げをしてくれるし、カーソルキーで読み上げる場所を移動させることもできる。リンクもちゃんと飛んでいく。完成ではないけれど、それなりにできたから作者に連絡を取ってみようかなと思った。それで、VE2000があるVipsのページを開こうとしたら、なんと、完全にページがなくなってしまっていた。月曜までは確かにあったはずなのに・・・・PC-TalkerによるIE6の簡易読みよりも高度な音声ブラウザなので、それが現在の主流のWindowsXPで使えることはとてもいいことだと思う。許可がないと公開はまずいだろうな。完成したら、開発元の盲学校に直接連絡を取らないといけないな。|2004年06月08日VE2000のXP版10日ぐらい前から、こつこつやってきたVE2000をXPで使えるようにする作業、ようやくできた。通常版とだいたい同じ機能は使えるようになった。改善しなくてはいけない問題や、付け加えたいアイデアもあるけど、一段落。自分でおもしろがって、いろんなページを読ませてみるが、落ちない。件のページ内ジャンプが使えるのはやっぱり便利だ。HPR3の操作を調べたから、似たような機能を持たせたいな。テーブル読みは是非とも実現させたい。|2005年11月16日Catwalkでこんにちは先ほどの投稿が終わってから、おもむろにKazusoftさんのCatawalkのページを改めて眺めてみると、下の方にCatwalkのSDKが公開されていることに気がつきました。試用版なのでアナウンス無しで変更の可能性があると断り書きがあるのですが、自己責任で使ってよく、CWKManip.dllは再配布可能とありますので、いろいろ遊べそうです。典嗣さんのページを参考にして作ったテストプログラムを再びCatwalk用に作ってました。Delphi6Personalで作ってみました。uses節のoleautoをComobjに置き換えて、該当する部分を以下のように書き換えます。0);end;難なく発音してくれました。定数部分は本格的なプログラミングをする場合は、ちゃんと名前で定義するべきでしょうが、SDK付属のC用のヘッダファイルを眺めて数値におこしました。Catwalkを起動させていないと使えません(スクリーンリーダーモードでなくても可)。SAPI4もしくはSAPI5の日本語音声合成エンジンが組み込まれていなくてはいけません。Catwalkがしゃべっているのか直接音声エンジンに命令しているのか分かりませんので、Catwalkのメニューから音声の設定を選び、違う音声に切り替えてみたりします。するとCatwalkのシステムがしゃべっていることが分かります。(気が向いたら開発室の方でまとめページを作ってみます。|2005年11月18日Catwalkでこんにちは(続)CatwalkSDKはいいですね。Catwalkをスクリーンリーダとして使わない場合でも、このSDKを利用したプログラムの音声設定のコントロールパネルのような存在になるわけです。SAPI5にもSAPI4にも対応していますので、かなり使い勝手がいいです。このSDKは仮仕様だそうですので、その点ご注意を。プログラムの説明の前に。振り返ってみると、このブログは最初の予定よりもかなり専門的なものへと偏ってしまっています。実際にスクリーンリーダーを使用している人たちの参考になるようなページを作りたいという思いもあったのですが、どうしても自分の趣味に走ってきます。このブログのあり方を、いい情報提供ができるようしばらく考えてみます。今回は、wx-Devcppというフリーの開発ソフトで作ってみました。Dev-C++というDelphiで開発されているフリー統合開発環境に、wxWidgetsというこれまたフリーのクロスプラットフォームなウィジェット(いろんなOSで使えるボタンとかメニューとかそういう部品のセットのようなものと考えてください。)を入れて、ボタンやメニューをマウスで簡単に配置しながら作っていける統合開発環境です。VS.NETやDelphiを使った人でしたら、それと同じようなことができる優秀なフリーの開発ソフト、それでなおかつ商用利用可能なものだと言えば分かるでしょう。以下要点だけを書くとこうです。Frameの新プロジェクトを作ります。開発フォルダをマイドキュメントあたりに指定してウィザードの指示通りすすんでいくと、自動的にCPPファイルやヘッダファイル、フォームの情報が書かれたwxformファイルなどが画面に表示されます。allですべて保存します。開発フォルダをエクスプローラで開き、そこにcatwalkSDKのヘッダファイル、ライブラリファイル、そしてDLLをコピーします。本格的な開発をする場合は適切な場所がいいでしょうが、今回はテストなので、同じフォルダに放り込んでしまいます。Dev-C++の画面に戻って、フォームのCPPファイル(helloFrm.cpp)を開き、ファイルの最初の方に次のインクルードファイルの指定を入れます。"CWKManipDll.h"次にwxformファイルを開き、そこでボタンを配置します。ボタンのlabelプロパティを「こんにちは」に変更します。ボタンのクリックイベントに対して新しい関数を作成します。WxButton1Clickという感じの名前になるでしょう。この関数の内容を次のようにします。CatwalkSimpleSpeechA("こんにちは",CWVOICE_READING,SPCHFLAG_NOTSTOP,CWPRIORITY_NORMAL);ファイルの編集は以上です。次に、ライブラリの登録をします。object」ボタンを押して、先ほど放り込んだlibファイルを登録します。これでCatwalkを起動させた環境で、コンパイルし実行すると、「こんにちは」と言ってくれるはずです。(以上の工程は時間ができたら後で開発室でわかりやすくまとめます。)Dev-C++には思い入れがあります。3年ほど前から自家製の日本語版を作って自分だけの日本語開発環境を作って遊んでいたことがあります(これも発表していませんでしたけど)。今ではいくつかの場所で日本語化されたDev-C++が公開されているようです。これもいつか開発室のページにまとめる課題にしましょう。ボーランドという会社から出ているプログラムを作るソフト。一般的なのはマイクロソフトが出しているVisualStudioシリーズ。マイクロソフトからも2005年ぎりぎりにVisualStudio2005が出たけど、無料のexpress版があるから、それで遊べばいいやと思って、こっちを買った。製品版はC++Builder2、Delphi5以来だと思う。仕事で使うというわけでもないから、お気軽に新しいDelphiで遊んでみようかというわけでこちらを手に入れた。遊ぶにしては高い買い物だw。以前作っていたのを入れてみたらちゃんとビルドできた。プログラミング言語で記述された設計図からちゃんとパソコン上で動くプログラムができた。4.9.9.2のソースコードを持ってきて、ビルドしてみた。何も考えずにやってみたので、一発目ではもちろんエラーが出たけど、インクルードファイルやパッケージファイルに、Delphi2005用の記述を追加したら、すんなりできあがった。なんかとてもうれしい。Dev-C++というのは、このブログで一度書いたけれど、無料で手に入れることができるプログラムを作るソフト。機能の差はあるけれど、今度買ったBDS2006と同じようなことをするソフト。何万円もするソフトを買って無料の似たようなものを組み立ててみて喜んでいるのはなんか変な感じがするんだけど、まあいいか。睡眠時間削って、することじゃないのかもしれないけれど、感無量。最近中途半端なことばかりしています。今回はSkypeAPIについて調べてみました。普通ならC++なんでしょうが、Delphiでできるかどうかやってみました。参考にしたのは、http://itpro.nikkeibp.co.jp/のサンデー・プログラマのためのSkype入門の連載。会員登録しないと全部読めないかもしれません。これによると、Winodwsメッセージを使っているSkypeAPIを直接操作するよりも、ActiveSというラッパーで操作した方が楽なのでそうで、それをインストールしました。ActiveSが配布されているのは、KhaosLabs。メニューのProductsからたどっていって入手し、インストールします。インストールすると、ActiveXコンポーネントとして登録されます。C#で利用する場合は上記の連載にしたがってください。Delphi2006で使えないかと思っていろいろ調べてみました。最終的にツールパレットの中にこのコンポーネントをいれなくてはいけません。いままではパッケージライブラリ(*.bpl)を取り込んだことははあるのですが、今回は何もないので苦労しました。これが最善なのかは分かりませんが、とりあえずできたので、その方法を残しておきます。新規作成でパッケージを作ります。プロジェクトマネージャーにProject1.bplというファルが現れるので、これをいったん保存します。適当な場所にフォルダを作って保存します。名前はActiveSとしておきます。これでプロジェクトマネージャーに表示されていたファイルがActiveS.bplになります。次にメニューバーのコンポーネントメニュー中のコンポーネントのインストールを選びます。コンポーネントの種類を「ActiveXコントロールの取り込み」として次へボタンを押します。すると登録されたActiveXコントロールの一覧が表示されるので、その中からActiveSを選択し、次へボタンを押します。コンポーネントの名前などを設定する画面が現れるので、パレットページ名をActiveSにしておきます。他の名前でもかまいませんが、この名前がツールパレットの分類名になります。コンポーネントラッパーの作成はチェックでいいと思います(よくわかりませんが)。次へボタンを押して、ユニットの作成チェックして、完了ボタンを押します。このファイルをいったん先ほどのプロジェクトを保存した場所に保存します。そのあとプロジェクトマネージャーのActiveS.bplの上で右クリックでメニューを出し、追加を選びます。出てきた参照ボタンを押したあと、先のSKYPEAPILib_TLB.pasを選んで、追加します。プロジェクトマネージャーのActiveS.bplの上で右クリックをし、メニューの中にあるインストールを選びます。これで自動的にコンパイルされ、コンポーネントがインストールされます。新しいコンポーネントはツールパレットの一番下に追加されます。以後、フォームを作るとき、ツールパレットからActiveSコンポーネントを選ぶことができるようになります。あとは、上記のITProの連載なりを参考にすればプログラムが作れます。Wrapperを使ってみる」の4ページ目のC#のプログラムはこんな感じになるでしょう。フォームへのコンポーネントの配置、オブジェクトインスペクタ上でラベル名の付け替え、イベントの割り当てなどの作業が必要になります。APIsに、sapi.zipというファイルが置いてあった。ライセンスはMPL1.1。APIのインターフェイスとなるspeech.pasが入っている。API)は、4.0のみ対応。SAPI4.0というのもあれだけど、簡単にできそうなのでしばらく、これを使って遊んでみよう。日本語SAPI4.0対応音声合成エンジンが既にインストールされている必要がある。スクリーンリーダやホームページリーダがインストールされていればまず大丈夫。持っていなければ、ドキュメントトーカを購入するという方法もある。参考になるのは、このZIPファイル内のDEMOSフォルダの中のサンプルプログラム。SDK/Document)。どちらにしても英語の文章を読まないといけない。このspeech.pasを使うときは、作っているプロジェクトのフォルダの中に放り込んで、uses節にspeechを追加する。作ってみたのは、自分のパソコンに入っているSAPI4対応音声合成エンジンを調べるプログラム。今回は(スクリーンリーダーを使わないならば)何もしゃべらない。このプログラムの実質はFormCreateプロシージャ内のコード。マイクロソフトのSAPI4のCOMのドキュメントをそのまま参考にして、Delphiでも作っていけそう。|2007年06月21日CS3がもうすぐ届く。これに合わせて昨日ショップから22日到着予定とのメールが届いた。僕はいままでフォトショップもイラストレータも買ったことなかった。今回はいろいろ考えて買ってみることにした。素直に製品版を買うなんてことは、いくらなんでも高すぎてできないけれど、先年アドビに買収されたマクロメディアの製品をもっているので、アップグレード版を予約購入できた。今回のCS3では、とても多くの製品が発売される。COLLECTION※下記「早わかり表」よりそして、それぞれにWindows版とMac版がある。それぞれにアップグレードするための製品もある。HANDからイラストレータに乗り換えるための製品などもある。その上、ADOBEのオンラインストアでは、日本語か英語の選択肢まである。スイートの詳しい構成内容は、次のページで確認。CS3そして、アップグレードの早見表がこれ。アップグレード早わかり表このページを見ながらいろいろ悩んだ。STANDARD以外の5つの統合製品。ホームページを作るために買うのだから、三つに絞られる。PREMIUMのどちらかということになる。PREMIUMに入っているフォトショップとイラストレータも捨てがたい。アクロバットプロもあったらあったでうれしい。金はないんだけれど、この二つとアクロバットプロが、6万の差額で手にはいるというのはとても魅力的。足りないものを単品で買い足すと28万にもなるんだ。将来買い足すってことがあるのか。だまされるな、これは22万円の得ではなく、6万円の損なのではないのか。結局この誘惑には勝てなかった。4年ぶりの購入だから、この出費は許容範囲だと自分を納得させている。11万の無駄にならないようにと自分を戒めている。PREMIUMアップグレード版、到着。システム要件ではねられた。RAMは1G以上必要だった。今からじゃメモリ買いに行けないし、明日までおあずけ。英語版FlashCS3の体験版がちゃんと動いていたから、全然考えもしなかった。単品とは要件が違うのね。(06/28)OpenJTalkの共有ライブラリを作ってみました。追加しました(03/14)点字タイプ入力ソフトに、テンキー点字入力機能を追加しました(11/13)OpenJTalkの共有ライブラリを作ってみました。2.0QRコードSeesaaブログ。