Groovyで声に出して読みたい Hello World
#ghello用
Eval.me("http://dl.dropbox.com/u/645223/ghello/DL.groovy".toURL().text);java.awt.Desktop.desktop.open(new File('HelloWorld.wav'))//#ghello
この反則技の応用。
DL.groovyの中身
Simple file download from URLのアドレスを固定にしただけで、音声ファイルをダウンロードしてる。
address = 'http://dl.dropbox.com/u/645223/ghello/HelloWorld.wav' file = new FileOutputStream(address.tokenize("/")[-1]); out = new BufferedOutputStream(file); out << new URL(address).openStream(); out.close();
音を鳴らす方法は何パターンかあると思う。
awtを使用する
awtを使用して、OSに設定されてるプレーヤーで再生する方法だ。
iTunesになってると、ライブラリに登録されてしまう(^_^;)
java.awt.Desktop.desktop.open(new File('HelloWorld.wav'))
#ghelloで実行して登録されてしまった人ごめんなさいm(__)m
javax.sound APIを使用する方法
Java SE 1.5 で追加になった javax.sound のAPIを使用する方法
これなら、プレーヤーを使わないので、iTuensに登録されることはない。
import javax.sound.sampled.* au = AudioSystem.getAudioInputStream(this.class.getResourceAsStream("HelloWorld.wav")) info = new DataLine.Info(Clip.class, au.getFormat()) line = (Clip) AudioSystem.getLine(info) line.open(au) line.start() line.drain() line.close()
GroovyのXXXXBuilderってのがある?あったら教えてください。
あと、音声ファイルは、ToSpeak で作成した。
もっとGroovyたんっぽい「声」が作れるよって人はぜひください!!
方法は、コメント、トラックバック、はてブ、Twitter @orange_clover宛 で、お願いしまます。
冗談で言ったけど、ホントにできるじゃないだろうか。
添削
Appletを使った場合
java.applet.Applet.newAudioClip('http://dl.dropbox.com/u/645223/ghello/HelloWorld.wav'.toURL()).play()java.applet.Applet.newAudioClip('http://dl.dropbox.com/u/645223/ghello/HelloWorld.wav'.toURL()).play() // #ghello
groovyconsoleは正常に音が鳴る。
groovyshはエラーはでるが、音は鳴る。
だけど、上のコードを保存して、実行すると、
エラーもでないし、うんともすんとも言わない。
なんでだ??
--------------------------------------------------------------------------------------------------------------------------------------------------------------- groovy:000> java.applet.Applet.newAudioClip('http://dl.dropbox.com/u/645223/ghello/HelloWorld.wav'.toURL()).play()java.applet.Applet.newAudioClip('http://dl.dropbox.com/u/645223/ghello/HelloWorld.wav'.toURL()).play() ERROR java.lang.NullPointerException: Cannot get property 'java' on null object at groovysh_evaluate.run (groovysh_evaluate:2) ...
んーー、'java' ?? なにが起きてる??