vb用棒読みちゃんIPCアクセスクラス
っていっても、C#のものを単純にコンバートしただけなので、ご自由にお使いください。
使い方
Dim bouyomi as FNF.Utility.BouyomiChanClient bouyomi=new FNF.Utility.BouyomiChanClient bouyomi.AddTalkTask("てすとだよ")
プログラムで、読み上げ終了を待ちながらってのもできます。
bouyomi.NowPlayingがtrueじゃないことを確認しながら追加していけばいいです。
'BouyomiChanClient.cs - Ver0.1.3.0 '棒読みちゃんにIpcClientChannelで接続して読み上げを行うためのクラスです。 'ご自由にお使いください。 'System.Runtime.Remotingを参照設定する必要があります Imports System.Runtime.Remoting.Channels Imports System.Runtime.Remoting.Channels.Ipc Namespace FNF.Utility ''' <summary> ''' 声の種類。(9以降はSAPI) ''' </summary> Public Enum VoiceType [Default] = 0 Female1 = 1 Female2 = 2 Male1 = 3 Male2 = 4 Imd1 = 5 Robot1 = 6 Machine1 = 7 Machine2 = 8 End Enum ''' <summary> ''' 棒読みちゃんへ接続するためのクラス。 ''' </summary> Public Class BouyomiChanClient Implements IDisposable Private ClientChannel As IpcClientChannel Private RemotingObject As BouyomiChanRemoting Private _createdCannel As Boolean = False ''' <summary> ''' オブジェクト生成。 ''' 利用後にはDispose()で開放してください。 ''' </summary> Public Sub New() Try ClientChannel = TryCast(ChannelServices.GetChannel("ipc client anko"), IpcClientChannel) Catch End Try If ClientChannel Is Nothing Then ClientChannel = New IpcClientChannel() ChannelServices.RegisterChannel(ClientChannel, False) _createdCannel = True End If RemotingObject = DirectCast(Activator.GetObject(GetType(BouyomiChanRemoting), "ipc://BouyomiChan/Remoting"), BouyomiChanRemoting) End Sub ''' <summary> ''' オブジェクト開放。 ''' </summary> Public Sub Dispose() Implements IDisposable.Dispose If ClientChannel IsNot Nothing AndAlso _createdCannel Then Try ChannelServices.UnregisterChannel(ClientChannel) Catch End Try ClientChannel = Nothing End If End Sub ''' <summary> ''' 棒読みちゃんに音声合成タスクを追加します。 ''' </summary> ''' <param name="sTalkText">喋らせたい文章</param> Public Sub AddTalkTask(sTalkText As String) RemotingObject.AddTalkTask(sTalkText) End Sub ''' <summary> ''' 棒読みちゃんに音声合成タスクを追加します。(音程指定無し版。以前のバージョンとの互換性の為に残しています。) ''' </summary> ''' <param name="sTalkText">喋らせたい文章</param> ''' <param name="iSpeed" >再生。(-1で棒読みちゃん側の画面で選んでいる速度)</param> ''' <param name="iVolume" >音量。(-1で棒読みちゃん側の画面で選んでいる音量)</param> ''' <param name="vType" >声の種類。(Defaultで棒読みちゃん側の画面で選んでいる声)</param> Public Sub AddTalkTask(sTalkText As String, iSpeed As Integer, iVolume As Integer, vType As VoiceType) RemotingObject.AddTalkTask(sTalkText, iSpeed, iVolume, CInt(vType)) End Sub ''' <summary> ''' 棒読みちゃんに音声合成タスクを追加します。 ''' </summary> ''' <param name="sTalkText">喋らせたい文章</param> ''' <param name="iSpeed" >速度。(-1で棒読みちゃん側の画面で選んでいる速度)</param> ''' <param name="iTone" >音程。(-1で棒読みちゃん側の画面で選んでいる音程)</param> ''' <param name="iVolume" >音量。(-1で棒読みちゃん側の画面で選んでいる音量)</param> ''' <param name="vType" >声の種類。(Defaultで棒読みちゃん側の画面で選んでいる声)</param> Public Sub AddTalkTask(sTalkText As String, iSpeed As Integer, iTone As Integer, iVolume As Integer, vType As VoiceType) RemotingObject.AddTalkTask(sTalkText, iSpeed, iTone, iVolume, CInt(vType)) End Sub ''' <summary> ''' 棒読みちゃんの残りのタスクを全て消去します。 ''' </summary> Public Sub ClearTalkTasks() RemotingObject.ClearTalkTasks() End Sub ''' <summary> ''' 棒読みちゃんの現在のタスクを中止して次の行へ移ります。 ''' </summary> Public Sub SkipTalkTask() RemotingObject.SkipTalkTask() End Sub ''' <summary> ''' 棒読みちゃんの現在のタスク数(再生待ち行数)を取得します。 ''' </summary> Public ReadOnly Property TalkTaskCount() As Integer Get Return RemotingObject.TalkTaskCount End Get End Property ''' <summary> ''' 棒読みちゃんが現在、音声を再生している最中かどうかを取得します。 ''' </summary> Public ReadOnly Property NowPlaying() As Boolean Get Return RemotingObject.NowPlaying End Get End Property ''' <summary> ''' 棒読みちゃんが一時停止中かどうかを取得・設定します。 ''' ※現在の行の再生が終了するまで停止しません。 ''' </summary> Public Property Pause() As Boolean Get Return RemotingObject.Pause End Get Set(value As Boolean) RemotingObject.Pause = value End Set End Property End Class ''' <summary> ''' .NET Remotingのためのクラス。(本クラスの内容を変更してしまうと通信できなくなってしまいます) ''' </summary> Public Class BouyomiChanRemoting Inherits MarshalByRefObject Public Sub AddTalkTask(sTalkText As String) End Sub Public Sub AddTalkTask(sTalkText As String, iSpeed As Integer, iVolume As Integer, vType As Integer) End Sub Public Sub AddTalkTask(sTalkText As String, iSpeed As Integer, iTone As Integer, iVolume As Integer, vType As Integer) End Sub Public Sub ClearTalkTasks() End Sub Public Sub SkipTalkTask() End Sub Public ReadOnly Property TalkTaskCount() As Integer Get Throw New System.Exception("") End Get End Property Public ReadOnly Property NowPlaying() As Boolean Get Throw New System.Exception("") End Get End Property Public Property Pause() As Boolean Get Throw New System.Exception("") End Get Set(value As Boolean) End Set End Property End Class End Namespace