━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ MikoVoice プログラミング ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ MikoVoice の API は、MikoVoice.dll という DLL に実装しています。この API の各 関数の仕様は、「API仕様」で説明しています。 C言語や C++言語で、MikoVoice の API を使うときは、MikoVoice.h というファイルを インクルードしておく必要があります。このファイルには、各関数のプロトタイプ宣言や 各種の定数定義などがあります。 MikoVoice の API を使っているソースプログラムをコンパイルして、実行形式を生成 する際には、MikoVoice.lib というライブラリーファイルをリンクする必要があります。 ( MikoVoice.dll を LoadLibrary() 関数等で動的にリンクして使う場合、その必要は ありません。) MikoVoice の API を使っているプログラムを実行する際には、MikoVoice.dll が、 「 DLL の検索パス」内で見つかる必要があります。通常、そのプログラムの実行形式 ファイルと同じディレクトリー内に、MikoVoice.dll を入れておきます。 MikoVoice の API は、マルチスレッドで使用しても安全なように設計されています。 ≪注意≫ MikoVoice.dll を使ったプログラムが終了する前に、あるいは、MikoVoice.dll の 動的リンクを解除する前に、念のために、必ず、MikoVoice の全ポートの音声出力を 停止状態にしてください。全ポートの音声出力を停止するには、 MikoVoiceOutStop( -1 ); を実行します。 以下に、MikoVoice の API を使ったプログラム例を示します。 ──────────────────────────────────────── ●プログラム例(1) 次は、MikoVoice に「こんにちわ」と発声させる C言語のプログラムです。
#include "MikoVoice.h" main() { MikoVoiceOutSync( L"こ[んにちわ]" ); }
このプログラムのソース( Hello.c )と実行形式( Hello.exe )等のファイルは、 本書庫ファイル( mvoice140.zip )内にあります。 ──────────────────────────────────────── ●プログラム例(2) 本書庫ファイル( mvoice140.zip )には、もう1つのサンプルプログラムが入っています。 そのソースファイルは、MVBox.c で、実行形式のファイルは、MVBox.exe です。これは、 MikoVoice API のほとんどの関数を使っているので、いろいろと参考になります。また、 実用性もあります。 このサンプルプログラムは、単に話すだけでなく、早口言葉を早口で言ったり、関西の アクセントでしゃべったりします。さらに、いろいろな歌を、いろいろな歌い方(斉唱、 ビブラート、エラー付き)で歌います。これらのほとんどは、女性の声ですが、子供や 男性の声もあります。 このプログラムを実行して表示されるウィンドウには、「音声記号テキスト入力」の ボックスがあるので、ここに、発声させたい音声記号を入れます。この入力は、任意 に行えますが、メニューから選ぶこともできます。 ウィンドウのサイズは、自由に変更できます。音声記号の入力ボックスのサイズも、 それに応じて変わります。 「発声」ボタンを押すと、音声記号ボックスに入力されている内容に基づいて音声が 合成されて、発声されます。 現在の発声が終わらないうちに再度「発声」ボタンを押すと、現在の発声に今回の 発声が重なります。さらにもう一度「発声」ボタンを押すと、3つの音声が重なり ます。最大で8音声まで重ねられます。 「発声」ボタンの右側には、0 〜 7 の番号が付いた8個のボタンがありますが、 これらのボタンは、その番号に対応する音声出力ポートが使用中の時に有効になり、 不使用中の時に無効になります。 これらのボタンが有効な時、その番号に対応する音声出力ポートの発声と全音声出力 ポートの発声の「停止」「休止」「再開」が行えます。 音声の波形データをファイルに保存したい時は、メインメニューの「ファイル」下の 「合成音声を保存...」を選びます。 ──────────────────────────────────────── ●プログラム例(3) MikoVoice の API は、C言語や C++言語以外からでも使えます。次のプログラムは、 MikoScript言語(インタプリター)で使う例です。
// MikoVoice の DLL をリンク ::File.GetNamePart( ::File.GetProgramPath(), ProgDir'new! ); ^MikoVoice = ::DLL.Link( ProgDir + $"Tools\MikoVoice.dll" ); if( ! ^MikoVoice ) goto ERR_NO_DLL; // MikoVoice の DLL 内の関数を取得 ^OutSync = ^MikoVoice.GetEntry( "MikoVoiceOutSync" ); if( ! ^OutSync ) goto ERR_NO_ENTRY; // 読み上げを実行 if( ^OutSync( "S3.4 は[じ P1 めま]して P0、S3.5 P0 よ[ろ P1 しく], S3.5 S3.4 お[ねがいしま] s4.3 す。。S3.4 P0" "S3.6 ^いま、P1 ミ[コボイ]スで, S3.6 は[なし]て S3.6 S3.4 い^ます。S3.4 P0" "S3.6 い^か P1 がですか? P0" ) < 0 ) call ERR_VOICE_OUT; FIN: delete ^MikoVoice; // MikoVoice の DLL を解放 return; ERR_NO_DLL: ::Alert( "MikoVoice の DLL が、Tools フォルダー内にありません!" ); return; ERR_NO_ENTRY: ::Alert( "MikoVoice の DLL 内に、所定の関数がありません!" ); goto FIN; ERR_VOICE_OUT: ::Alert( "MikoVoice の発声が正常に終了しませんでした!" ); back;
このプログラムのソースファイルは、テキストエディタ Epsaly( Version 2.00 以降) のサンプルスクリプトのディレクトリー内に、MVoiceS1.mc という名前で入っています。 ────────────────────────────────────────