VB.NetでAquesTalk2を呼び出す

株式会社アクエストのページに、先日取り上げたAquesTalkの後継バージョンとしてAquesTalk2が載っていた。
AquesTalkの場合は、音質を変える場合 音質ごとに準備されたDLL(AquesTalk.dll AquesTalkDa.dll 等)を切り替える必要があるが、AquesTalk2の場合は、音質を定めるPhontデータをメモリ上に予め読み込んでおいて、再生時にそのポインタを指定することにより音質を変えられるとのこと。
株式会社アクエストのページにあるマニュアルには Cで作成したサンプルPGが載っている。これを参考にして VB.Netで Phontデータを読み込んで音質を変えて見た。

0)ダウンロードのページからAquesTalk2 Winをダウンロード。
1)Visual Studio 2008を起動。
2)新規にVBのWindowsフォームプロジェクトを作成。
3)フォームにテキストボックス1つとボタンを2個貼り付ける。
4)コードペインで次のコードを入力

Imports System.Runtime.InteropServices

Public Class Form1
   Private mbs() As Byte
   Private Declare Function AquesTalk2Da_PlaySync Lib “AquesTalk2Da” _
      (ByVal pstrKoe As String, ByVal pintSpeed As Integer, _
       ByVal phont As Integer) As Integer

   Private Sub Button1_Click _
      (ByVal sender As System.Object, ByVal e As System.EventArgs) _
        Handles Button1.Click
        Dim str As String = TextBox1.Text

        ‘ガベージコレクタがオブジェクトを移動できないようにする
        Dim gch As GCHandle = GCHandle.Alloc(mbs, GCHandleType.Pinned)
        ‘固定オブジェクトのアドレスを取得する
        Dim address As Integer = gch.AddrOfPinnedObject().ToInt32()

        ‘ハンドルを解放する
        ‘オブジェクトの移動ができるようになる
        gch.Free()

        Dim intRet As Integer = AquesTalk2Da_PlaySync(str, 100, address)
    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object,  _
            ByVal e As System.EventArgs) Handles Button2.Click
        ‘ファイルを開く
        ‘ここでPhontデータを指定する
        Dim fs As New System.IO.FileStream(“phontaq_f1b.phont”, _
                                           System.IO.FileMode.Open, _
                                           System.IO.FileAccess.Read)
        ‘ファイルを読み込むバイト型配列を作成する
        ReDim mbs(CInt(fs.Length – 1))
        ‘ファイルの内容をすべて読み込む
        fs.Read(mbs, 0, mbs.Length)
        ‘閉じる
        fs.Close()
    End Sub
End Class

5)プロジェクトをビルド
6)生成されたExeと同じフォルダに ダウンロードしたAquesTalk2Da.dllとphontフォルダをコピー
7)テキストボックスに かな表記音声記号列を入力
8)Button2をクリック
 指定したPhontデータを読み込む
9)Button1をクリック
 指定したPhontデータが示す音質で読み上げる。

この方法で予め 複数のPhontデータをメモリに読み込んで おいて AquesTalk2Da_PlaySync の第3引数に読み込んだバイト配列のアドレスを指定すれば 音質を動的に変えることが出来る。

参照URL
http://dobon.net/vb/dotnet/file/filestream.html
http://dobon.net/vb/dotnet/vb6/objptr.html

スポンサーリンク
Rectangle大広告
Rectangle大広告

シェアする

  • このエントリーをはてなブックマークに追加

フォローする