2015年05月16日

1274.Access(VBA)でコンピュータにしゃべらせる。

・現在のWindows8.1には音声合成エンジンが標準添付されており、プログラムから簡単に使うことができる。
・Windows 7以前には、日本語音声合成エンジンは付属していないが、Microsoft Speech Platformをインストールすることで同様のコントロールが可能
・業務用プログラムのエラー処理として、いちいちマウスでOKを押す必要がないのでかなり快適に使える

Windows 8.1以上の場合は標準添付
それ以外(Xp含む)では、Microsoft Speech Platformを使う

2015051601.jpgVBA の参照で、Microsoft Speech Object libraryを設定する。

場所 
Windows 8.1 sapixx.api
windows 7 以前 Microsoft shared\speech\
7以前で、sapixxx.apiを選ぶと、英語しか発音しない。

使用可能パラメータ
SVSFlagsAsync 音声合成でプログラムを待たない
SVSFPurgeBeforeSpeak キューにたまった合成音を廃棄して、即座に発音する

たとえば、

Public Function t()
Dim Comp As New SpeechLib.SpVoice
Comp.Speak ("テスト合成です")
MsgBox "OK"

comp.Speak ("日本国民"), SVSFlagsAsync
'MsgBox "OK2"
comp.Speak ("これに反する一切の憲法"), SVSFPurgeBeforeSpeak
MsgBox "OK3"
Call PlaySound(CurrentProject.Path & "\barerror.wav", 0, SND_ASYNC)
comp.Speak ("プロシージャ")
MsgBox "OK4"
End Function


を実行すると、

1.「テスト合成です」の文章をすべて発声したあとにmsgboxが出る。
2.OKをおすと、
3.日本国民 と発声し始めるるが、途中で msgboxがでる。
4.OKを押すと、発声を途中で強制終了して、「これに反する」と割り込み合成される。
5.playsoundは、音声合成とは独立しているので、音声合成と重ね合わされて出力される

オブジェクトをグローバル変数として定義していると、処理を進めながら後付けで音声を発音し続けてくれる。応用が利く。

参考ページ
無料の音声合成エンジン 「Microsoft Speech Platform 11」



タグ:VBA 音声合成
posted by いんちょう at 21:09| Comment(3) | 日記
この記事へのコメント
テキスト読み上げの、合成エンジンを自作で、作ったことがあります。Accessからだと、どうか判りませんが、Visual StudioのC++モード (Borland C++でも)で、.wavファイルを指定して、Playsoundを置くと、時々、.wavの発音区間が長すぎると、
途中で音が途切れる場合があります。
次以降の命令文以降で、I/Oアクセスが早く来るために、スピーカーへのD/Aの足が掬われるためです。
やや、長めに、CPUの中だけで回るタイマーを
仕掛けておくと、その状態は解除でき、
最後まで再生出来ます。
#include <MMSystem.h>
int P1,P2;
PlaySoundA("a_Synth.wav", NULL,SND_FILENAME|SND_ASYNC);
for (P1=0;P1<10000;P1++)
for (P2=0;P2<70000;P2++)
     P1 = P2;
とか。
音素合成だと、全ての音素にわたって、
/k/なら/k/、/a/なら/a/を
3分割するものを作っておいて、真ん中だけは
固定、前後の音素で、前後種を変えると、自然な合成が出来ます。また、耳(と言っても、音の信号処理をしているのは、大脳の側頭葉なのですが)の時間分解能 が1ms程度ですので、音素境界に、それをカバーする程度の5ms程度の期間、白色雑音(スペクトルがフラットな信号)を撒くと、さらに、自然になります。
今日は、メチャメチャ腹が立った。大学にも、学生のみならず、いろんな社会人も出入りしますが、パスワードは
知っているけど、ユーザーIDを知らない(最初から覚える気が無かった)と言う人がいました。defaultの表示で、今までの2年間は、入れていたのですが、Administer権限を使ったら、そのdefaultがリフレッシュされて。。。「片方だけ、憶えておいて、一体、どうするの?」と、言うか、小学校時代から、IDとパスワードは、紙や携帯などで書いて、ツイで、憶えておきなさい、と言うのは、全世界的に、常識だと思うのですが。10歳から70歳まで、文科相権限で、徹底しておいた方がいいのかなあ、と。
こう言う大迷惑な事をしておいて、マッタリしているあたり、原発推進に通じる処があるのだろうなあ、と思いました。
Posted by 浮き船 at 2015年05月18日 19:53
直接的にここのブログに対する意見・感想ではありません。
先生のPCのハード・ソフトにに対する意欲については、もう言葉がありません。素晴らしいですが私はついていけません。できることで役立ちそうなことだけをトライしています。

でも果てしないんですよね、この世界だけは。もう既にWindows10をインストールした人の感想文がネットに並ぶ時代です。私の知る限り三十数名の同期生の中でWindows8.1を使っているのはほとんど居ないみたい。

トラブルが発生してメールを貰ったので、ところでオタクのOSはなんだと訊いたら、OSってなんだ?と反問されたことがありました。世間にはこうゆうレベルの人が居るということです。あまり深入りしないことにしています。

パソコンを使っているというだけで、全てが通用すると思わないことですね。
Posted by ハマの住人 at 2015年05月20日 19:30
ずくなしの冷や水さんのブログといえば、先生のブログをお読みになっている向きはご存じの方も多かろうと思います。

ところが文字フォントが小さすぎて読むのに苦労しましたので、コメント欄に先生と同じ「さくらのブログ」なんだから、もう少し文字を大きくすることは可能なんではないですか?と書き込みを入れましたら、本日はそれが実現していました。

ご本人も苦労していた様子でしたから、誠に結構なことだと思います。引き続き愛読の方向で行きたいと思っています。

Posted by ハマの住人 at 2015年05月27日 12:41
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。