###ボックスの中身をいじってみる
初心者向け。というか自分向け備忘録。
Pythonってプログラムの中ではかなり敷居が低いかも。
書いてあること
・ボックスの簡単な改造の仕方。
・オリジナルのボックスライブラリーの作り方。
###まずは中を見てみよう
choregrapheのボックスの中身はpythonで書いてある。
簡単な言語だとは言われるけどプログラムに慣れてないと、目がくらくらしてくる。
とはいえ、なにも触れないのはしゃくなので、まずは簡単な改造から手を付けてみる。
まずは、キャラクターにありがちな特徴的な語尾をつけてみよう。
ダブルクリックするとこんな感じ。
import time
class MyClass(GeneratedClass):
def __init__(self):
GeneratedClass.__init__(self, False)
self.tts = ALProxy('ALTextToSpeech')
self.ttsStop = ALProxy('ALTextToSpeech', True) #Create another proxy as wait is blocking if audioout is remote
def onLoad(self):
self.bIsRunning = False
self.ids = []
def onUnload(self):
for id in self.ids:
try:
self.ttsStop.stop(id)
except:
pass
while( self.bIsRunning ):
time.sleep( 0.2 )
def onInput_onStart(self, p):
self.bIsRunning = True
try:
sentence = "\RSPD="+ str( self.getParameter("Speed (%)") ) + "\ "
sentence += "\VCT="+ str( self.getParameter("Voice shaping (%)") ) + "\ "
sentence += str(p)
sentence += "\RST\ "
id = self.tts.post.say(str(sentence))
self.ids.append(id)
self.tts.wait(id, 0)
finally:
try:
self.ids.remove(id)
except:
pass
if( self.ids == [] ):
self.onStopped() # activate output of the box
self.bIsRunning = False
def onInput_onStop(self):
self.onUnload()
「うっ」と思うけど、思ったより短い。
とりあえず、onStart端子に文字列を入力してしゃべらせているので、onInput_onStartに目をつけると、
def onInput_onStart(self, p):
self.bIsRunning = True
try:
sentence = "\RSPD="+ str( self.getParameter("Speed (%)") ) + "\ "
sentence += "\VCT="+ str( self.getParameter("Voice shaping (%)") ) + "\ "
sentence += str(p) #なんか、キミ、怪しくないか?
sentence += "\RST\ "
id = self.tts.post.say(str(sentence))
self.ids.append(id)
self.tts.wait(id, 0)
finally:
try:
self.ids.remove(id)
except:
pass
if( self.ids == [] ):
self.onStopped() # activate output of the box
self.bIsRunning = False
なんか sentence +=str(p)という核心っぽい一行がある。
まわりに口調や声の高さとかをコントロールするような修飾子っぽいのがガンガンついているから、
この部分が本文だと予想。
周りを見てみるとなんとなく、文字列の演算は+とかでよいようにみられるので
sentence += str(p)
コレを
sentence += str(p)+"なり。"
に変える。
改造したボックスは右クリックで「ボックスを編集」しておこう。
名前は半角英数の方が安心そうなので"Say Nari Text"とかで。
###新しいボックスライブラリの作成
せっかく作ったんだし、いろんなシーンで活用したい!という欲求が出てくると、オリジナルのボックスライブラリがほしくなってくる。
右下のボックスライブラリパネルをさわってみるとこんなボタンが。
押してみると「無題」という取りつく島もないボックスライブラリができる。
右クリックしたり、F2ボタンを押しても何も起こらないが、
パネルの上の方を触っていくと"ボックスライブラリに名前を付けて保存"ボタンがあるので押してみると名前を付けられる。たとえば"funBoxes"とかだろうか。
さらに空白部分を右クリックすればフォルダを作れるので"gobi"とかのフォルダをつけ、語尾に「なっしー」とか「アルヨ」とかを付けたオリジナルボックスをドラッグ&ドロップでどんどん追加することができる。
もちろん追加した後はボックスライブラリ自体を保存しておくこと!
こんな感じで自分オリジナルのモーションや処理をボックス化していくと、開発が効率化できるし、*.cblという拡張子でファイルになっているので仲間内で交換してみるのもいいかもしれない。
###感想
このぐらいのちょっとした記事だったらわりとラクに書けるかも。