- 574 名前:名無しさん@お腹いっぱい。 mailto:sage [2010/06/26(土) 08:40:26 ID:XkryZ5iqi]
- 質問です。
AquesTalkのdllをロードしてwavファイルを出力したいのですが ///構文 unsigned char * AquesTalk_Synthe(const char *koe, int iSpeed, int *size) ///引数 ///koe 音声記号列 ///iSpeed 発話速度[%] 50-300 の間で指定 デフォルト:100 値を大きく設定するほど、速くなる ///size 生成した音声データのサイズが返る[byte](エラーの場合はエラーコードが返る) ///戻り値 WAVフォーマットのデータ(内部で領域確保、解放は呼び出し側でAquesTalk_FreeWave()で ///行う)の先頭アドレスを返す。エラー時は、NULL を返す。このときsize にエラーコードが設定さ ///れる。 DEF_DLL AquesTalk_Synthe(string, int): string: AquesTalk.dll DEF_DLL AquesTalk_FreeWave(string): : AquesTalk.dll sp=50 str="こんにちわ。" fp = fopen("AquesTalk.wav", F_WRITE); wav=AquesTalk_Synthe(str, sp) FPUT(fp, wav) fclose(fp) AquesTalk_FreeWave(wav) 戻り値がデータへの先頭アドレスで帰されるので出力したwavファイルの中身は "RIFF4`" とwavファイルの ヘッダの先頭部分のみになってしまいます。こういうアドレスの先頭・ポインタで戻り値が返された場合、 実体ののデータを取得するにはUWSCではどう記述するのか教えてください。 dllのロード自体がの記述が間違っているかもしれませんが、wavファイルを出力しない↓のコードでは問題なくできました。 DEF_DLL AquesTalkDa_PlaySync(string,int): int: AquesTalkDa.dll sp=50 str="こんにちわ。" AquesTalkDa_PlaySync(str,sp)
|

|