スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

スポンサーサイト

JavaScriptでSAPIを使う

もしかしたら需要があるかもしれないので、JavaScriptでのSAPI4.0の使い方を説明します。

こちらがサンプルです。

ソースコードに使い方を詳しく説明したので多分わかると思います。

後はここのサイトを参考にしてください。

もしわからない部分があれば、お知らせください。


2008.9.25
 XPでは動作していなかったのを修正したのですが、なぜかアップロードした物では使えません。

SAPI5をBorland C++ Compilerで使う

bccでSAPI5を使うにはbccSDKを使うのが簡単です。注意点はspdebug.hで発生する多重定義エラーの処理とSetNotifyWindowMessageなどいくつかの場所で巧く動作しない点です。

多重定義エラーはヘッダーの一番上の
#pragma onceをコメントアウトして
#ifndef SPDebug_h
#define SPDebug_h
//...
#endifと置き換えます。

Notifyでエラーが出る場合はWaitUntilDoneとタイマーを使って対処します。
BCCではSAPI5は向いてないのかもしれません。

2010.7.19
試行錯誤すること2年9ヶ月、bcc でも SAPI5 が使えることがわかりました。(´・ω;`)
SetIntarest や SetNotifyWindowMessage には問題がありませんでした。
SPFEI というマクロに問題がありました。
なぜ発見できたかというと SetInterest で例外を捕らえることができるのがわかったからです。
以下が BCC で例外が発生するコードです。

//これならいける! ULONGLONG ev = SPFEI_ALL_EVENTS
ULONGLONG ev = SPFEI(SPEI_END_INPUT_STREAM) | SPFEI(SPEI_WORD_BOUNDARY);
try {
_com_util::CheckError(m_cpVoice->SetInterest(ev, ev));
}
catch (_com_error &err) {
// ここで「パラメータが間違っています。」と例外がでるので
// sapi.h に定義されている SPFEI を調べると下にあるコードが見つかります。
MB(err.ErrorMessage());
}

 

enum SPEVENTENUM
{ SPEI_UNDEFINED = 0,
SPEI_START_INPUT_STREAM = 1,
SPEI_END_INPUT_STREAM = 2,
SPEI_VOICE_CHANGE = 3,
SPEI_TTS_BOOKMARK = 4,
SPEI_WORD_BOUNDARY = 5,
SPEI_PHONEME = 6,
SPEI_SENTENCE_BOUNDARY = 7,
SPEI_VISEME = 8,
SPEI_TTS_AUDIO_LEVEL = 9,
....
SPEI_RESERVED1 = 30,
SPEI_RESERVED2 = 33,
SPEI_RESERVED3 = 63
} SPEVENTENUM;

#define SPFEI_FLAGCHECK ( (1ui64 << SPEI_RESERVED1) | (1ui64 << SPEI_RESERVED2) )
#define SPFEI_ALL_TTS_EVENTS (0x000000000000FFFEui64 | SPFEI_FLAGCHECK)
#define SPFEI_ALL_SR_EVENTS (0x001FFFFC00000000ui64 | SPFEI_FLAGCHECK)
#define SPFEI_ALL_EVENTS 0xEFFFFFFFFFFFFFFFui64
#define SPFEI(SPEI_ord) ((1ui64 << SPEI_ord) | SPFEI_FLAGCHECK)

 
どこに問題があるかわかりますか?
問題は (1ui64 << SPEI_RESERVED2) などにありました。
VC++ では大丈夫ですが、BCC ではこの記述だと32ビットを超えた値が無効になってしまうようなのです。
ちなみにコンパイラは警告を出しませんでした。
変わりに、このように対処したらうまくいきました。
ULONGLONG ev = 0x0000000200000000ui64 | SPFEI(SPEI_END_INPUT_STREAM) | SPFEI(SPEI_WORD_BOUNDARY);

現在は VC++ でコンパイルしているので、もう関係ないのですが。。。


Text To Wav ★ ver1.31

要望がありました下記の二つを追加しました。

Audioファイルの保存先を選べるようにしました。
実行ファイルにテキストをドラッグ&ドロップで変換。

そのほかにもいろいろ付け足しました。

くわしくはリンクのまとめを見てください。

まだまだ要望お待ちしてます。

100Hit今日この頃

今日100Hitになりました。
9月9日にブログを作ってちょうど一ヶ月です。
ありがとうございます。

最近はText To Wav ★に新しい機能を付けようかなとか考えています。
例えば、ディスプレイを消したままですべての操作ができたらなぁとか、
html の解析でもっと視覚的なイメージがわくようにしたいとか。

でも誰も、機能を追加してほしいとか言わないので
みんな満足しているのかなとか思ったり。

私もこのソフトを使って英語 (主にプログラミング) の音声学習をしたりしているんですが、こうした使いかた以外にどんなことができるのか

こんなことを考えている今日この頃です。
リンク
(*´∀`)ノ (´・ω・`)

最近の記事
最近のコメント
ブログ内検索
RSSフィード
カテゴリー
月別アーカイブ
メールフォーム

Name:
Mail:
Title:
Message:

FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。