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