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回でもいいかな∼とおもってます。
© Copyright 2024