VoiceText4JについてJJUGナイトセミナーでLTしてきました #jjug

VoiceText4JについてJJUGナイトセミナーで
LTしてきました #jjug
Title
VoiceText4JについてJJUGナイトセミナーでLTしてきました #jjug
Category
Programming::Java::am::ik::voicetext4j
Created at
2014-08-23T04:08:48.000+09:00
Created by
making
Updated at
2014-08-23T04:08:48.000+09:00
Updated by
making
Orininal URL
http://blog.ik.am/#/entries/278
8/22のJJUGナイトセミナーでVoiceText4JについてLTしてきました。
VoiceText4Jとは?
HOYAサービス株式会社の音声合成ソフトウェア「VoiceText」のWeb API版をJavaから使えるようにしたライブラリです。モヤモヤさま∼ずのナ
レーションで使われていることで有名です。
APIキーはこちらのフォームを埋めれば簡単に発行できます。
通常の使い方は
$ curl "https://api.voicetext.jp/v1/tts" \
-o "test.wav" \
-u "YOUR_API_KEY:" \
-d "text=" \
-d "speaker=hikari"
でwavファイルをダウンロードし、プレイヤーで再生する(またはplayコマンドにパイプする)形なのですが、VoiceText4Jを使うと、
System.setProperty("voicetext.apikey", "API_KEY");
EmotionalSpeaker.HARUKA.ready()
.speak("");
で音声再生までできます!
使い方
Mavenセントラルレポジトリにデプロイしてあります。
<dependency>
<groupId>am.ik.voicetext</groupId>
<artifactId>voicetext4j</artifactId>
<version>0.10.0</version>
</dependency>
とか
compile 'am.ik.voicetext:voicetext4j:0.10.0'
とか。
依存ライブラリはなく、標準APIのみで実装しています。(古き良き?Java Sound APIとか使っています)
オススメはGroovy + Grapeでスクリプト的に書く使い方。デモに最適。
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", "API_KEY");
Speaker.SHOW.ready().speak("");
と書いて、groovy hello.groovyで再生されます。
話者はシングルトンで
• am.ik.voicetext4j.Speaker.SHOW
• am.ik.voicetext4j.EmotionalSpeaker.HARUKA
• am.ik.voicetext4j.EmotionalSpeaker.HIKARI
• am.ik.voicetext4j.EmotionalSpeaker.TAKERU
の4名を利用できます。 SHOWがモヤさまの声で、残り3人は感情をコントロールできます。
EmotionalSpeaker.HARUKA.ready().speak("");
EmotionalSpeaker.HARUKA.ready().angry().speak("");
EmotionalSpeaker.HARUKA.ready().very().angry().speak("");
EmotionalSpeaker.HARUKA.ready().happy().speak("");
EmotionalSpeaker.HARUKA.ready().very().happy().speak("");
EmotionalSpeaker.HARUKA.ready().sad().speak("");
EmotionalSpeaker.HARUKA.ready().very().sad().speak("");
あとはAPIマニュアルとメソッド名を照らし合わせれば大体使われると思います。
使い道
Twitter連携とかCI連携とか監視ログとか夢ひろがりんぐですね。
Mashup Awards 10の対象にもなっているのでアイデアがある人は是非使ってみてほしいです。
発表スライド
スライドは↓です。といっても内容ないですがw(なぜかLikeついてる・・)
喋るJava! from makingx
本当は全編音声合成で発表したかったけど、想像だけで満足したので、やめましたw
発表で使用したスクリプトのを貼っておきます(最後のは実行できなかった)。
export VOICE_TEXTAPIKEY=
を事前に実行しています。
00-hoge.groovy
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", System.getenv("VOICETEXT_APIKEY"));
Speaker.SHOW.ready().speak("hoge");
01-demo.groovy
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", System.getenv("VOICETEXT_APIKEY"));
Speaker.SHOW.ready().speak("");
02-konnichiha.groovy
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", System.getenv("VOICETEXT_APIKEY"));
Speaker.SHOW.ready().speak("");
EmotionalSpeaker.HARUKA.ready().speak("");
EmotionalSpeaker.HIKARI.ready().speak("");
EmotionalSpeaker.TAKERU.ready().speak("");
03-emotional.groovy
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", System.getenv("VOICETEXT_APIKEY"));
EmotionalSpeaker.HARUKA.ready().speak("");
EmotionalSpeaker.HARUKA.ready().sad().speak("");
EmotionalSpeaker.HARUKA.ready().very().sad().speak("");
EmotionalSpeaker.HARUKA.ready().happy().speak("");
EmotionalSpeaker.HARUKA.ready().very().happy().speak("");
EmotionalSpeaker.HARUKA.ready().angry().speak("");
EmotionalSpeaker.HARUKA.ready().very().angry().speak("");
04-java-sound-api.groovy
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", System.getenv("VOICETEXT_APIKEY"));
Speaker.SHOW.ready().speak("""
VoiceText4J
Java Sound API
WAV
""");
05-end.groovy
@Grab("am.ik.voicetext:voicetext4j:0.10.0")
import am.ik.voicetext4j.*;
System.setProperty("voicetext.apikey", System.getenv("VOICETEXT_APIKEY"));
Speaker.SHOW.ready().speak("");
バグなどあったらプルリクお願いします!
LT大会は毎年8月に開催しているんですが、半年に1回でもいいかな∼とおもってます。