VB.NETで棒読みちゃんに文字を読ませるサンプルコード

VB.NET(Visual Basic.NET)で棒読みちゃんに文字を読み上げさせるサンプルコードです。

自分で作ったexeから、棒読みちゃんに文字列を送信し、読んでもらえます。

Socketを使用していますが特に設定はなく、VB.NETを起動して、下記のソースコードを実行すれば、棒読みちゃんにメッセージを読ませることができます。

A.I.VOICEとPotatoVoiceHubを使用すれば、棒読みちゃんとPotatoVoiceHub経由で、A.I.VOICEに読ませることも可能です。

C言語のサンプルはあるけど、VB.NETがなかったので作りました。

使用方法

VB.NETを起動し「新規プロジェクトの作成(N)」、「Windowsフォームアプリ」を選択します。
まっさらのForm1にButton1を設置します。
コードエディタに、下記のコードをまるごと貼り付ければOKです。
もちろん、棒読みちゃんは予め起動しておいてください。
実行して、ボタンを押すと、iMessageに格納された文字列を棒読みちゃんが読み上げます。
参照設定も、何も設定の必要がありません。

ソースコード


Imports System.Net Imports System.IO Imports System.Net.Sockets Imports System.Text Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '=================================================================== 'VBのソケット通信で棒読みちゃんに読み上げをするソースコード 'もちろん棒読みちゃんを起動しているのが前提 '=================================================================== Dim wHost1 As IPAddress = IPAddress.Parse("127.0.0.1") Dim wPort1 As Integer = 50001 'ポート番号/棒読みちゃんの設定を変更していなければこれがデフォルト Dim wIpe1 As IPEndPoint = New IPEndPoint(wHost1, wPort1) 'IPアドレスとポート番号を設定 Dim wLength As Integer 'メッセージ長さ Dim wbyte_Message() As Byte '読ませるメッセージをバイト型に変換したもの '=================================================================== '送信データフォーマットの詳細は、棒読みちゃんのSampleSrc.txtに書いてある 'Cのサンプルコードではintだが、VBはShort型に該当する '=================================================================== Dim iCommand As Short = 1 '読み上げする Dim iSpeed As Short = -1 '棒読みちゃんの速度デフォルト Dim iOntei As Short = -1 '棒読みちゃんの音程デフォルト Dim iOnryo As Short = -1 '棒読みちゃんの音量デフォルト Dim iSeishitsu As Short = 0 '棒読みちゃんの声質デフォルト Dim iMojiCode As Byte = 0 '0はUTF-8 Dim iMessage As String = "いらっしゃいませ、レトロゲームが好きな1人が来場しました。" '=================================================================== '棒読みちゃんに読ませるメッセージ '=================================================================== wbyte_Message = Encoding.UTF8.GetBytes(iMessage) '文字をUTF8バイト型に変換 wLength = wbyte_Message.Length '文字数計測してwLengthに格納 Try '=============================================================== '今からTcpでソケット通信開始します宣言 '=============================================================== Using Client_Tsukauze = New TcpClient() '=========================================================== '上で指定したポート番号とIPアドレスで接続を開始しますよ '=========================================================== Client_Tsukauze.Connect(wIpe1) '=========================================================== 'ストリーム使うよ 宣言 '=========================================================== Using Stream_Tsukauze = Client_Tsukauze.GetStream() '======================================================= 'バイナリーで送信するのを今から使うよ 宣言 '======================================================= Using Binary_kakidashi = New BinaryWriter(Stream_Tsukauze) '=================================================== '棒読みちゃんにデータ送信 '=================================================== Binary_kakidashi.Write(iCommand) Binary_kakidashi.Write(iSpeed) Binary_kakidashi.Write(iOntei) Binary_kakidashi.Write(iOnryo) Binary_kakidashi.Write(iSeishitsu) Binary_kakidashi.Write(iMojiCode) Binary_kakidashi.Write(wLength) Binary_kakidashi.Write(wbyte_Message) '=================================================== 'この段階で棒読みちゃんは読み上げを勝手に開始します。 '=================================================== End Using End Using '=========================================================== '送信終わったら ちゃんと 閉じようね '=========================================================== Client_Tsukauze.Close() MessageBox.Show("読み上げ成功!", "成功しました", MessageBoxButtons.OK, MessageBoxIcon.Information) End Using Catch ex As Exception MessageBox.Show("棒読みちゃん起動してる?", "通信に失敗しました", MessageBoxButtons.OK, MessageBoxIcon.Exclamation) Finally End Try End Sub End Class

注意点

ソースコードは、自由にコピー、改変してもらって問題ありません。
ただし、問題があっても責任を負わないものとします。
また、コードはVB.NETであり、昔なつかしのVisualBasic6.0ではないのでご注意ください。

使用言語・動作確認したバージョン

Microsoft Visual Studio Community 2022 (64 ビット)

関連記事

A.I.VOICEが喋っているか喋っていないかをVB.NETで判断するソースコード
VB.NETでA.I.VOICEに喋らせる為の最短の設定とサンプルソースコード
VB.NETからOBSへキーを送信しホットキーを操作するサンプルコード
タイトルとURLをコピーしました