VB.NETでA.I.VOICEに喋らせる為の最短の設定とサンプルソースコード

A.I.VOICEのAPIを使い、VB.NET(VisualBasic)で、喋らせるまでの最短手順をご紹介します。
Visual Studio2022 コミュニティで説明しています。

プログラムの知識はないけど、とにかくAPIを使って喋らせてみたいかたにオススメです。
もちろん、A.I.VOICEの製品版が必要となります。
Visual Studioを起動するところから説明しているので、迷うことはないはずです。たぶん。

A.I.VOICE2は発売日時点ではAPI対応していない

2023年12月にA.I.VOICE2も発売されたが、発売時点ではA.I.VOICE2はAPIに対応しておらず、2023年11月の公式放送でA.I.VOICE2のAPI対応に対して「現時点でお答えできる情報がない。リリース時点ではAPIは対応していない。また、お伝えできる時期になったらできるできないを発表したいと思う。」と発言されている上に、A.I.VOICE公式サイトで発表された「A.I.VOICE2の2024年対応予定一覧」に、API対応についての記載も一切無い。つまり対応予定がない。(API対応するかしないかすらも発表していない)

したがって、A.I.VOICEをAPIで操作したいなら、まだまだA.I.VOICE無印、すなわちA.I.VOICE1を使うしかないのである。


1.まずはVisual Studioを起動する


新しいプロジェクトの作成を選ぶ。



2.言語と作るアプリケーションの種類を選ぶ


VisualBasicを選び、Windows フォーム アプリケーション(.NET Framework)を選ぶ。
.NET Frameworkではないものを選ぶと、APIを使ってもエラーで止まります。
(実際にやって、エラーになるのを確認しました。具体的には.StartHost()でA.I.VOICEが起動した後、いざ接続する為の命令である.Connect()の部分で止まります。私はこのエラーの解決方法が分からず100時間以上ハマりました。)



3.名前をつける


プロジェクト名に好きな名前を入力します。
場所は、作ったプログラムを保存する場所を選びます。
フレームワークは4.7.2を選んでおきましょう。(4.8でも動くと思いますが。)



4.参照設定を行う


開発画面になったら、上部メニューからプロジェクトを選び、参照の追加を選びます。



5.dllの追加を行う


1.左から参照タブを選ぶ。
2.右下から参照を押し、

C:\Proguram Files¥AI¥AIVoiceEditor

の中からAI.Talk.Editor.Api.dllを選ぶ。
3.チェックを入れる。
4.OKを押す。
(上のパスはあえて全角の¥マークにしていますが、実際は半角です。)

もし、OKを押した時に「既に追加されています」と表示された場合は、それでOKです。



6.プロジェクトのプロパティを選ぶ


上のプロジェクトから、1番下にある、自分で名前をつけたプロジェクト名のプロパティを選ぶ。



7.32ビット優先のチェックを外す


1.左のメニューよりコンパイルを選ぶ。(C#の場合はビルド)
2.構成の所を【すべての構成】を選ぶ。←本記事、最重要項目/やらないと確実にエラーで止まる。
3.2で、すべての構成を選んでから、32ビット優先のチェックをはずす

A.I.VOICEのAPIは、64ビットだったので、上のチェックを外さないとエラーになります。(32ビットのままでは、64ビットを扱えない。)



8.フォームにボタンを作成する


1.デザインタブを選ぶ。
2.ツールボックスを選ぶ。
3.Buttonを選ぶ。
4.Form1の上の好きな所にマウスカーソルを持っていき、ボタンの左上となる部分で左クリック押しっぱにし、右下へドラッグして好きな所で左クリックを離して、ボタンを貼り付ける。
上の図のように、Button1ができたら良い。ボタンの大きさは好みで良い。



9.下のサンプルコードを貼り付ける


Form1のどこでもいいので、ダブルクリックすると、コードエディッタが起動する。
最初から書いてあるのを全部消して、下のサンプルソースコードを貼り付け、上の開始ボタンを押して、プログラムを開始する。

作成して起動したプログラムからボタンを押せば、A.I.VOICEが起動して喋ります!
サンプルコードでは「接続おめ」と喋るようにしてあります。



A.I.VOICEと連携する為のソースコード

ソースコードはVB.NETです。
C#のサンプルは、A.I.VOICE公式サイト内の「A.I.VOICE APIリファレンス」(ZIPファイルで配布)で公開されているので、それを参照すれば良いと思います。

Imports AI.Talk.Editor.Api Public Class Form1 Private iTtsControl As TtsControl = New TtsControl Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click Dim wHostName() As String = iTtsControl.GetAvailableHostNames() 'ホストネームをゲット If wHostName.Length = 0 Then Exit Sub '1つも取得できなかった。アイボスがPCにインストールされてないんじゃね?エラー End If iTtsControl.Initialize(wHostName(0)) Try If iTtsControl.Status = HostStatus.NotRunning Then iTtsControl.StartHost() '起動していなかったらA.I.VOICE起動、起動していたら何もしない End If If iTtsControl.Status = HostStatus.NotConnected Then iTtsControl.Connect() 'A.I.VOICEと接続開始 End If iTtsControl.Text = "接続おめ" 'A.I.VOICEにテキスト送信 iTtsControl.Play() 'A.I.VOICE再生ボタン押す Catch ex As Exception '接続エラー End Try End Sub End Class

実際にはちゃんとソースコードを書かないとならない

ここでは、とにかく、すぐにプログラムからA.I.VOICEに喋らせたいかた向けに書きました。
実際には、A.I.VOICEが喋っていて、忙しい状態ではないかどうかのチェックなどをして、連続でテキストを送り込まないような処理をプログラムとして書いていく必要があります。

また、A.I.VOICEのAPIリファレンス内の、Connectメソッドに記載がありますが、10分以上APIを介して操作していないと、勝手にコネクトを切断されるという仕様なので、そこもエラーにならないように制御が必要です。


喋らせるまでに意外にハマりました・・・

ここまで手順通りやれば、簡単に喋らせることができると思います。
でもね、これを私みたいなプログラムの知識ない人が、いきなり設定するなんて無理でした。

上記5番のdllの参照設定は、A.I.VOICEのAPIリファレンスに書いてあるので、これに関してはすぐ分かると思いますが、「.NET Framework」のアプリを選ばないとConnect()の部分で100%エラーになりますし、「32ビット優先」のチェックを外さないと、APIを使う命令を通った瞬間に「32ビットでは64ビットにアクセスできません」みたいなエラーなる等、ハマり要素があります。
そして、そのようなことはリファレンスには記載がないので、分からなかった!(そんなことは説明されなくても分からないとならないわけですね。)

というわけで、同じハマりに陥る人がいなくなってほしいので、この記事を書きました。

※この記事を書いた2023年2月18日段階では、リファレンスに.NET Frameworkが必要なんて一切記載がありませんでしたし、32ビットの件もです。


注意点

A.I.VOICEのバージョンが低いと(1.3台など)、dllのバージョンも低いので、APIリファレンスで説明があるけど使えないメソッドがあります。
また、1.3を下回るバージョンでは、APIリファレンスを使用した利用方法では使用できません。(自力で使ってる人はいましたけど)

また、このソースコードはA.I.VOICEをアクティベーションしているのを前提としています。
アクティベーションしていない無料である、2週間の体験期間中のA.I.VOICEでの動作は保証しません。

癖で、Exit Subって書いちゃったけど、Returnです。ごめん。

関連記事

A.I.VOICEが喋っているか喋っていないかをVB.NETで判断するソースコード
VB.NETで棒読みちゃんに文字を読ませるサンプルコード
VB.NETからOBSへキーを送信しホットキーを操作するサンプルコード
タイトルとURLをコピーしました