N.Yamazaki's blog

主に音声合成について思ったことを書いてみようと思います。
<< コマンドトーク 窓の杜で紹介される | main | AquesTalkをVBで使う >>
.NET からAquesTalkを 呼び出すには?
Win32APIを呼び出すインターフェースを使って、.NET FrameworkからAquesTalkを呼び出すことができます。
今回は、固定のメッセージを発声する最もシンプルなプログラムをC#で作ってみます。なお、説明にはC#を使っていますが、Visual Basic .NET版も同様の方法で作れると思います。

step1 次のプログラムをエディタ等で記述してHelloTalk.csという名前で保存します。

// HelloTalk.cs
using System;
using System.Runtime.InteropServices; // DllImport

class HelloTalk {

[DllImport("AquesTalkDa.dll")]
private static extern int AquesTalkDa_PlaySync(string koe, int iSpeed);

private static void Main() {
int iret = AquesTalkDa_PlaySync("こんにちわ。", 100);
}
}

ポイントは、DllImportによるDLL関数の宣言を行う部分です。3行目でDllImportの名前空間を宣言し、7行目と8行目でDLLがExportしている関数を宣言しています。ここでは、AquesTalkDa.dllの中の1つの関数を宣言しているだけですが、7行目と8行目と同様の方法で、そのほかの公開されている関数を宣言して呼び出すことも出来ます。AquesTalkDaで公開されているそのほかの関数については、プログラミングガイドを参照してください。

step2 コンパイルする
DOS窓で次を実行しコンパイルします。
> csc HelloTalk.cs
ソースにエラーが無ければ、HelloTalk.exeが生成されます。
ちなみに、コンパイラ csc.exe は、こちらの環境では、C:¥WINDOWS¥Microsoft.NET¥Framework¥v2.0.50727の下にありました。

step3 AquesTalkDa.dll の配置
AquesTalkDa.dll ファイルをシステムディレクトリ(Windows¥system32)またはHelloTalk.exeと同じフォルダにコピーしておきます。

step4 実行
AquesTalk.exeを実行すると「こんにちは」と発声します。

ここでは、音声メッセージを直接サウンドデバイスに出力しましたが、AquesTalkDa.dllの代わりにAquesTalk.dllを用いて、音声データをメモリ上に生成し、ネットワーク経由でクライアント側で発声させるような使い方も可能です。

参考
@IT Win32 APIやDLL関数を呼び出すには?
| AquesTalk | 17:40 | - | - |
PROFILE
Follow
CATEGORIES
LATEST ENTRIES
SEARCH THIS SITE
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND
SONY MDR-CD900ST
SONY MDR-CD900ST (JUGEMレビュー »)

普段これで開発しています。
RECOMMEND
RECOMMEND
RECOMMEND
RECOMMEND