秀丸リーダーの音程を変える"+","-"についNo.24380
K'zawa さん 08/01/28 11:59
 
秀まるおさん、こんにちは。
K'zawaです。

秀丸リーダーで、音程を変えて読ませる場合、

ddeexecute "+!あああ";

のようにし、また、webの履歴ページには、
PC-Talkerでも出来るようにしたとありますが、
うまくいきません。
いろいろ調べて、一つ気になった点があります。
それは、PC-Talkerが命令をマルチ処理していることです。
もし、秀丸リーダーが、

1.音程を上げろ
2.文字列を読め
3.音程を下げろ

という3命令をそのまま連続して送信しているとすると、
PC-Talker側は、1と3が一瞬で終わる、
結果、音程は元に戻ってしまう。
と考えられますが、秀丸リーダーの使用はどうなっているでしょうか?

秀丸リーダー Ver2.00
PC-Talker-XP Ver2.04

[ ]
RE:24380 秀丸リーダーの音程を変える"+",No.24381
秀まるお2 さん 08/01/28 12:13
 
 調べてみたら、たしかにK'zawaさんの書かれていく通りの処理をしていました。

 しいて直すとしたら、

1.音程を上げろ
2.文字列を読め
3.音程を下げろ

 とやっている処理を、

   "+"なら「音程を上げろ、文字列を読め」
   "-"なら「音程を下げろ、文字列を読め」
   "+"も"-"も無ければ、「音程を普通にしろ、文字列を読め」

 という風に直すとか…。ただしそれだと"+"で読んだ後に他のソフトで音を鳴
らした時にも音が高くなってしまいます。それを防ぐためには、例えば1秒間隔
で定期的にタイマーをかけて、そのタイマーの処理の中で、

 「音が鳴ってなければ音程を普通に戻す」

 って処理をする手がありますけど…。

 テストにご協力いただけるなら、そういう処理をやってみたい所ですけど。

 どうしましょ?

[ ]
RE:24381 秀丸リーダーの音程を変える"+",No.24382
K'zawa さん 08/01/28 14:16
 
秀まるおさん、こんにちは。
K'zawaです。

>   "+"なら「音程を上げろ、文字列を読め」
>   "-"なら「音程を下げろ、文字列を読め」
>   "+"も"-"も無ければ、「音程を普通にしろ、文字列を読め」
>
> という風に直すとか…。ただしそれだと"+"で読んだ後に他のソフトで音を鳴
>らした時にも音が高くなってしまいます。それを防ぐためには、例えば1秒間隔
>で定期的にタイマーをかけて、そのタイマーの処理の中で、
>
> 「音が鳴ってなければ音程を普通に戻す」
>
> って処理をする手がありますけど…。
>
> テストにご協力いただけるなら、そういう処理をやってみたい所ですけど。

出来る限り協力します。

いろいろ考えるとタイマーのほうがいいと思います。
互換性を考えて「+/-」はそのままにして、
3つ新記号を設定します。
1、音程を上げ、読み終わり監視、終わったら音程をもどし、
  次のマクロコマンドへ進む
2.音程を下げ、(以下同文)
3.音程は通常、読み終わり監視、終わったら次のコマンドへ進む

他のスクリーンリーダーへも話が広がってしまいますが…。

95Reader系でも、音程ではないですが、
連続して3回以上ddeexecuteすると、
間の分はなくなってしまいます。

ddeexecute "!あいうえお";
ddeexecute "!かきくけこ";
ddeexecute "!さしすせそ";

とすると、「あいうえおさしすせそ」のように
最初と最後だけが読まれます。
これもタイマーで読み終わりを監視して
それまでマクロを待たせておけば解決すると思います。

マクロが待ってくれると読み上げとのシンクロができるので、
前文読みマクロ等の開発が楽になります。

このようなアイデアはどうでしょうか?

[ ]
RE:24382 秀丸リーダーの音程を変える"+",No.24383
秀まるお2 さん 08/01/28 14:53
 
 とりあえず直す前に一度確認しようと思って、普段のテストマシン
(Windows98 + PC-Talker 1.2.1)でテストしたら、その環境では"+"、"-"は期
待通りに動作するようでした。

 例えば

    ddeinitiate "HidemaruReader", "Read";
    ddeexecute "+!たかいおと";
    ddeexecute "-!ひくいおと";

 で、うまく「たかいおとひくいおと」と、音程も正しく一気に発音してくれま
す。

 PC-Talkerのバージョンによって動作が違うってことかと思います。

 PC-Talker Ver:3っていうCD-Rが届いているので、それをWindowsXPマシンにイ
ンストールしてテストしてみます。少々お待ちください。

[ ]
RE:24383 秀丸リーダーの音程を変える"+",No.24384
秀まるお2 さん 08/01/28 15:40
 
 PC-Talker Ver:3をインストールしたら、たしかに音の高さが期待通りになり
ませんでした。どうもPC-Talkerのバージョンアップによってこの辺の動作が変
わってしまったようです。

 なんとか直してみます。

[ ]
RE:24384 秀丸リーダーの音程を変える"+",No.24385
秀まるお2 さん 08/01/28 16:42
 
 いろいろやってみたんですが、うまくいきませんでした。そもそも、「今現在
音声を出してる最中かどうか」って調べることがうまく出来ないです。

 あと、PC-Talker Ver:3だと、音声化の指示をした物が絶対に全部音声と出て
くるようで、例えばカーソルを「上移動、下移動」のような操作を10回やると、
その移動した間の文字列を10必ず読み上げます。これはこれで便利になったの
かもしれませんが、不便という気もします。「今現在読み上げてる内容を取り消
して、これから指示したのだけ読んでくれ」と指示したい所ですが、そういう
APIがあるのかどうかもよく分かりません。

 というか、今現在のAPIも、昔々に高知システムさんから送ってもらったヘッ
ダファイルがあるだけで、使い方がよく分からなくなってしまいました。

 一度高知システムさんに問い合わせてみます。

 ということであまり期待しないでお待ちいただきたいと思います。

[ ]
RE:24385 秀丸リーダーの音程を変える"+",No.24386
K'zawa さん 08/01/28 17:39
 
秀まるおさん、こんにちは。
K'zawaです。

> いろいろやってみたんですが、うまくいきませんでした。そもそも、「今現在
>音声を出してる最中かどうか」って調べることがうまく出来ないです。
>
> あと、PC-Talker Ver:3だと、音声化の指示をした物が絶対に全部音声と出て
>くるようで、例えばカーソルを「上移動、下移動」のような操作を10回やると、
>その移動した間の文字列を10必ず読み上げます。これはこれで便利になったの
>かもしれませんが、不便という気もします。「今現在読み上げてる内容を取り消
>して、これから指示したのだけ読んでくれ」と指示したい所ですが、そういう
>APIがあるのかどうかもよく分かりません。

PCTKUSR.dll or LIBを利用して、
PCTKGetVStatus関数を使うんじゃないかと思いますが。

ActiveBasicと言うフリーのプログラミング言語で、

    While PCTKGetVStatus() = TRUE
        Sleep( 50 )
    Wend

とかやったら読み終わるまで待ちます。

95Reader系では、SoundStatus関数ですね。
こっちはLIBしか付属してなくて、
ActiveBasicでは使えずためしてませんけど。

[ ]
RE:24386 秀丸リーダーの音程を変える"+",No.24392
K'zawa さん 08/01/28 22:36
 
> あと、PC-Talker Ver:3だと、音声化の指示をした物が絶対に全部音声と出て
>くるようで、例えばカーソルを「上移動、下移動」のような操作を10回やると、
>その移動した間の文字列を10必ず読み上げます。これはこれで便利になったの
>かもしれませんが、不便という気もします。

さっきは読み流してしまいましたが、
こちら(Ver2)では、キーを押したとたんに、それまでの音声は切れます。
ですから最後にカーソル行だけちゃんと読みます。
それがVer3では変っているということでしょうか?

[ ]
RE:24392 秀丸リーダーの音程を変える"+",No.24395
秀まるお2 さん 08/01/29 10:41
 
 高知システムさんから最新のAPI関係ファイルを送ってもらって、それを見た
ら、例えば「今現在音声化中かどうか調べる」とか「今現在の音声化を取り消
す」みたいなことが出来ることは確認出来ました。

 今ちょっと秀丸メールの方も平行して仕事してるので、ちょっとこちらの作業
は中断しています。いろいろテストマシンも都合付けないといけないので大変で
して。

 しばらく待ってて欲しいです。

[ ]
RE:24395 秀丸リーダーの音程を変える"+",No.24397
K'zawa さん 08/01/29 11:42
 
秀まるおさん、こんにちは。
K'zawaです。

> 今ちょっと秀丸メールの方も平行して仕事してるので、ちょっとこちらの作業
>は中断しています。いろいろテストマシンも都合付けないといけないので大変で
>して。
>
> しばらく待ってて欲しいです。

はい、待ちますとも。
こちらは2年ぐらいかけてだらだら調べた結果を今頃報告しているという状況で
すので、いまさら急ぎません。

[ ]
RE:24397 秀丸リーダーの音程を変える"+",No.24404
秀まるお2 さん 08/01/30 14:44
 
 一応、タイマーを使って音程を元に戻すのを遅延させる作戦でなんとかうまく
動作するようになったと思います。

http://www.hidemaru.interlink.or.jp/software/bin/hmread201b1_signed.exe

 これでとりあえず

   ddeexecute "+!たかいおと";

 みたいなのはうまく動作します。しかし、

   ddeexecute "+!たかいおと";
   ddeexecute "-!ひくいおと";

 とやると、低い音で「たかいおとひくいおと」が発音されてしまいます。これ
は仕方がないということでお願いします。

 あと、PCTKGetVStatusがうまくいかなかったりしたのは、たまたまPC-Talker
の調子が悪かっただけみたいな気がします。

[ ]
RE:24404 秀丸リーダーの音程を変える"+",No.24405
K'zawa さん 08/01/30 20:58
 
秀まるおさん、こんにちは。
K'zawaです。

> 一応、タイマーを使って音程を元に戻すのを遅延させる作戦でなんとかうまく
>動作するようになったと思います。

対応ありがとうございます。
ちゃんと音程がかわるようになりました。
特にトラブルはありません。

もし余裕がありましたら、読み終わるまでマクロを止めておくようにする方法も
検討して頂けると嬉しいです。
(標準は現行のままで)


追伸
秀丸リーダーの設定が自動選択で、SRがXP-Readerだと読み上げられません。
設定が、95/98Reader系で、PC-Talkerだと読み上げます。
(音程は変りませんが)
なにか変ですね。

[ ]
RE:24405 秀丸リーダーの音程を変える"+",No.24408
秀まるお2 さん 08/01/31 11:36
 
> もし余裕がありましたら、読み終わるまでマクロを止めておくようにする方法も
> 検討して頂けると嬉しいです。
> (標準は現行のままで)

 PC-Talkerの場合は「今現在音声化してる最中かどうか」ってAPIがあるので出
来ますが、他の音声化ソフトでは無理な場合もあると思います。

 その辺、一般的な動作として対応するのは無理があると思います。

 今はとりあえずPC-Talkerのテスト環境がありますが、他のいろんな音声化ソ
フトで全部テストするとなると、ちょっと気が遠くなります。

> 秀丸リーダーの設定が自動選択で、SRがXP-Readerだと読み上げられません。
> 設定が、95/98Reader系で、PC-Talkerだと読み上げます。

 これも、手元にPC-Talker XPが無いのでテスト出来ませんが…。PC-Talkerの
最新APIによると、PC-Talker XP以降から95Reader互換のAPIが追加されてるよう
なので、それで(間違って?)95Readerと解釈して動作してしまってるのかもし
れないです。

 音程が変わらないのは…。たぶん、95Reader互換のAPIがありつつも、完全に
互換じゃてくて、一部のパラメータ(音程の指定)が無視されてるせいだと思い
ます。なぜなら、PC-Talkerでは元々そういう動作(音声化の文字列単位での音
程指定)は出来ないので。

[ ]
RE:24408 秀丸リーダーの音程を変える"+",No.24412
K'zawa さん 08/01/31 13:24
 
秀まるおさん、こんにちは。
K'zawaです。

> PC-Talkerの場合は「今現在音声化してる最中かどうか」ってAPIがあるので出
>来ますが、他の音声化ソフトでは無理な場合もあると思います。
>
> その辺、一般的な動作として対応するのは無理があると思います。

そうですか。mmエディタでは(FocusTalkを除き)出来ているので、
出来そうかと思ったんですけど…、

> 今はとりあえずPC-Talkerのテスト環境がありますが、他のいろんな音声化ソ
>フトで全部テストするとなると、ちょっと気が遠くなります。

確かに大変ですね。わかりました。

[ ]
RE:24412 秀丸リーダーの音程を変える"+",No.24413
秀まるお2 さん 08/01/31 13:45
 
 mmエディタでは出来るというのを最初に書いてくれればまた別のお返事になっ
たかもしれませんが…。(そういうことが出来るかどうか調べること自体が大変
なので、それが省略出来ると分かった訳だから)

 他にも何かヒントがあれば教えて欲しいですけども…。例えばmmエディタでは
どういう命令を使うと「読み終わるまでマクロを止める」という動作になるのか
とか。

 とりあえず、「今音声化中かどうか」を調べるAPI呼び出しを単純にバイパス
するだけのdde命令を追加しようかなぁと思いますけど。

[ ]
RE:24413 秀丸リーダーの音程を変える"+",No.24414
秀まるお2 さん 08/01/31 13:58
 
 っと聞いておきながらなんですが、とりあえず自分で適当に仕様を決めて追加
してしまいました。(今コンパイル通っただけなので動作確認までしてません
が)

 dderequestで"SoundStatus"とやると、音声化中かどうか返るようにしました。

  while( dderequest("SoundStatus") != "" ) {
      //
  }

 みたいにすると音が鳴り終わるまで待ち続けるマクロが作成出来ます。

 ってな具合で次のβ2を出してみます。

[ ]
RE:24414 秀丸リーダーの音程を変える"+",No.24415
K'zawa さん 08/01/31 15:16
 
秀まるおさん、こんにちは。
K'zawaです。

> mmエディタでは出来るというのを最初に書いてくれればまた別のお返事になっ
>たかもしれませんが…。(そういうことが出来るかどうか調べること自体が大変
>なので、それが省略出来ると分かった訳だから)

これはこれは失礼しました。
MMには、音声メニューがあり、
設定するだけで前文読みとかできるんです。
対応してるSR等なども似ていますので、
出来るだろうと想像しただけです。

あと、こちらが持っているのは、PC Talker XP V1とXP ReaderのCDに入っていた
SDKからの知識です。

> っと聞いておきながらなんですが、とりあえず自分で適当に仕様を決めて追加
>してしまいました。(今コンパイル通っただけなので動作確認までしてません
>が)
>
> dderequestで"SoundStatus"とやると、音声化中かどうか返るようにしました。
>
>  while( dderequest("SoundStatus") != "" ) {
>      //
>  }
>
> みたいにすると音が鳴り終わるまで待ち続けるマクロが作成出来ます。

ありがとうございます。
適当にウエイトかけたほうがいいんですよね?

PC Talker XP V2とXP Readerでテストしてみます。

[ ]
RE:24415 秀丸リーダーの音程を変える"+",No.24416
秀まるお2 さん 08/01/31 16:36
 
 ってことでアップロードしました。これで試してみて欲しいです。

 一応、95ReaderとPC-Talker Version3.00でテストして、ちゃんと動くこと
は確認しています。

 あと、95Readerでちゃんと動くようにするために、SoundMessage関数に渡す
パラメータに

# define PF_DONT_IGNORE    0x0002  /* この音声文を無視しない */

 ってのを追加しています。なぜかこれを追加しないとSoundStatusが0になっ
た後でもうまく音声化しないので。

http://www.hidemaru.interlink.or.jp/software/bin/hmread201b2_signed.exe

[ ]
RE:24416 秀丸リーダーの音程を変える"+",No.24419
K'zawa さん 08/02/01 11:39
 
秀まるおさん、こんにちは。
K'zawaです。

> ってことでアップロードしました。これで試してみて欲しいです。
>
> 一応、95ReaderとPC-Talker Version3.00でテストして、ちゃんと動くこと
>は確認しています。

XP ReaderとPC Talker XPでもうまく動作しています。
ありがとうございます。

あと、一応報告しておきますと、
秀丸リーダーのSR設定:95Reader系
使用SR:PC Talker XP
で使用すると、確実にワトソン博士→秀丸リーダー強制終了になってしまいます。
自動選択がうまく動作しないので、SRを頻繁に切り替えるときは
ちょっと大変です。

[ ]
RE:24419 秀丸リーダーの音程を変える"+",No.24421
さん 08/02/01 13:25
 
石です。
秀丸リーダーのベータ版インストールしてみました。

95Reader6.0環境で使用しているのですが
秀丸エディタ上で上下カーソルを連打して一行読みしてみると状況によってはその行
を全部読み終わらないと今の行を読まないという状況があります。

規則性はよくわからないのですが比較的に

通常の音程での文章は問題ない感じ。。
通常の音程で記号のみの行では発生する場合がある。
低くした音程での文章はたまに発生する。

ただ>などの引用行での部分を低音で読ませているので記号が原因という可能性は考
えられますが

なおVDM300で読ませてみたら今のところ問題はないようです。

とりあえず報告でした。

[ ]
RE:24421 秀丸リーダーの音程を変える"+",No.24424
K'zawa さん 08/02/01 17:14
 
石さん、こんにちは。
K'zawaです。

>95Reader6.0環境で使用しているのですが
>秀丸エディタ上で上下カーソルを連打して一行読みしてみると状況によってはその行
>を全部読み終わらないと今の行を読まないという状況があります。
>
>規則性はよくわからないのですが比較的に
>通常の音程での文章は問題ない感じ。。
>通常の音程で記号のみの行では発生する場合がある。
>低くした音程での文章はたまに発生する。

こちらでは、単に連打するスピードが、
一定の速度を超えると反応しないかんじです。
(メモ帳と比べて明らかに鈍い)
これとは別の現象でしょうか?

[ ]
RE:24424 秀丸リーダーの音程を変える"+",No.24426
秀まるお2 さん 08/02/01 18:01
 
 たぶん、PF_DONT_IGNOREってパラメータを指定したせいだと思います。

 これを指定しないと、SoundStatusでウェイトさせて音声化させようとして
もうまく発音しないという問題がありまして…。

 困りました。やはりいろいろテストしていただくと問題が表に出るというこ
とで。

 95ReaderもPC-Talkerもたくさんバージョンが出てるので、それらによって
も微妙に動作が違ってたりすると、もうほとんどお手上げですが。

 とりあえずこちらでテストして対策を考えてみます。

[ ]
RE:24426 秀丸リーダーの音程を変える"+",No.24435
秀まるお2 さん 08/02/04 13:37
 
 V2.01β3をアップロードしました。これで試してみて欲しいです。

http://www.hidemaru.interlink.or.jp/software/bin/hmread201b3_signed.exe

 PF_DONT_IGNOREパラメータは外しましたが、新しく"*"を指定することでこ
のパラメータ付きの音声化も出来るようにしました。(95Reader系専用だけ
ど)

 ddeexecuteする文字列の先頭に"*"を付けるとこの指定になります。

 例:

     ddeexecute "*!あいうえお";
     ddeexecute "!かきくけこ";

  だと「あいうえお」が発音されて、

     ddeexecute "!あいうえお";
     ddeexecute "*!かきくけこ";

  だと「かきくけこ」が発音されます。

 +/-の指定と組み合わせることも出来ます。"*+!あいうえお"とか。

[ ]
RE:24435 秀丸リーダーの音程を変える"+",No.24437
K'zawa さん 08/02/04 14:26
 
秀まるおさん、こんにちは。
K'zawaです。

> V2.01β3をアップロードしました。これで試してみて欲しいです。

こちら、XP Reader = 95Reader Ver6では、
キーに追従するようになりました。
かつ、「*」は使わないままで、
連続的に読ませることも出来ています。

[ ]