Wiki

Clone wiki

AquesTalk/Ruby / Home

AquesTalk/Ruby

Copyright (c) 2009 SUGAWARA Genki <sgwr_dts@yahoo.co.jp>

概要

AquesTalk/Rubyはテキスト音声合成ミドルウェア「AquesTalk」のRubyバインディングです。

日本語の文章のサウンドデバイスへの出力や、WAVフォーマットへ変換することができます。

特徴

  • KAKASIを組み込んでいるので漢字を含む文章を読み上げることができる
  • KAKASIの辞書はリソースとしてライブラリに含まれているので環境設定が不要
  • Windows専用

インストール

gem install aqtk

※AquesTalkのDLLもインストールされます

使い方

簡単な使い方

$KCODE= 's'
require 'rubygems'
require 'aqtk'

# 再生(同期)
AquesTalk::Da.play_sync('ゆっくりした結果がこれだよ!!', 100)
# 100は発話速度。省略可能

begin
  aqtkda = AquesTalk::Da.create
  # 再生(非同期)
  aqtkda.play('ゆっくりした結果がこれだよ!!')
  sleep 3
ensure
  aqtkda.release if aqtkda
end

# ファイルに出力
open('yukkuri.wav', 'wb') do |f|
  f << AquesTalk.synthe('ゆっくりした結果がこれだよ!!')
end

 

デフォルトのフィルタを無効にする

デフォルトではKAKASIのフィルターが有効になっています。 無効にする場合は以下のようにしてください。

AquesTalk::Da.play_sync('ゆっくりしたけっかがこれだよ', 100, nil)

aqtkda = AquesTalk::Da.create(nil)
aqtkda.play('ゆっくりしたけっかがこれだよ')

AquesTalk.synthe('ゆっくりしたけっかがこれだよ', 100, nil)

 

フィルタを自作する

フィルタを自作する場合、filterメソッドを持つオブジェクトを定義するだけです。 例えば、ChaSenを使ってフィルタを自作する場合、以下のようになります。

$KCODE = 's'
require 'rubygems'
require 'aqtk'
require 'jcode'

module MyFilter
  def filter(src)
    dest = nil

    IO.popen("C:\\Program Files\\ChaSen\\chasen -F%a", 'r+') do |io|
      io.puts src
      dest = io.gets
    end

    return dest.tr('ァ-ン', 'ぁ-ん');
  end

  module_function :filter
end

src = 'ゆっくりした結果がこれだよ'

AquesTalk::Da.play_sync(src, 100, MyFilter)

begin
  aqtkda = AquesTalk::Da.create(MyFilter)
  aqtkda.play(src)
  sleep 1
  aqtkda.play_sync(src)
ensure
  aqtkda.release if aqtkda
end

 

ライセンス

ライセンスはGPLです。

また、AquesTalk・KAKASIはそれぞれのライセンスに従ってください。

依存ライブラリ

AquesTalk/RubyはAquesTalkをダイナミックリンクします。

また、KAKASIをスタティックリンクしています。

  • KAKASI
    • http://kakasi.namazu.org/
    • KAKASIはHironobu Takahashiさん、およびKAKASI Projectの著作物です。
    • COPYING.KAKASIを参照してください。

注意点

gem uninstall してもAquesTalkのDLLは残ったままです。

ruby.exeのあるディレクトリから以下のファイルを削除してください。

  • AquesTalk.dll
  • AquesTalkDa.dll
  • AqLicense.txt

Updated