AquesTalkコンポーネントを使えば,かなり簡単に音声合成が楽しめます.
フリーの音声合成エンジンです.非常にシンプルに動作します.
入力ポート: 「StringIn」 -文字列を受け取って,AquesTalkの表音文字仕様にしたがって発話する
コンフィグ変数: 「Speed」 -発話スピードを調節する(デフォルトで100)
かなり簡単に作ってます.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;
}
これまでと同様でかまいません.周期をゆっくりめに設定してもいいかな.
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)