標準で日本語に対応していた。forked from: "Google Text To Speech" speak Japanese.
forked from "Google Text To Speech" speak Japanese. (diff: 484)
標準で日本語に対応していた。forked from: "Google Text To Speech" speak Japanese. Google側が日本語に対応したので使ってみたが、2バイト文字が使えない..。
ActionScript3 source code
/**
* Copyright paq ( http://wonderfl.net/user/paq )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/jfH3
*/
// forked from ikekou's "Google Text To Speech" speak Japanese.
//Google側が日本語に対応したので使ってみたが、2バイト文字が使えない..。
//
package
{
import com.bit101.components.PushButton;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.text.TextField;
import flash.text.TextFieldType;
import flash.ui.Keyboard;
[SWF(backgroundColor=0xeeeeee, width=465, height=465, frameRate=30)]
public class Main extends Sprite
{
private var tf:TextField;
private var isChanged:Boolean;
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
tf = new TextField();
tf.border = true;
tf.borderColor = 0x999999;
tf.background = true;
tf.backgroundColor = 0xffffff;
tf.multiline = false;
tf.width = 300;
tf.height = 19;
tf.type = TextFieldType.INPUT;
tf.x = 33;
tf.y = (stage.stageHeight - tf.height) / 2;
tf.multiline = false;
tf.restrict = "^ア-ン";
tf.text = "なぜか、「う」が短剣符";
addChild(tf);
isChanged = false;
tf.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyDown);
tf.addEventListener(Event.CHANGE, _onChange);
new PushButton(this, 333, tf.y, "speak", _onSpeak);
}
private function _onChange(e:Event):void
{
isChanged = true;
}
private function _onKeyDown(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.ENTER && isChanged)
{
isChanged = false;
_onSpeak(null);
}
}
private function _onSpeak(e:Event):void
{
if (!tf.text) return;
var s:Speaker = new Speaker();
s.speak(tf.text);
tf.text = "";
isChanged = false;
stage.focus = tf;
}
}
}
internal class Config
{
public static const URL_PROXY:String = "http://ikekou.jp/api/proxy.php";
}
import flash.events.Event;
import flash.media.Sound;
import flash.net.URLRequest;
import flash.net.URLVariables;
internal class Speaker
{
public function speak(target:String):void
{
if (!target) return;
var req:URLRequest = new URLRequest(Config.URL_PROXY);
var vars:URLVariables = new URLVariables();
req.data = vars;
vars.url = "http://translate.google.com/translate_tts?tl=ja&q=" + encodeURI(target);
var snd:Sound = new Sound();
snd.addEventListener(Event.COMPLETE, _onComplete);
snd.load(req);
}
private function _onComplete(e:Event):void
{
Sound(e.target).play();
}
}