ofxTrueTypeFontUC + oF systemSpeak “Kyoko” test
openFrameworksのサンプルで英語で発音できていたので日本語でも発音できないのかな〜と思ったら普通に出来ました。
testApp.h
#pragma once #include "ofMain.h" #include "ofxTrueTypeFontUC.h" // https://github.com/hironishihara/ofxTrueTypeFontUC // --------------------------------------------- class testApp : public ofBaseApp, public ofThread { public: void setup(); void draw(); void exit(); void threadedFunction(); ofxTrueTypeFontUC font; vector <string> words; int step; string voice; };
testApp.cpp
#include "testApp.h" //-------------------------------------------------------------- void testApp::setup() { font.loadFont("ヒラギノ明朝 ProN W3.otf", 34); //日本語対応フォントを ./bin/data下に voice = "Kyoko"; //http://veadardiary.blog29.fc2.com/blog-entry-3854.html参照 // load the lyrics from a text file and split them // up in to a vector of strings string lyrics = ofBufferFromFile("lyrics.txt").getText(); //適当な文章を。区切りたいところに半角スペースを入れる step = 0; words = ofSplitString(lyrics, " "); // we are running the systems commands // in a sperate thread so that it does // not block the drawing startThread(); } //-------------------------------------------------------------- void testApp::threadedFunction() { while (isThreadRunning()) { // call the system command say #ifdef TARGET_OSX string cmd = "say -v "+voice+" "+words[step]+" "; // create the command system(cmd.c_str()); #endif #ifdef TARGET_WIN32 string cmd = "data\\SayStatic.exe "+words[step]; // create the command cout << cmd << endl; system(cmd.c_str()); #endif // step to the next word step ++; step %= words.size(); // slowdown boy ofSleepMillis(10); } } //-------------------------------------------------------------- void testApp::draw() { // center the word on the screen float x = (ofGetWidth() - font.stringWidth(words[step])) / 2; float y = ofGetHeight() / 2; // draw the word ofSetColor(0); font.drawString(words[step], x, y); } //-------------------------------------------------------------- void testApp::exit() { // stop the thread on exit waitForThread(true); }
元は↓の歌詞でした。
Benny Benassi – Satisfaction
09/03 17:19