環境
OpenAL と alut のバージョンは不明。
OpenALインストール
sudo aptitude install libopenal-dev sudo aptitude install libalut-dev
コード
talk.cpp
#include <sstream> #include <cstdlib> #include <boost/format.hpp> #include <AL/alut.h> int main(int argc, char* argv[]) { // 出力 wav ファイル名 const std::string output_wavfile_name = "test.wav"; // wav を生成 std::stringstream ss; ss << boost::format("./talk %1% %2% %3%") % "ハローワールド!" % output_wavfile_name % "mei_normal" ; system(ss.str().c_str()); // alutの初期化 alutInit(&argc, argv); // ソースの用意 ALuint buf, src; ALenum state; buf = alutCreateBufferFromFile(output_wavfile_name.c_str()); alGenSources(1, &src); alSourcei(src, AL_BUFFER, buf); // 再生 alSourcePlay(src); alGetSourcei(src, AL_SOURCE_STATE, &state); while (state == AL_PLAYING) { alGetSourcei(src, AL_SOURCE_STATE, &state); } // 後片付け alDeleteSources(1, &src); alDeleteBuffers(1, &buf); alutExit(); return EXIT_SUCCESS; }
talk
#!/bin/sh VOICE=$3 echo $1 | open_jtalk \ -td $VOICE/tree-dur.inf \ -tf $VOICE/tree-lf0.inf \ -tm $VOICE/tree-mgc.inf \ -md $VOICE/dur.pdf \ -mf $VOICE/lf0.pdf \ -mm $VOICE/mgc.pdf \ -df $VOICE/lf0.win1 \ -df $VOICE/lf0.win2 \ -df $VOICE/lf0.win3 \ -dm $VOICE/mgc.win1 \ -dm $VOICE/mgc.win2 \ -dm $VOICE/mgc.win3 \ -ef $VOICE/tree-gv-lf0.inf \ -em $VOICE/tree-gv-mgc.inf \ -cf $VOICE/gv-lf0.pdf \ -cm $VOICE/gv-mgc.pdf \ -k $VOICE/gv-switch.inf \ -x /usr/lib/open_jtalk/dic/utf-8 \ -s 48000 \ -p 220 \ -a 0.46 \ -u 0.0 \ -jm 0.8 \ -jf 2.0 \ -jl 2.0 \ -z 48000 \ -b 0.5 \ -ow $2 \ -ot out.log
コンパイル
g++ talk.cpp -lalut
結果
無事再生されました。