自分で作った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へキーを送信しホットキーを操作するサンプルコード