トップページ > 過去ログ > 記事閲覧
[VB.NET]非同期AquesTalkDa_Play
日時: 2008/09/02 18:54
名前: そにっく

はじめまして。AquesTalkのフリーWin版を使わせていただいています、そにっくです。
Blogを元にVB.NETで同期タイプであるAquesTalkDa_PlaySyncで無事再生できましたがAquesTalkDa_Playで実行しても音声が再生されません。
AquesTalkDa_create()で生成したlong型の値を第一引数に与えているのですが…。関数自体は動いているような戻り値が帰ってきます。
もしどなたか原因がわかりましたらお教えください。
VB.NETは2005を使っています。

Page: 1 |

Re: [VB.NET]非同期AquesTalkDa_Play ( No.1 )
日時: 2008/09/07 19:05
名前: 管理人

>関数自体は動いているような戻り値が帰ってきます。
まずは、AquesTalkDa_PlaySync()の戻り値が0になっているかを、ちゃんと確認してみてはいかがでしょう?
Re: [VB.NET]非同期AquesTalkDa_Play ( No.2 )
日時: 2008/09/08 14:43
名前: そにっく

管理人さま
ご返信ありがとうございます!
AquesTalkDa_PlaySync()の戻り値は、0ではありませんでした…。「40820503052550144」という、どのエラーにも当てはまらない値です。その他エラーと同じ扱いになるのでしょうか?
また、AquesTalkDa_Play()の場合は「9557712」が戻り値として帰ってきました。

自分なりにスレッドを立ててマルチスレッドで実行してみたりしましたがうまく動きません。

お忙しいところ大変申し訳ありませんがヒントなどお教えいただければ幸いです。
よろしくお願いいたします。
Re: [VB.NET]非同期AquesTalkDa_Play ( No.3 )
日時: 2008/09/08 23:26
名前: 管理人

こんにちは、
基本的のそのような戻り値を返すことは無いので、戻り値の変数の型が変なのかと思います。
VBは詳しくないので、詳細のアドバイスは出来ませんが・・・
まずは、戻り値が正しく取得できるところから始めてみてください。
Re: [VB.NET]非同期AquesTalkDa_Play ( No.4 )
日時: 2008/09/09 10:44
名前: 通りすがり

取得したハンドルは発声中にどうしていますか?
発声終了までキープしておく必要があります。(AquesTalkDa_Releaseを呼ばない)


参考、十進BASICでの処理手順(抜粋)

LET h=AquesTalkDa_Create !ハンドルを得る
IF h<>0 THEN
LET text$="あしたの/て'んきわ、いちにちじゅー/はれ。"
LET rc=AquesTalkDa_Play(h, text$, 100, 0, 0, 0)
PRINT rc
DO WHILE AquesTalkDa_IsPlay(h)<>0 !発声中はハンドルを開放しないこと!
WAIT DELAY 0.1
LOOP

CALL AquesTalkDa_Release(h) !閉じる
END IF
Re: [VB.NET]非同期AquesTalkDa_Play ( No.5 )
日時: 2008/09/16 19:47
名前: そにっく

ご返信ありがとうございます!

管理人様
そうですね、どうやら型でおかしいことになっているようです。
VB2005からintegerがビット数32になったり、Longが64bitになったりしているようてす。
そのせいで関数がうまく動いていないのかもしれません。もう少しがんばってみます!

通りすがりさま
その可能性は否めません…。while句でAquesTalkDa_IsPlay()を使用してハンドルを見張ろうと思います!ありがとうございます!

ありがとうございます、またご報告にあがりたいと思います!

/*追記*/
integerをshort
longをinteger
に変えて定義することでうまくいきました!
ありがとうございましたー!
Re: [VB.NET]非同期AquesTalkDa_Play ( No.6 )
日時: 2008/10/09 19:38
名前: モルァ

AquesTalkをVBで使うを参考にして、Visual Basic 2008 Express EditionでAquesTalkDa_PlaySyncを使おうとしたら同じ現象に遭遇して悩みました。(返り値が0にならない。)
Private Declare Function AquesTalkDa_PlaySync Lib "AquesTalkDa.dll" (ByVal koe As String, ByVal iSpeed As Integer) As Long
上記の返り値をLongからIntegerに変えただけで正常に動くようになりました。ありがとうございました(^o^)

Page: 1 |