AquesTalk コンポーネント

AquesTalkコンポーネントを使えば,かなり簡単に音声合成が楽しめます.

AquesTalkについて

フリーの音声合成エンジンです.非常にシンプルに動作します.

概要

入力ポート: 「StringIn」 -文字列を受け取って,AquesTalkの表音文字仕様にしたがって発話する

コンフィグ変数: 「Speed」 -発話スピードを調節する(デフォルトで100)

AquesTalkコンポーネントプログラム

かなり簡単に作ってます.onActivatedで音声合成エンジンを開き,onDeactivatedで閉じます.

onActivated

RTC::ReturnCode_t AquesTalkComponent::onActivated(RTC::UniqueId ec_id)
{
  m_AquesTalkDa = AquesTalkDa_Create();
  return RTC::RTC_OK;
}

onDeactivated

RTC::ReturnCode_t AquesTalkComponent::onDeactivated(RTC::UniqueId ec_id)
{
  AquesTalkDa_Release(m_AquesTalkDa);
  return RTC::RTC_OK;
}

onExecutedでは,StringInポートを検査して,表音文字列データが来ている場合は発話エンジンに文字列を渡します.

onExecuted

RTC::ReturnCode_t AquesTalkComponent::onExecute(RTC::UniqueId ec_id)
{
  if(this->m_StringInIn.isNew()) {
    m_StringInIn.read();
    int strlen = m_StringIn.data.length();
    char* stringBuffer = new char[strlen];
    memcpy(stringBuffer, &(m_StringIn.data[0]), strlen);

    int ret = AquesTalkDa_Play(m_AquesTalkDa, stringBuffer, m_speed);
    if(ret != 0) return RTC::RTC_ERROR;
  }
  return RTC::RTC_OK;
}

rtc.confの設定

これまでと同様でかまいません.周期をゆっくりめに設定してもいいかな.

corba.nameservers:localhost:2809
naming.formats: %n.rtc
logger.log_level: TRACE

まとめ

とにかく使ってほしいRTCの第2弾.こいつはかなり使えると思います.非常にシンプルに動作します.不具合を見つけてくれた方は連絡をください.

ダウンロードはこちら→
AquesTalk.zip (ver. 0.4.1)
AquesTalk042.zip (ver. 0.4.2)
インストーラ (ver. 0.4.2)


RTミドルウェア入門